Skip to content

Instantly share code, notes, and snippets.

@jcdickinson
Last active November 4, 2017 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcdickinson/b547b990f0247e143687bf6af9f0868d to your computer and use it in GitHub Desktop.
Save jcdickinson/b547b990f0247e143687bf6af9f0868d to your computer and use it in GitHub Desktop.
The Curious Case of the 1814 Byte Method

The Curious Case of the 1814 Byte Method

Background: dotnet/coreclr#14863

Lesson learned: always check the disassembly for methods that you mark with AggressiveInlining. You might end up with multi-kilobyte machine code for innocent looking methods.

What happens when you JIT an innocent looking method such as:

        [MethodImpl(MethodImplOptions.NoInlining)]
        public static int Test_8()
        {
            var hc = new HashCode();
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            return hc.ToHashCode();
        }

This:

Calls to Add Size Difference
1 310b
2 500b 190b
3 719b 219b
4 938b 219b
5 1157b 219b
6 1376b 219b
7 1595b 219b
8 1814b !! 219b

1.7Kb worth of machine code for GetHashCode() on a type with only 8 fields. Why did this happen? I was an idiot and assumed that value range optimization would have eliminated a whole bunch of jumps/branches. It didn't; which wouldn't have been a problem if I wasn't trying to optimize to my own demise. Some very large methods (themselves having inlinees) wound up getting inlined.

The evils of premature optimization. I gleefully applied an attribute that MAKE FAST ⚡ without thoroughly testing the implications of that change. Not did the code bloat to absurd proportions but it made no discernible difference in micro-benchmarks (done post-facto, of course). To make matters worse, methods this big will likely experience severe performance degredation in real-world scenarios.

Presenting the benefits of 219b of machine code for each invocation:

Method Mean Error StdDev
'Add+ToHashCode: Inlined' 3.836 ns 0.0346 ns 0.0324 ns
'Add+ToHashCode: Non-Inlined' 4.820 ns 0.0286 ns 0.0223 ns

1 nanosecond.

Before you use AggressiveInlining, learn how to do Jit Dumps. This batch file might help you:

@echo off
SET AppDir=%CD%\bin\Release\netcoreapp2.0\win10-x64\
SET CoreClrDir=C:\dev\coreclr\bin\Product\Windows_NT.x64.Debug
SET OCD=%CD%

dotnet publish -c Release > NUL
robocopy /e %CoreClrDir% %AppDir%\publish > NUL

SET CORE_ROOT=%CoreClrDir%
SET CORE_LIBRARIES=%AppDir%publish\
SET SAVESTAMP=%DATE:/=-%@%TIME::=-%
SET SAVESTAMP=%SAVESTAMP: =%
SET SAVESTAMP=%OCD%\%SAVESTAMP:,=.%.il

cd %AppDir%
rem set COMPLUS_JitDump=System.HashCode:Test
set COMPlus_JitDisasm=System.HashCode:*
%CoreClrDir%\corerun TestJit.dll > %SAVESTAMP%
code %SAVESTAMP%
; Assembly listing for method System.HashCode:Test_1():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 29, 11 ) struct (32) [rsp+0x30] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T00] ( 3, 6 ) int -> rcx
; V02 tmp1 [V02,T08] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T07] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T01] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T09] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T02] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T10] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T03] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T11] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T04] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 OutArgs [V15 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
; V16 cse0 [V16,T06] ( 12, 3 ) int -> rax
; V17 cse1 [V17,T05] ( 3, 2.25) long -> [rsp+0x28]
;
; Lcl frame size = 80
G_M18625_IG01:
57 push rdi
4883EC50 sub rsp, 80
C5F877 vzeroupper
488D7C2430 lea rdi, [rsp+30H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18625_IG02:
488D4C2430 lea rcx, bword ptr [rsp+30H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
48B958560C9FFB7F0000 mov rcx, 0x7FFB9F0C5658
BA02000000 mov edx, 2
E8A11A165F call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
8B0D6B49EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44244C mov eax, dword ptr [rsp+4CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18625_IG03
894C2440 mov dword ptr [rsp+40H], ecx
E9B9000000 jmp G_M18625_IG07
G_M18625_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18625_IG04
894C2444 mov dword ptr [rsp+44H], ecx
E9AB000000 jmp G_M18625_IG07
G_M18625_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18625_IG05
894C2448 mov dword ptr [rsp+48H], ecx
E99D000000 jmp G_M18625_IG07
G_M18625_IG05:
3344244C xor eax, dword ptr [rsp+4CH]
7527 jne SHORT G_M18625_IG06
8B052B49EEFF mov eax, dword ptr [reloc classVar[0x9f0c65b0]]
8D9028442324 lea edx, [rax+24234428H]
89542430 mov dword ptr [rsp+30H], edx
8D9077CAEB85 lea edx, [rax85EBCA77H]
89542434 mov dword ptr [rsp+34H], edx
89442438 mov dword ptr [rsp+38H], eax
054F86C861 add eax, 0x61C8864F
8944243C mov dword ptr [rsp+3CH], eax
G_M18625_IG06:
8B442430 mov eax, dword ptr [rsp+30H]
8B542440 mov edx, dword ptr [rsp+40H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442430 mov dword ptr [rsp+30H], eax
8B442434 mov eax, dword ptr [rsp+34H]
8B542444 mov edx, dword ptr [rsp+44H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442434 mov dword ptr [rsp+34H], eax
8B442438 mov eax, dword ptr [rsp+38H]
8B542448 mov edx, dword ptr [rsp+48H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442438 mov dword ptr [rsp+38H], eax
8B44243C mov eax, dword ptr [rsp+3CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944243C mov dword ptr [rsp+3CH], eax
G_M18625_IG07:
8B4C244C mov ecx, dword ptr [rsp+4CH]
83C101 add ecx, 1
7215 jb SHORT G_M18625_IG09
894C244C mov dword ptr [rsp+4CH], ecx
488D4C2430 lea rcx, bword ptr [rsp+30H]
E867FBFFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18625_IG08:
4883C450 add rsp, 80
5F pop rdi
C3 ret
G_M18625_IG09:
E8BB80C05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 310, prolog size 22 for method System.HashCode:Test_1():int
; ============================================================
; Assembly listing for method System.HashCode:Test_2():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 46, 17.50) struct (32) [rsp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T08] ( 2, 4 ) int -> rcx
; V02 tmp1 [V02,T12] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T10] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T00] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T14] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T01] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T15] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T02] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T16] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T03] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 tmp14 [V15,T09] ( 2, 4 ) int -> rcx
; V16 tmp15 [V16,T13] ( 5, 2 ) int -> rcx
; V17 tmp16 [V17,T11] ( 5, 2.75) int -> rax
; V18 tmp17 [V18,T04] ( 8, 4 ) int -> rax ld-addr-op
; V19 tmp18 [V19,T17] ( 2, 1 ) int -> rdx ld-addr-op
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V21 tmp20 [V21,T05] ( 8, 4 ) int -> rax ld-addr-op
; V22 tmp21 [V22,T18] ( 2, 1 ) int -> rdx ld-addr-op
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp23 [V24,T06] ( 8, 4 ) int -> rax ld-addr-op
; V25 tmp24 [V25,T19] ( 2, 1 ) int -> rdx ld-addr-op
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V27 tmp26 [V27,T07] ( 8, 4 ) int -> rax ld-addr-op
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V29 OutArgs [V29 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 64
G_M18632_IG01:
57 push rdi
4883EC40 sub rsp, 64
C5F877 vzeroupper
488D7C2420 lea rdi, [rsp+20H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18632_IG02:
488D4C2420 lea rcx, bword ptr [rsp+20H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
8B0D3F47EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18632_IG03
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18632_IG07
G_M18632_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18632_IG04
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18632_IG07
G_M18632_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18632_IG05
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18632_IG07
G_M18632_IG05:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18632_IG06
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18632_IG06:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18632_IG07:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82EC000000 jb G_M18632_IG14
894C243C mov dword ptr [rsp+3CH], ecx
8B0D6446EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18632_IG08
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18632_IG12
G_M18632_IG08:
83F801 cmp eax, 1
7509 jne SHORT G_M18632_IG09
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18632_IG12
G_M18632_IG09:
83F802 cmp eax, 2
7509 jne SHORT G_M18632_IG10
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18632_IG12
G_M18632_IG10:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18632_IG11
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18632_IG11:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18632_IG12:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
7215 jb SHORT G_M18632_IG14
894C243C mov dword ptr [rsp+3CH], ecx
488D4C2420 lea rcx, bword ptr [rsp+20H]
E849FDFFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18632_IG13:
4883C440 add rsp, 64
5F pop rdi
C3 ret
G_M18632_IG14:
E8BD7DC05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 500, prolog size 22 for method System.HashCode:Test_2():int
; ============================================================
; Assembly listing for method System.HashCode:Test_3():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 68, 25.25) struct (32) [rsp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T12] ( 2, 4 ) int -> rcx
; V02 tmp1 [V02,T18] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T15] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T00] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T21] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T01] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T22] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T02] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T23] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T03] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 tmp14 [V15,T13] ( 2, 4 ) int -> rcx
; V16 tmp15 [V16,T19] ( 5, 2 ) int -> rcx
; V17 tmp16 [V17,T16] ( 5, 2.75) int -> rax
; V18 tmp17 [V18,T04] ( 8, 4 ) int -> rax ld-addr-op
; V19 tmp18 [V19,T24] ( 2, 1 ) int -> rdx ld-addr-op
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V21 tmp20 [V21,T05] ( 8, 4 ) int -> rax ld-addr-op
; V22 tmp21 [V22,T25] ( 2, 1 ) int -> rdx ld-addr-op
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp23 [V24,T06] ( 8, 4 ) int -> rax ld-addr-op
; V25 tmp24 [V25,T26] ( 2, 1 ) int -> rdx ld-addr-op
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V27 tmp26 [V27,T07] ( 8, 4 ) int -> rax ld-addr-op
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V29 tmp28 [V29,T14] ( 2, 4 ) int -> rcx
; V30 tmp29 [V30,T20] ( 5, 2 ) int -> rcx
; V31 tmp30 [V31,T17] ( 5, 2.75) int -> rax
; V32 tmp31 [V32,T08] ( 8, 4 ) int -> rax ld-addr-op
; V33 tmp32 [V33,T27] ( 2, 1 ) int -> rdx ld-addr-op
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V35 tmp34 [V35,T09] ( 8, 4 ) int -> rax ld-addr-op
; V36 tmp35 [V36,T28] ( 2, 1 ) int -> rdx ld-addr-op
;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp37 [V38,T10] ( 8, 4 ) int -> rax ld-addr-op
; V39 tmp38 [V39,T29] ( 2, 1 ) int -> rdx ld-addr-op
;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V41 tmp40 [V41,T11] ( 8, 4 ) int -> rax ld-addr-op
;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V43 OutArgs [V43 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 64
G_M18643_IG01:
57 push rdi
4883EC40 sub rsp, 64
C5F877 vzeroupper
488D7C2420 lea rdi, [rsp+20H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18643_IG02:
488D4C2420 lea rcx, bword ptr [rsp+20H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
8B0D2F45EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18643_IG03
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18643_IG07
G_M18643_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18643_IG04
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18643_IG07
G_M18643_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18643_IG05
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18643_IG07
G_M18643_IG05:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18643_IG06
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18643_IG06:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18643_IG07:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82C7010000 jb G_M18643_IG19
894C243C mov dword ptr [rsp+3CH], ecx
8B0D5444EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18643_IG08
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18643_IG12
G_M18643_IG08:
83F801 cmp eax, 1
7509 jne SHORT G_M18643_IG09
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18643_IG12
G_M18643_IG09:
83F802 cmp eax, 2
7509 jne SHORT G_M18643_IG10
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18643_IG12
G_M18643_IG10:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18643_IG11
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18643_IG11:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18643_IG12:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82EC000000 jb G_M18643_IG19
894C243C mov dword ptr [rsp+3CH], ecx
8B0D7943EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18643_IG13
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18643_IG17
G_M18643_IG13:
83F801 cmp eax, 1
7509 jne SHORT G_M18643_IG14
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18643_IG17
G_M18643_IG14:
83F802 cmp eax, 2
7509 jne SHORT G_M18643_IG15
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18643_IG17
G_M18643_IG15:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18643_IG16
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18643_IG16:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18643_IG17:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
7215 jb SHORT G_M18643_IG19
894C243C mov dword ptr [rsp+3CH], ecx
488D4C2420 lea rcx, bword ptr [rsp+20H]
E85EFAFFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18643_IG18:
4883C440 add rsp, 64
5F pop rdi
C3 ret
G_M18643_IG19:
E8D27AC05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 719, prolog size 22 for method System.HashCode:Test_3():int
; ============================================================
; Assembly listing for method System.HashCode:Test_4():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 90, 33 ) struct (32) [rsp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T16] ( 2, 4 ) int -> rcx
; V02 tmp1 [V02,T24] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T20] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T00] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T28] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T01] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T29] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T02] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T30] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T03] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 tmp14 [V15,T17] ( 2, 4 ) int -> rcx
; V16 tmp15 [V16,T25] ( 5, 2 ) int -> rcx
; V17 tmp16 [V17,T21] ( 5, 2.75) int -> rax
; V18 tmp17 [V18,T04] ( 8, 4 ) int -> rax ld-addr-op
; V19 tmp18 [V19,T31] ( 2, 1 ) int -> rdx ld-addr-op
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V21 tmp20 [V21,T05] ( 8, 4 ) int -> rax ld-addr-op
; V22 tmp21 [V22,T32] ( 2, 1 ) int -> rdx ld-addr-op
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp23 [V24,T06] ( 8, 4 ) int -> rax ld-addr-op
; V25 tmp24 [V25,T33] ( 2, 1 ) int -> rdx ld-addr-op
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V27 tmp26 [V27,T07] ( 8, 4 ) int -> rax ld-addr-op
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V29 tmp28 [V29,T18] ( 2, 4 ) int -> rcx
; V30 tmp29 [V30,T26] ( 5, 2 ) int -> rcx
; V31 tmp30 [V31,T22] ( 5, 2.75) int -> rax
; V32 tmp31 [V32,T08] ( 8, 4 ) int -> rax ld-addr-op
; V33 tmp32 [V33,T34] ( 2, 1 ) int -> rdx ld-addr-op
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V35 tmp34 [V35,T09] ( 8, 4 ) int -> rax ld-addr-op
; V36 tmp35 [V36,T35] ( 2, 1 ) int -> rdx ld-addr-op
;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp37 [V38,T10] ( 8, 4 ) int -> rax ld-addr-op
; V39 tmp38 [V39,T36] ( 2, 1 ) int -> rdx ld-addr-op
;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V41 tmp40 [V41,T11] ( 8, 4 ) int -> rax ld-addr-op
;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V43 tmp42 [V43,T19] ( 2, 4 ) int -> rcx
; V44 tmp43 [V44,T27] ( 5, 2 ) int -> rcx
; V45 tmp44 [V45,T23] ( 5, 2.75) int -> rax
; V46 tmp45 [V46,T12] ( 8, 4 ) int -> rax ld-addr-op
; V47 tmp46 [V47,T37] ( 2, 1 ) int -> rdx ld-addr-op
;* V48 tmp47 [V48 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V49 tmp48 [V49,T13] ( 8, 4 ) int -> rax ld-addr-op
; V50 tmp49 [V50,T38] ( 2, 1 ) int -> rdx ld-addr-op
;* V51 tmp50 [V51 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V52 tmp51 [V52,T14] ( 8, 4 ) int -> rax ld-addr-op
; V53 tmp52 [V53,T39] ( 2, 1 ) int -> rdx ld-addr-op
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V55 tmp54 [V55,T15] ( 8, 4 ) int -> rax ld-addr-op
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V57 OutArgs [V57 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 64
G_M18650_IG01:
57 push rdi
4883EC40 sub rsp, 64
C5F877 vzeroupper
488D7C2420 lea rdi, [rsp+20H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18650_IG02:
488D4C2420 lea rcx, bword ptr [rsp+20H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
8B0D3F42EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18650_IG03
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18650_IG07
G_M18650_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18650_IG04
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18650_IG07
G_M18650_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18650_IG05
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18650_IG07
G_M18650_IG05:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18650_IG06
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18650_IG06:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18650_IG07:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82A2020000 jb G_M18650_IG24
894C243C mov dword ptr [rsp+3CH], ecx
8B0D6441EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18650_IG08
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18650_IG12
G_M18650_IG08:
83F801 cmp eax, 1
7509 jne SHORT G_M18650_IG09
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18650_IG12
G_M18650_IG09:
83F802 cmp eax, 2
7509 jne SHORT G_M18650_IG10
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18650_IG12
G_M18650_IG10:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18650_IG11
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18650_IG11:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18650_IG12:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82C7010000 jb G_M18650_IG24
894C243C mov dword ptr [rsp+3CH], ecx
8B0D8940EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18650_IG13
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18650_IG17
G_M18650_IG13:
83F801 cmp eax, 1
7509 jne SHORT G_M18650_IG14
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18650_IG17
G_M18650_IG14:
83F802 cmp eax, 2
7509 jne SHORT G_M18650_IG15
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18650_IG17
G_M18650_IG15:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18650_IG16
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18650_IG16:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18650_IG17:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82EC000000 jb G_M18650_IG24
894C243C mov dword ptr [rsp+3CH], ecx
8B0DAE3FEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18650_IG18
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18650_IG22
G_M18650_IG18:
83F801 cmp eax, 1
7509 jne SHORT G_M18650_IG19
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18650_IG22
G_M18650_IG19:
83F802 cmp eax, 2
7509 jne SHORT G_M18650_IG20
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18650_IG22
G_M18650_IG20:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18650_IG21
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18650_IG21:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18650_IG22:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
7215 jb SHORT G_M18650_IG24
894C243C mov dword ptr [rsp+3CH], ecx
488D4C2420 lea rcx, bword ptr [rsp+20H]
E893F6FFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18650_IG23:
4883C440 add rsp, 64
5F pop rdi
C3 ret
G_M18650_IG24:
E80777C05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 938, prolog size 22 for method System.HashCode:Test_4():int
; ============================================================
; Assembly listing for method System.HashCode:Test_5():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] (112, 40.75) struct (32) [rsp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T20] ( 2, 4 ) int -> rcx
; V02 tmp1 [V02,T30] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T25] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T00] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T35] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T01] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T36] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T02] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T37] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T03] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 tmp14 [V15,T21] ( 2, 4 ) int -> rcx
; V16 tmp15 [V16,T31] ( 5, 2 ) int -> rcx
; V17 tmp16 [V17,T26] ( 5, 2.75) int -> rax
; V18 tmp17 [V18,T04] ( 8, 4 ) int -> rax ld-addr-op
; V19 tmp18 [V19,T38] ( 2, 1 ) int -> rdx ld-addr-op
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V21 tmp20 [V21,T05] ( 8, 4 ) int -> rax ld-addr-op
; V22 tmp21 [V22,T39] ( 2, 1 ) int -> rdx ld-addr-op
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp23 [V24,T06] ( 8, 4 ) int -> rax ld-addr-op
; V25 tmp24 [V25,T40] ( 2, 1 ) int -> rdx ld-addr-op
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V27 tmp26 [V27,T07] ( 8, 4 ) int -> rax ld-addr-op
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V29 tmp28 [V29,T22] ( 2, 4 ) int -> rcx
; V30 tmp29 [V30,T32] ( 5, 2 ) int -> rcx
; V31 tmp30 [V31,T27] ( 5, 2.75) int -> rax
; V32 tmp31 [V32,T08] ( 8, 4 ) int -> rax ld-addr-op
; V33 tmp32 [V33,T41] ( 2, 1 ) int -> rdx ld-addr-op
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V35 tmp34 [V35,T09] ( 8, 4 ) int -> rax ld-addr-op
; V36 tmp35 [V36,T42] ( 2, 1 ) int -> rdx ld-addr-op
;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp37 [V38,T10] ( 8, 4 ) int -> rax ld-addr-op
; V39 tmp38 [V39,T43] ( 2, 1 ) int -> rdx ld-addr-op
;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V41 tmp40 [V41,T11] ( 8, 4 ) int -> rax ld-addr-op
;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V43 tmp42 [V43,T23] ( 2, 4 ) int -> rcx
; V44 tmp43 [V44,T33] ( 5, 2 ) int -> rcx
; V45 tmp44 [V45,T28] ( 5, 2.75) int -> rax
; V46 tmp45 [V46,T12] ( 8, 4 ) int -> rax ld-addr-op
; V47 tmp46 [V47,T44] ( 2, 1 ) int -> rdx ld-addr-op
;* V48 tmp47 [V48 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V49 tmp48 [V49,T13] ( 8, 4 ) int -> rax ld-addr-op
; V50 tmp49 [V50,T45] ( 2, 1 ) int -> rdx ld-addr-op
;* V51 tmp50 [V51 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V52 tmp51 [V52,T14] ( 8, 4 ) int -> rax ld-addr-op
; V53 tmp52 [V53,T46] ( 2, 1 ) int -> rdx ld-addr-op
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V55 tmp54 [V55,T15] ( 8, 4 ) int -> rax ld-addr-op
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V57 tmp56 [V57,T24] ( 2, 4 ) int -> rcx
; V58 tmp57 [V58,T34] ( 5, 2 ) int -> rcx
; V59 tmp58 [V59,T29] ( 5, 2.75) int -> rax
; V60 tmp59 [V60,T16] ( 8, 4 ) int -> rax ld-addr-op
; V61 tmp60 [V61,T47] ( 2, 1 ) int -> rdx ld-addr-op
;* V62 tmp61 [V62 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V63 tmp62 [V63,T17] ( 8, 4 ) int -> rax ld-addr-op
; V64 tmp63 [V64,T48] ( 2, 1 ) int -> rdx ld-addr-op
;* V65 tmp64 [V65 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V66 tmp65 [V66,T18] ( 8, 4 ) int -> rax ld-addr-op
; V67 tmp66 [V67,T49] ( 2, 1 ) int -> rdx ld-addr-op
;* V68 tmp67 [V68 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V69 tmp68 [V69,T19] ( 8, 4 ) int -> rax ld-addr-op
;* V70 tmp69 [V70 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V71 OutArgs [V71 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 64
G_M18661_IG01:
57 push rdi
4883EC40 sub rsp, 64
C5F877 vzeroupper
488D7C2420 lea rdi, [rsp+20H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18661_IG02:
488D4C2420 lea rcx, bword ptr [rsp+20H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
8B0D7F3EEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18661_IG03
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18661_IG07
G_M18661_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18661_IG04
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18661_IG07
G_M18661_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18661_IG05
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18661_IG07
G_M18661_IG05:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18661_IG06
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18661_IG06:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18661_IG07:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F827D030000 jb G_M18661_IG29
894C243C mov dword ptr [rsp+3CH], ecx
8B0DA43DEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18661_IG08
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18661_IG12
G_M18661_IG08:
83F801 cmp eax, 1
7509 jne SHORT G_M18661_IG09
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18661_IG12
G_M18661_IG09:
83F802 cmp eax, 2
7509 jne SHORT G_M18661_IG10
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18661_IG12
G_M18661_IG10:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18661_IG11
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18661_IG11:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18661_IG12:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82A2020000 jb G_M18661_IG29
894C243C mov dword ptr [rsp+3CH], ecx
8B0DC93CEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18661_IG13
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18661_IG17
G_M18661_IG13:
83F801 cmp eax, 1
7509 jne SHORT G_M18661_IG14
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18661_IG17
G_M18661_IG14:
83F802 cmp eax, 2
7509 jne SHORT G_M18661_IG15
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18661_IG17
G_M18661_IG15:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18661_IG16
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18661_IG16:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18661_IG17:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82C7010000 jb G_M18661_IG29
894C243C mov dword ptr [rsp+3CH], ecx
8B0DEE3BEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18661_IG18
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18661_IG22
G_M18661_IG18:
83F801 cmp eax, 1
7509 jne SHORT G_M18661_IG19
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18661_IG22
G_M18661_IG19:
83F802 cmp eax, 2
7509 jne SHORT G_M18661_IG20
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18661_IG22
G_M18661_IG20:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18661_IG21
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18661_IG21:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18661_IG22:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82EC000000 jb G_M18661_IG29
894C243C mov dword ptr [rsp+3CH], ecx
8B0D133BEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18661_IG23
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18661_IG27
G_M18661_IG23:
83F801 cmp eax, 1
7509 jne SHORT G_M18661_IG24
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18661_IG27
G_M18661_IG24:
83F802 cmp eax, 2
7509 jne SHORT G_M18661_IG25
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18661_IG27
G_M18661_IG25:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18661_IG26
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18661_IG26:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18661_IG27:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
7215 jb SHORT G_M18661_IG29
894C243C mov dword ptr [rsp+3CH], ecx
488D4C2420 lea rcx, bword ptr [rsp+20H]
E8F8F1FFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18661_IG28:
4883C440 add rsp, 64
5F pop rdi
C3 ret
G_M18661_IG29:
E86C72C05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 1157, prolog size 22 for method System.HashCode:Test_5():int
; ============================================================
; Assembly listing for method System.HashCode:Test_6():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] (134, 48.50) struct (32) [rsp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T24] ( 2, 4 ) int -> rcx
; V02 tmp1 [V02,T36] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T30] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T00] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T42] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T01] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T43] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T02] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T44] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T03] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 tmp14 [V15,T25] ( 2, 4 ) int -> rcx
; V16 tmp15 [V16,T37] ( 5, 2 ) int -> rcx
; V17 tmp16 [V17,T31] ( 5, 2.75) int -> rax
; V18 tmp17 [V18,T04] ( 8, 4 ) int -> rax ld-addr-op
; V19 tmp18 [V19,T45] ( 2, 1 ) int -> rdx ld-addr-op
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V21 tmp20 [V21,T05] ( 8, 4 ) int -> rax ld-addr-op
; V22 tmp21 [V22,T46] ( 2, 1 ) int -> rdx ld-addr-op
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp23 [V24,T06] ( 8, 4 ) int -> rax ld-addr-op
; V25 tmp24 [V25,T47] ( 2, 1 ) int -> rdx ld-addr-op
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V27 tmp26 [V27,T07] ( 8, 4 ) int -> rax ld-addr-op
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V29 tmp28 [V29,T26] ( 2, 4 ) int -> rcx
; V30 tmp29 [V30,T38] ( 5, 2 ) int -> rcx
; V31 tmp30 [V31,T32] ( 5, 2.75) int -> rax
; V32 tmp31 [V32,T08] ( 8, 4 ) int -> rax ld-addr-op
; V33 tmp32 [V33,T48] ( 2, 1 ) int -> rdx ld-addr-op
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V35 tmp34 [V35,T09] ( 8, 4 ) int -> rax ld-addr-op
; V36 tmp35 [V36,T49] ( 2, 1 ) int -> rdx ld-addr-op
;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp37 [V38,T10] ( 8, 4 ) int -> rax ld-addr-op
; V39 tmp38 [V39,T50] ( 2, 1 ) int -> rdx ld-addr-op
;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V41 tmp40 [V41,T11] ( 8, 4 ) int -> rax ld-addr-op
;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V43 tmp42 [V43,T27] ( 2, 4 ) int -> rcx
; V44 tmp43 [V44,T39] ( 5, 2 ) int -> rcx
; V45 tmp44 [V45,T33] ( 5, 2.75) int -> rax
; V46 tmp45 [V46,T12] ( 8, 4 ) int -> rax ld-addr-op
; V47 tmp46 [V47,T51] ( 2, 1 ) int -> rdx ld-addr-op
;* V48 tmp47 [V48 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V49 tmp48 [V49,T13] ( 8, 4 ) int -> rax ld-addr-op
; V50 tmp49 [V50,T52] ( 2, 1 ) int -> rdx ld-addr-op
;* V51 tmp50 [V51 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V52 tmp51 [V52,T14] ( 8, 4 ) int -> rax ld-addr-op
; V53 tmp52 [V53,T53] ( 2, 1 ) int -> rdx ld-addr-op
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V55 tmp54 [V55,T15] ( 8, 4 ) int -> rax ld-addr-op
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V57 tmp56 [V57,T28] ( 2, 4 ) int -> rcx
; V58 tmp57 [V58,T40] ( 5, 2 ) int -> rcx
; V59 tmp58 [V59,T34] ( 5, 2.75) int -> rax
; V60 tmp59 [V60,T16] ( 8, 4 ) int -> rax ld-addr-op
; V61 tmp60 [V61,T54] ( 2, 1 ) int -> rdx ld-addr-op
;* V62 tmp61 [V62 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V63 tmp62 [V63,T17] ( 8, 4 ) int -> rax ld-addr-op
; V64 tmp63 [V64,T55] ( 2, 1 ) int -> rdx ld-addr-op
;* V65 tmp64 [V65 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V66 tmp65 [V66,T18] ( 8, 4 ) int -> rax ld-addr-op
; V67 tmp66 [V67,T56] ( 2, 1 ) int -> rdx ld-addr-op
;* V68 tmp67 [V68 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V69 tmp68 [V69,T19] ( 8, 4 ) int -> rax ld-addr-op
;* V70 tmp69 [V70 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V71 tmp70 [V71,T29] ( 2, 4 ) int -> rcx
; V72 tmp71 [V72,T41] ( 5, 2 ) int -> rcx
; V73 tmp72 [V73,T35] ( 5, 2.75) int -> rax
; V74 tmp73 [V74,T20] ( 8, 4 ) int -> rax ld-addr-op
; V75 tmp74 [V75,T57] ( 2, 1 ) int -> rdx ld-addr-op
;* V76 tmp75 [V76 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V77 tmp76 [V77,T21] ( 8, 4 ) int -> rax ld-addr-op
; V78 tmp77 [V78,T58] ( 2, 1 ) int -> rdx ld-addr-op
;* V79 tmp78 [V79 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V80 tmp79 [V80,T22] ( 8, 4 ) int -> rax ld-addr-op
; V81 tmp80 [V81,T59] ( 2, 1 ) int -> rdx ld-addr-op
;* V82 tmp81 [V82 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V83 tmp82 [V83,T23] ( 8, 4 ) int -> rax ld-addr-op
;* V84 tmp83 [V84 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V85 OutArgs [V85 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 64
G_M18668_IG01:
57 push rdi
4883EC40 sub rsp, 64
C5F877 vzeroupper
488D7C2420 lea rdi, [rsp+20H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18668_IG02:
488D4C2420 lea rcx, bword ptr [rsp+20H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
8B0DDF39EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18668_IG03
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18668_IG07
G_M18668_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18668_IG04
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18668_IG07
G_M18668_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18668_IG05
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18668_IG07
G_M18668_IG05:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18668_IG06
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18668_IG06:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18668_IG07:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F8258040000 jb G_M18668_IG34
894C243C mov dword ptr [rsp+3CH], ecx
8B0D0439EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18668_IG08
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18668_IG12
G_M18668_IG08:
83F801 cmp eax, 1
7509 jne SHORT G_M18668_IG09
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18668_IG12
G_M18668_IG09:
83F802 cmp eax, 2
7509 jne SHORT G_M18668_IG10
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18668_IG12
G_M18668_IG10:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18668_IG11
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18668_IG11:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18668_IG12:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F827D030000 jb G_M18668_IG34
894C243C mov dword ptr [rsp+3CH], ecx
8B0D2938EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18668_IG13
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18668_IG17
G_M18668_IG13:
83F801 cmp eax, 1
7509 jne SHORT G_M18668_IG14
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18668_IG17
G_M18668_IG14:
83F802 cmp eax, 2
7509 jne SHORT G_M18668_IG15
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18668_IG17
G_M18668_IG15:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18668_IG16
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18668_IG16:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18668_IG17:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82A2020000 jb G_M18668_IG34
894C243C mov dword ptr [rsp+3CH], ecx
8B0D4E37EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18668_IG18
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18668_IG22
G_M18668_IG18:
83F801 cmp eax, 1
7509 jne SHORT G_M18668_IG19
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18668_IG22
G_M18668_IG19:
83F802 cmp eax, 2
7509 jne SHORT G_M18668_IG20
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18668_IG22
G_M18668_IG20:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18668_IG21
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18668_IG21:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18668_IG22:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82C7010000 jb G_M18668_IG34
894C243C mov dword ptr [rsp+3CH], ecx
8B0D7336EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18668_IG23
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18668_IG27
G_M18668_IG23:
83F801 cmp eax, 1
7509 jne SHORT G_M18668_IG24
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18668_IG27
G_M18668_IG24:
83F802 cmp eax, 2
7509 jne SHORT G_M18668_IG25
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18668_IG27
G_M18668_IG25:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18668_IG26
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18668_IG26:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18668_IG27:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82EC000000 jb G_M18668_IG34
894C243C mov dword ptr [rsp+3CH], ecx
8B0D9835EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18668_IG28
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18668_IG32
G_M18668_IG28:
83F801 cmp eax, 1
7509 jne SHORT G_M18668_IG29
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18668_IG32
G_M18668_IG29:
83F802 cmp eax, 2
7509 jne SHORT G_M18668_IG30
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18668_IG32
G_M18668_IG30:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18668_IG31
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18668_IG31:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18668_IG32:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
7215 jb SHORT G_M18668_IG34
894C243C mov dword ptr [rsp+3CH], ecx
488D4C2420 lea rcx, bword ptr [rsp+20H]
E87DECFFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18668_IG33:
4883C440 add rsp, 64
5F pop rdi
C3 ret
G_M18668_IG34:
E8F16CC05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 1376, prolog size 22 for method System.HashCode:Test_6():int
; ============================================================
; Assembly listing for method System.HashCode:Test_7():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] (156, 56.25) struct (32) [rsp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T28] ( 2, 4 ) int -> rcx
; V02 tmp1 [V02,T42] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T35] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T00] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T49] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T01] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T50] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T02] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T51] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T03] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 tmp14 [V15,T29] ( 2, 4 ) int -> rcx
; V16 tmp15 [V16,T43] ( 5, 2 ) int -> rcx
; V17 tmp16 [V17,T36] ( 5, 2.75) int -> rax
; V18 tmp17 [V18,T04] ( 8, 4 ) int -> rax ld-addr-op
; V19 tmp18 [V19,T52] ( 2, 1 ) int -> rdx ld-addr-op
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V21 tmp20 [V21,T05] ( 8, 4 ) int -> rax ld-addr-op
; V22 tmp21 [V22,T53] ( 2, 1 ) int -> rdx ld-addr-op
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp23 [V24,T06] ( 8, 4 ) int -> rax ld-addr-op
; V25 tmp24 [V25,T54] ( 2, 1 ) int -> rdx ld-addr-op
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V27 tmp26 [V27,T07] ( 8, 4 ) int -> rax ld-addr-op
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V29 tmp28 [V29,T30] ( 2, 4 ) int -> rcx
; V30 tmp29 [V30,T44] ( 5, 2 ) int -> rcx
; V31 tmp30 [V31,T37] ( 5, 2.75) int -> rax
; V32 tmp31 [V32,T08] ( 8, 4 ) int -> rax ld-addr-op
; V33 tmp32 [V33,T55] ( 2, 1 ) int -> rdx ld-addr-op
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V35 tmp34 [V35,T09] ( 8, 4 ) int -> rax ld-addr-op
; V36 tmp35 [V36,T56] ( 2, 1 ) int -> rdx ld-addr-op
;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp37 [V38,T10] ( 8, 4 ) int -> rax ld-addr-op
; V39 tmp38 [V39,T57] ( 2, 1 ) int -> rdx ld-addr-op
;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V41 tmp40 [V41,T11] ( 8, 4 ) int -> rax ld-addr-op
;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V43 tmp42 [V43,T31] ( 2, 4 ) int -> rcx
; V44 tmp43 [V44,T45] ( 5, 2 ) int -> rcx
; V45 tmp44 [V45,T38] ( 5, 2.75) int -> rax
; V46 tmp45 [V46,T12] ( 8, 4 ) int -> rax ld-addr-op
; V47 tmp46 [V47,T58] ( 2, 1 ) int -> rdx ld-addr-op
;* V48 tmp47 [V48 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V49 tmp48 [V49,T13] ( 8, 4 ) int -> rax ld-addr-op
; V50 tmp49 [V50,T59] ( 2, 1 ) int -> rdx ld-addr-op
;* V51 tmp50 [V51 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V52 tmp51 [V52,T14] ( 8, 4 ) int -> rax ld-addr-op
; V53 tmp52 [V53,T60] ( 2, 1 ) int -> rdx ld-addr-op
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V55 tmp54 [V55,T15] ( 8, 4 ) int -> rax ld-addr-op
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V57 tmp56 [V57,T32] ( 2, 4 ) int -> rcx
; V58 tmp57 [V58,T46] ( 5, 2 ) int -> rcx
; V59 tmp58 [V59,T39] ( 5, 2.75) int -> rax
; V60 tmp59 [V60,T16] ( 8, 4 ) int -> rax ld-addr-op
; V61 tmp60 [V61,T61] ( 2, 1 ) int -> rdx ld-addr-op
;* V62 tmp61 [V62 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V63 tmp62 [V63,T17] ( 8, 4 ) int -> rax ld-addr-op
; V64 tmp63 [V64,T62] ( 2, 1 ) int -> rdx ld-addr-op
;* V65 tmp64 [V65 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V66 tmp65 [V66,T18] ( 8, 4 ) int -> rax ld-addr-op
; V67 tmp66 [V67,T63] ( 2, 1 ) int -> rdx ld-addr-op
;* V68 tmp67 [V68 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V69 tmp68 [V69,T19] ( 8, 4 ) int -> rax ld-addr-op
;* V70 tmp69 [V70 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V71 tmp70 [V71,T33] ( 2, 4 ) int -> rcx
; V72 tmp71 [V72,T47] ( 5, 2 ) int -> rcx
; V73 tmp72 [V73,T40] ( 5, 2.75) int -> rax
; V74 tmp73 [V74,T20] ( 8, 4 ) int -> rax ld-addr-op
; V75 tmp74 [V75,T64] ( 2, 1 ) int -> rdx ld-addr-op
;* V76 tmp75 [V76 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V77 tmp76 [V77,T21] ( 8, 4 ) int -> rax ld-addr-op
; V78 tmp77 [V78,T65] ( 2, 1 ) int -> rdx ld-addr-op
;* V79 tmp78 [V79 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V80 tmp79 [V80,T22] ( 8, 4 ) int -> rax ld-addr-op
; V81 tmp80 [V81,T66] ( 2, 1 ) int -> rdx ld-addr-op
;* V82 tmp81 [V82 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V83 tmp82 [V83,T23] ( 8, 4 ) int -> rax ld-addr-op
;* V84 tmp83 [V84 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V85 tmp84 [V85,T34] ( 2, 4 ) int -> rcx
; V86 tmp85 [V86,T48] ( 5, 2 ) int -> rcx
; V87 tmp86 [V87,T41] ( 5, 2.75) int -> rax
; V88 tmp87 [V88,T24] ( 8, 4 ) int -> rax ld-addr-op
; V89 tmp88 [V89,T67] ( 2, 1 ) int -> rdx ld-addr-op
;* V90 tmp89 [V90 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V91 tmp90 [V91,T25] ( 8, 4 ) int -> rax ld-addr-op
; V92 tmp91 [V92,T68] ( 2, 1 ) int -> rdx ld-addr-op
;* V93 tmp92 [V93 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V94 tmp93 [V94,T26] ( 8, 4 ) int -> rax ld-addr-op
; V95 tmp94 [V95,T69] ( 2, 1 ) int -> rdx ld-addr-op
;* V96 tmp95 [V96 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V97 tmp96 [V97,T27] ( 8, 4 ) int -> rax ld-addr-op
;* V98 tmp97 [V98 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V99 OutArgs [V99 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 64
G_M18679_IG01:
57 push rdi
4883EC40 sub rsp, 64
C5F877 vzeroupper
488D7C2420 lea rdi, [rsp+20H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18679_IG02:
488D4C2420 lea rcx, bword ptr [rsp+20H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
8B0D5F34EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18679_IG03
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18679_IG07
G_M18679_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18679_IG04
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18679_IG07
G_M18679_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18679_IG05
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18679_IG07
G_M18679_IG05:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18679_IG06
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18679_IG06:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18679_IG07:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F8233050000 jb G_M18679_IG39
894C243C mov dword ptr [rsp+3CH], ecx
8B0D8433EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18679_IG08
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18679_IG12
G_M18679_IG08:
83F801 cmp eax, 1
7509 jne SHORT G_M18679_IG09
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18679_IG12
G_M18679_IG09:
83F802 cmp eax, 2
7509 jne SHORT G_M18679_IG10
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18679_IG12
G_M18679_IG10:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18679_IG11
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18679_IG11:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18679_IG12:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F8258040000 jb G_M18679_IG39
894C243C mov dword ptr [rsp+3CH], ecx
8B0DA932EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18679_IG13
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18679_IG17
G_M18679_IG13:
83F801 cmp eax, 1
7509 jne SHORT G_M18679_IG14
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18679_IG17
G_M18679_IG14:
83F802 cmp eax, 2
7509 jne SHORT G_M18679_IG15
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18679_IG17
G_M18679_IG15:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18679_IG16
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18679_IG16:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18679_IG17:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F827D030000 jb G_M18679_IG39
894C243C mov dword ptr [rsp+3CH], ecx
8B0DCE31EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18679_IG18
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18679_IG22
G_M18679_IG18:
83F801 cmp eax, 1
7509 jne SHORT G_M18679_IG19
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18679_IG22
G_M18679_IG19:
83F802 cmp eax, 2
7509 jne SHORT G_M18679_IG20
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18679_IG22
G_M18679_IG20:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18679_IG21
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18679_IG21:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18679_IG22:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82A2020000 jb G_M18679_IG39
894C243C mov dword ptr [rsp+3CH], ecx
8B0DF330EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18679_IG23
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18679_IG27
G_M18679_IG23:
83F801 cmp eax, 1
7509 jne SHORT G_M18679_IG24
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18679_IG27
G_M18679_IG24:
83F802 cmp eax, 2
7509 jne SHORT G_M18679_IG25
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18679_IG27
G_M18679_IG25:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18679_IG26
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18679_IG26:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18679_IG27:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82C7010000 jb G_M18679_IG39
894C243C mov dword ptr [rsp+3CH], ecx
8B0D1830EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18679_IG28
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18679_IG32
G_M18679_IG28:
83F801 cmp eax, 1
7509 jne SHORT G_M18679_IG29
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18679_IG32
G_M18679_IG29:
83F802 cmp eax, 2
7509 jne SHORT G_M18679_IG30
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18679_IG32
G_M18679_IG30:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18679_IG31
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18679_IG31:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18679_IG32:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82EC000000 jb G_M18679_IG39
894C243C mov dword ptr [rsp+3CH], ecx
8B0D3D2FEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18679_IG33
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18679_IG37
G_M18679_IG33:
83F801 cmp eax, 1
7509 jne SHORT G_M18679_IG34
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18679_IG37
G_M18679_IG34:
83F802 cmp eax, 2
7509 jne SHORT G_M18679_IG35
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18679_IG37
G_M18679_IG35:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18679_IG36
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18679_IG36:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18679_IG37:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
7215 jb SHORT G_M18679_IG39
894C243C mov dword ptr [rsp+3CH], ecx
488D4C2420 lea rcx, bword ptr [rsp+20H]
E822E6FFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18679_IG38:
4883C440 add rsp, 64
5F pop rdi
C3 ret
G_M18679_IG39:
E89666C05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 1595, prolog size 22 for method System.HashCode:Test_7():int
; ============================================================
; Assembly listing for method System.HashCode:Test_8():int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 loc0 [V00 ] (178, 64 ) struct (32) [rsp+0x20] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V01 tmp0 [V01,T32] ( 2, 4 ) int -> rcx
; V02 tmp1 [V02,T48] ( 5, 2 ) int -> rcx
; V03 tmp2 [V03,T40] ( 5, 2.75) int -> rax
; V04 tmp3 [V04,T00] ( 8, 4 ) int -> rax ld-addr-op
; V05 tmp4 [V05,T56] ( 2, 1 ) int -> rdx ld-addr-op
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V07 tmp6 [V07,T01] ( 8, 4 ) int -> rax ld-addr-op
; V08 tmp7 [V08,T57] ( 2, 1 ) int -> rdx ld-addr-op
;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V10 tmp9 [V10,T02] ( 8, 4 ) int -> rax ld-addr-op
; V11 tmp10 [V11,T58] ( 2, 1 ) int -> rdx ld-addr-op
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V13 tmp12 [V13,T03] ( 8, 4 ) int -> rax ld-addr-op
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V15 tmp14 [V15,T33] ( 2, 4 ) int -> rcx
; V16 tmp15 [V16,T49] ( 5, 2 ) int -> rcx
; V17 tmp16 [V17,T41] ( 5, 2.75) int -> rax
; V18 tmp17 [V18,T04] ( 8, 4 ) int -> rax ld-addr-op
; V19 tmp18 [V19,T59] ( 2, 1 ) int -> rdx ld-addr-op
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V21 tmp20 [V21,T05] ( 8, 4 ) int -> rax ld-addr-op
; V22 tmp21 [V22,T60] ( 2, 1 ) int -> rdx ld-addr-op
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp23 [V24,T06] ( 8, 4 ) int -> rax ld-addr-op
; V25 tmp24 [V25,T61] ( 2, 1 ) int -> rdx ld-addr-op
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V27 tmp26 [V27,T07] ( 8, 4 ) int -> rax ld-addr-op
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V29 tmp28 [V29,T34] ( 2, 4 ) int -> rcx
; V30 tmp29 [V30,T50] ( 5, 2 ) int -> rcx
; V31 tmp30 [V31,T42] ( 5, 2.75) int -> rax
; V32 tmp31 [V32,T08] ( 8, 4 ) int -> rax ld-addr-op
; V33 tmp32 [V33,T62] ( 2, 1 ) int -> rdx ld-addr-op
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V35 tmp34 [V35,T09] ( 8, 4 ) int -> rax ld-addr-op
; V36 tmp35 [V36,T63] ( 2, 1 ) int -> rdx ld-addr-op
;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp37 [V38,T10] ( 8, 4 ) int -> rax ld-addr-op
; V39 tmp38 [V39,T64] ( 2, 1 ) int -> rdx ld-addr-op
;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V41 tmp40 [V41,T11] ( 8, 4 ) int -> rax ld-addr-op
;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V43 tmp42 [V43,T35] ( 2, 4 ) int -> rcx
; V44 tmp43 [V44,T51] ( 5, 2 ) int -> rcx
; V45 tmp44 [V45,T43] ( 5, 2.75) int -> rax
; V46 tmp45 [V46,T12] ( 8, 4 ) int -> rax ld-addr-op
; V47 tmp46 [V47,T65] ( 2, 1 ) int -> rdx ld-addr-op
;* V48 tmp47 [V48 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V49 tmp48 [V49,T13] ( 8, 4 ) int -> rax ld-addr-op
; V50 tmp49 [V50,T66] ( 2, 1 ) int -> rdx ld-addr-op
;* V51 tmp50 [V51 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V52 tmp51 [V52,T14] ( 8, 4 ) int -> rax ld-addr-op
; V53 tmp52 [V53,T67] ( 2, 1 ) int -> rdx ld-addr-op
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V55 tmp54 [V55,T15] ( 8, 4 ) int -> rax ld-addr-op
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V57 tmp56 [V57,T36] ( 2, 4 ) int -> rcx
; V58 tmp57 [V58,T52] ( 5, 2 ) int -> rcx
; V59 tmp58 [V59,T44] ( 5, 2.75) int -> rax
; V60 tmp59 [V60,T16] ( 8, 4 ) int -> rax ld-addr-op
; V61 tmp60 [V61,T68] ( 2, 1 ) int -> rdx ld-addr-op
;* V62 tmp61 [V62 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V63 tmp62 [V63,T17] ( 8, 4 ) int -> rax ld-addr-op
; V64 tmp63 [V64,T69] ( 2, 1 ) int -> rdx ld-addr-op
;* V65 tmp64 [V65 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V66 tmp65 [V66,T18] ( 8, 4 ) int -> rax ld-addr-op
; V67 tmp66 [V67,T70] ( 2, 1 ) int -> rdx ld-addr-op
;* V68 tmp67 [V68 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V69 tmp68 [V69,T19] ( 8, 4 ) int -> rax ld-addr-op
;* V70 tmp69 [V70 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V71 tmp70 [V71,T37] ( 2, 4 ) int -> rcx
; V72 tmp71 [V72,T53] ( 5, 2 ) int -> rcx
; V73 tmp72 [V73,T45] ( 5, 2.75) int -> rax
; V74 tmp73 [V74,T20] ( 8, 4 ) int -> rax ld-addr-op
; V75 tmp74 [V75,T71] ( 2, 1 ) int -> rdx ld-addr-op
;* V76 tmp75 [V76 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V77 tmp76 [V77,T21] ( 8, 4 ) int -> rax ld-addr-op
; V78 tmp77 [V78,T72] ( 2, 1 ) int -> rdx ld-addr-op
;* V79 tmp78 [V79 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V80 tmp79 [V80,T22] ( 8, 4 ) int -> rax ld-addr-op
; V81 tmp80 [V81,T73] ( 2, 1 ) int -> rdx ld-addr-op
;* V82 tmp81 [V82 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V83 tmp82 [V83,T23] ( 8, 4 ) int -> rax ld-addr-op
;* V84 tmp83 [V84 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V85 tmp84 [V85,T38] ( 2, 4 ) int -> rcx
; V86 tmp85 [V86,T54] ( 5, 2 ) int -> rcx
; V87 tmp86 [V87,T46] ( 5, 2.75) int -> rax
; V88 tmp87 [V88,T24] ( 8, 4 ) int -> rax ld-addr-op
; V89 tmp88 [V89,T74] ( 2, 1 ) int -> rdx ld-addr-op
;* V90 tmp89 [V90 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V91 tmp90 [V91,T25] ( 8, 4 ) int -> rax ld-addr-op
; V92 tmp91 [V92,T75] ( 2, 1 ) int -> rdx ld-addr-op
;* V93 tmp92 [V93 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V94 tmp93 [V94,T26] ( 8, 4 ) int -> rax ld-addr-op
; V95 tmp94 [V95,T76] ( 2, 1 ) int -> rdx ld-addr-op
;* V96 tmp95 [V96 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V97 tmp96 [V97,T27] ( 8, 4 ) int -> rax ld-addr-op
;* V98 tmp97 [V98 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V99 tmp98 [V99,T39] ( 2, 4 ) int -> rcx
; V100 tmp99 [V100,T55] ( 5, 2 ) int -> rcx
; V101 tmp100 [V101,T47] ( 5, 2.75) int -> rax
; V102 tmp101 [V102,T28] ( 8, 4 ) int -> rax ld-addr-op
; V103 tmp102 [V103,T77] ( 2, 1 ) int -> rdx ld-addr-op
;* V104 tmp103 [V104 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V105 tmp104 [V105,T29] ( 8, 4 ) int -> rax ld-addr-op
; V106 tmp105 [V106,T78] ( 2, 1 ) int -> rdx ld-addr-op
;* V107 tmp106 [V107 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V108 tmp107 [V108,T30] ( 8, 4 ) int -> rax ld-addr-op
; V109 tmp108 [V109,T79] ( 2, 1 ) int -> rdx ld-addr-op
;* V110 tmp109 [V110 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V111 tmp110 [V111,T31] ( 8, 4 ) int -> rax ld-addr-op
;* V112 tmp111 [V112 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V113 OutArgs [V113 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 64
G_M18702_IG01:
57 push rdi
4883EC40 sub rsp, 64
C5F877 vzeroupper
488D7C2420 lea rdi, [rsp+20H]
B908000000 mov ecx, 8
33C0 xor rax, rax
F3AB rep stosd
G_M18702_IG02:
488D4C2420 lea rcx, bword ptr [rsp+20H]
C4E17957C0 vxorpd xmm0, xmm0
C4E17A7F01 vmovdqu qword ptr [rcx], xmm0
C4E17A7F4110 vmovdqu qword ptr [rcx+16], xmm0
8B0D0F2EEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG03
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG07
G_M18702_IG03:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG04
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG07
G_M18702_IG04:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG05
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG07
G_M18702_IG05:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG06
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG06:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG07:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F820E060000 jb G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
8B0D342DEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG08
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG12
G_M18702_IG08:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG09
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG12
G_M18702_IG09:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG10
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG12
G_M18702_IG10:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG11
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG11:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG12:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F8233050000 jb G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
8B0D592CEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG13
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG17
G_M18702_IG13:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG14
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG17
G_M18702_IG14:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG15
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG17
G_M18702_IG15:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG16
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG16:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG17:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F8258040000 jb G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
8B0D7E2BEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG18
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG22
G_M18702_IG18:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG19
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG22
G_M18702_IG19:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG20
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG22
G_M18702_IG20:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG21
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG21:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG22:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F827D030000 jb G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
8B0DA32AEEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG23
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG27
G_M18702_IG23:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG24
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG27
G_M18702_IG24:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG25
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG27
G_M18702_IG25:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG26
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG26:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG27:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82A2020000 jb G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
8B0DC829EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG28
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG32
G_M18702_IG28:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG29
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG32
G_M18702_IG29:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG30
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG32
G_M18702_IG30:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG31
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG31:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG32:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82C7010000 jb G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
8B0DED28EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG33
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG37
G_M18702_IG33:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG34
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG37
G_M18702_IG34:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG35
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG37
G_M18702_IG35:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG36
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG36:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG37:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
0F82EC000000 jb G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
8B0D1228EEFF mov ecx, dword ptr [reloc classVar[0x9f0c65d0]]
8B44243C mov eax, dword ptr [rsp+3CH]
83E003 and eax, 3
85C0 test eax, eax
7509 jne SHORT G_M18702_IG38
894C2430 mov dword ptr [rsp+30H], ecx
E9B0000000 jmp G_M18702_IG42
G_M18702_IG38:
83F801 cmp eax, 1
7509 jne SHORT G_M18702_IG39
894C2434 mov dword ptr [rsp+34H], ecx
E9A2000000 jmp G_M18702_IG42
G_M18702_IG39:
83F802 cmp eax, 2
7509 jne SHORT G_M18702_IG40
894C2438 mov dword ptr [rsp+38H], ecx
E994000000 jmp G_M18702_IG42
G_M18702_IG40:
3344243C xor eax, dword ptr [rsp+3CH]
751E jne SHORT G_M18702_IG41
C744242028442324 mov dword ptr [rsp+20H], 0x24234428
C744242477CAEB85 mov dword ptr [rsp+24H], 0xFFFFFFFF85EBCA77
33C0 xor eax, eax
89442428 mov dword ptr [rsp+28H], eax
C744242C4F86C861 mov dword ptr [rsp+2CH], 0x61C8864F
G_M18702_IG41:
8B442420 mov eax, dword ptr [rsp+20H]
8B542430 mov edx, dword ptr [rsp+30H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442420 mov dword ptr [rsp+20H], eax
8B442424 mov eax, dword ptr [rsp+24H]
8B542434 mov edx, dword ptr [rsp+34H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442424 mov dword ptr [rsp+24H], eax
8B442428 mov eax, dword ptr [rsp+28H]
8B542438 mov edx, dword ptr [rsp+38H]
69D277CAEB85 imul edx, edx, 0xFFFFFFFF85EBCA77
03C2 add eax, edx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
89442428 mov dword ptr [rsp+28H], eax
8B44242C mov eax, dword ptr [rsp+2CH]
69C977CAEB85 imul ecx, ecx, 0xFFFFFFFF85EBCA77
03C1 add eax, ecx
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
8944242C mov dword ptr [rsp+2CH], eax
G_M18702_IG42:
8B4C243C mov ecx, dword ptr [rsp+3CH]
83C101 add ecx, 1
7215 jb SHORT G_M18702_IG44
894C243C mov dword ptr [rsp+3CH], ecx
488D4C2420 lea rcx, bword ptr [rsp+20H]
E8F7DEFFFF call System.HashCode:ToHashCode():int:this
90 nop
G_M18702_IG43:
4883C440 add rsp, 64
5F pop rdi
C3 ret
G_M18702_IG44:
E86B5FC05E call CORINFO_HELP_OVERFLOW
CC int3
; Total bytes of code 1814, prolog size 22 for method System.HashCode:Test_8():int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 tmp0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V03 tmp1 [V03,T02] ( 2, 2 ) int -> rax
; V04 tmp2 [V04,T01] ( 2, 4 ) int -> rax
; V05 tmp3 [V05,T00] ( 15, 30 ) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 40
G_M51542_IG01:
4883EC28 sub rsp, 40
894C2430 mov dword ptr [rsp+30H], ecx
G_M51542_IG02:
488D4C2430 lea rcx, bword ptr [rsp+30H]
E8BE09E75D call System.Int32:GetHashCode():int:this
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
05B5675616 add eax, 0x165667B5
C1C011 rol eax, 17
69C02FEBD427 imul eax, eax, 0x27D4EB2F
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M51542_IG03:
4883C428 add rsp, 40
C3 ret
; Total bytes of code 76, prolog size 4 for method System.HashCode:Combine(int):int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V02 loc0 [V02,T03] ( 2, 2 ) int -> rsi
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V05 tmp1 [V05,T04] ( 2, 2 ) int -> rsi
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V07 tmp3 [V07,T05] ( 2, 2 ) int -> rax
; V08 tmp4 [V08,T02] ( 2, 4 ) int -> rdx
; V09 tmp5 [V09,T01] ( 4, 8 ) int -> rdx
; V10 tmp6 [V10,T00] ( 15, 30 ) int -> rax
; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 32
G_M22004_IG01:
56 push rsi
4883EC20 sub rsp, 32
894C2430 mov dword ptr [rsp+30H], ecx
89542438 mov dword ptr [rsp+38H], edx
G_M22004_IG02:
488D4C2430 lea rcx, bword ptr [rsp+30H]
E85909E75D call System.Int32:GetHashCode():int:this
8BF0 mov esi, eax
488D4C2438 lea rcx, bword ptr [rsp+38H]
E84D09E75D call System.Int32:GetHashCode():int:this
69D63DAEB2C2 imul edx, esi, 0xFFFFFFFFC2B2AE3D
81C2B9675616 add edx, 0x165667B9
C1C211 rol edx, 17
69D22FEBD427 imul edx, edx, 0x27D4EB2F
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
03D0 add edx, eax
C1C211 rol edx, 17
69C22FEBD427 imul eax, edx, 0x27D4EB2F
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M22004_IG03:
4883C420 add rsp, 32
5E pop rsi
C3 ret
; Total bytes of code 112, prolog size 5 for method System.HashCode:Combine(int,int):int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int,int,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op
; V02 arg2 [V02 ] ( 3, 3 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V03 loc0 [V03,T04] ( 2, 2 ) int -> rsi
; V04 loc1 [V04,T05] ( 2, 2 ) int -> rdi
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 tmp0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V07 tmp1 [V07,T06] ( 2, 2 ) int -> rsi
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V09 tmp3 [V09,T07] ( 2, 2 ) int -> rdi
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V11 tmp5 [V11,T08] ( 2, 2 ) int -> rax
; V12 tmp6 [V12,T03] ( 2, 4 ) int -> rdx
; V13 tmp7 [V13,T01] ( 4, 8 ) int -> rdx
; V14 tmp8 [V14,T02] ( 4, 8 ) int -> rdx
; V15 tmp9 [V15,T00] ( 15, 30 ) int -> rax
; V16 OutArgs [V16 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 40
G_M46490_IG01:
57 push rdi
56 push rsi
4883EC28 sub rsp, 40
894C2440 mov dword ptr [rsp+40H], ecx
89542448 mov dword ptr [rsp+48H], edx
4489442450 mov dword ptr [rsp+50H], r8d
G_M46490_IG02:
488D4C2440 lea rcx, bword ptr [rsp+40H]
E8C308E75D call System.Int32:GetHashCode():int:this
8BF0 mov esi, eax
488D4C2448 lea rcx, bword ptr [rsp+48H]
E8B708E75D call System.Int32:GetHashCode():int:this
8BF8 mov edi, eax
488D4C2450 lea rcx, bword ptr [rsp+50H]
E8AB08E75D call System.Int32:GetHashCode():int:this
69D63DAEB2C2 imul edx, esi, 0xFFFFFFFFC2B2AE3D
81C2BD675616 add edx, 0x165667BD
C1C211 rol edx, 17
69D22FEBD427 imul edx, edx, 0x27D4EB2F
69CF3DAEB2C2 imul ecx, edi, 0xFFFFFFFFC2B2AE3D
03D1 add edx, ecx
C1C211 rol edx, 17
69D22FEBD427 imul edx, edx, 0x27D4EB2F
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
03D0 add edx, eax
C1C211 rol edx, 17
69C22FEBD427 imul eax, edx, 0x27D4EB2F
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M46490_IG03:
4883C428 add rsp, 40
5E pop rsi
5F pop rdi
C3 ret
; Total bytes of code 148, prolog size 6 for method System.HashCode:Combine(int,int,int):int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int,int,int,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op
; V02 arg2 [V02 ] ( 3, 3 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V03 arg3 [V03 ] ( 3, 3 ) int -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc0 [V04,T08] ( 2, 2 ) int -> rsi
; V05 loc1 [V05,T09] ( 2, 2 ) int -> rdi
; V06 loc2 [V06,T10] ( 2, 2 ) int -> rbx
;* V07 loc3 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V11 loc7 [V11 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V12 tmp0 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V13 tmp1 [V13,T11] ( 2, 2 ) int -> rsi
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V15 tmp3 [V15,T12] ( 2, 2 ) int -> rdi
;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V17 tmp5 [V17,T13] ( 2, 2 ) int -> rbx
;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V19 tmp7 [V19,T14] ( 2, 2 ) int -> rax
; V20 tmp8 [V20,T01] ( 6, 12 ) int -> rdx ld-addr-op
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V22 tmp10 [V22,T02] ( 6, 12 ) int -> rcx ld-addr-op
;* V23 tmp11 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V24 tmp12 [V24,T03] ( 6, 12 ) int -> r8 ld-addr-op
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V26 tmp14 [V26,T04] ( 6, 12 ) int -> rax ld-addr-op
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V28 tmp16 [V28 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V29 tmp17 [V29 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V30 tmp18 [V30,T05] ( 2, 4 ) int -> rdx
;* V31 tmp19 [V31 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V32 tmp20 [V32,T06] ( 2, 4 ) int -> rdx
;* V33 tmp21 [V33 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V34 tmp22 [V34,T07] ( 2, 4 ) int -> rdx
;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V36 tmp24 [V36 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V38 tmp26 [V38 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V39 tmp27 [V39,T00] ( 15, 30 ) int -> rax
; V40 OutArgs [V40 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 32
G_M49597_IG01:
57 push rdi
56 push rsi
53 push rbx
4883EC20 sub rsp, 32
894C2440 mov dword ptr [rsp+40H], ecx
89542448 mov dword ptr [rsp+48H], edx
4489442450 mov dword ptr [rsp+50H], r8d
44894C2458 mov dword ptr [rsp+58H], r9d
G_M49597_IG02:
488D4C2440 lea rcx, bword ptr [rsp+40H]
E80D08E75D call System.Int32:GetHashCode():int:this
8BF0 mov esi, eax
488D4C2448 lea rcx, bword ptr [rsp+48H]
E80108E75D call System.Int32:GetHashCode():int:this
8BF8 mov edi, eax
488D4C2450 lea rcx, bword ptr [rsp+50H]
E8F507E75D call System.Int32:GetHashCode():int:this
8BD8 mov ebx, eax
488D4C2458 lea rcx, bword ptr [rsp+58H]
E8E907E75D call System.Int32:GetHashCode():int:this
69D677CAEB85 imul edx, esi, 0xFFFFFFFF85EBCA77
81C228442324 add edx, 0x24234428
C1C20D rol edx, 13
69D2B179379E imul edx, edx, 0xFFFFFFFF9E3779B1
69CF77CAEB85 imul ecx, edi, 0xFFFFFFFF85EBCA77
81C177CAEB85 add ecx, 0xFFFFFFFF85EBCA77
C1C10D rol ecx, 13
69C9B179379E imul ecx, ecx, 0xFFFFFFFF9E3779B1
4469C377CAEB85 imul r8d, ebx, 0xFFFFFFFF85EBCA77
41C1C00D rol r8d, 13
4569C0B179379E imul r8d, r8d, 0xFFFFFFFF9E3779B1
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
054F86C861 add eax, 0x61C8864F
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
D1C2 rol edx, 1
C1C107 rol ecx, 7
03D1 add edx, ecx
41C1C00C rol r8d, 12
4103D0 add edx, r8d
C1C012 rol eax, 18
8D440210 lea eax, [rdx+rax+16]
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M49597_IG03:
4883C420 add rsp, 32
5B pop rbx
5E pop rsi
5F pop rdi
C3 ret
; Total bytes of code 213, prolog size 7 for method System.HashCode:Combine(int,int,int,int):int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int,int,int,int,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op
; V02 arg2 [V02 ] ( 3, 3 ) int -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op
; V03 arg3 [V03 ] ( 3, 3 ) int -> [rsp+0x68] do-not-enreg[X] addr-exposed ld-addr-op
; V04 arg4 [V04 ] ( 1, 1 ) int -> [rsp+0x70] do-not-enreg[X] addr-exposed ld-addr-op
; V05 loc0 [V05,T09] ( 2, 2 ) int -> rsi
; V06 loc1 [V06,T10] ( 2, 2 ) int -> rdi
; V07 loc2 [V07,T11] ( 2, 2 ) int -> rbx
; V08 loc3 [V08,T12] ( 2, 2 ) int -> rbp
;* V09 loc4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc5 [V10 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V11 loc6 [V11 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V12 loc7 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V13 loc8 [V13 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V14 tmp0 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V15 tmp1 [V15,T13] ( 2, 2 ) int -> rsi
;* V16 tmp2 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V17 tmp3 [V17,T14] ( 2, 2 ) int -> rdi
;* V18 tmp4 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V19 tmp5 [V19,T15] ( 2, 2 ) int -> rbx
;* V20 tmp6 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V21 tmp7 [V21,T16] ( 2, 2 ) int -> rbp
;* V22 tmp8 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V23 tmp9 [V23,T17] ( 2, 2 ) int -> rax
; V24 tmp10 [V24,T01] ( 6, 12 ) int -> rdx ld-addr-op
;* V25 tmp11 [V25 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V26 tmp12 [V26,T02] ( 6, 12 ) int -> rcx ld-addr-op
;* V27 tmp13 [V27 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V28 tmp14 [V28,T03] ( 6, 12 ) int -> r8 ld-addr-op
;* V29 tmp15 [V29 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V30 tmp16 [V30,T04] ( 6, 12 ) int -> r9 ld-addr-op
;* V31 tmp17 [V31 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V32 tmp18 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V33 tmp19 [V33 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V34 tmp20 [V34,T06] ( 2, 4 ) int -> rdx
;* V35 tmp21 [V35 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V36 tmp22 [V36,T07] ( 2, 4 ) int -> rdx
;* V37 tmp23 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp24 [V38,T08] ( 2, 4 ) int -> rdx
;* V39 tmp25 [V39 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V40 tmp26 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V41 tmp27 [V41 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V43 tmp29 [V43,T05] ( 4, 8 ) int -> rdx
; V44 tmp30 [V44,T00] ( 15, 30 ) int -> rax
; V45 OutArgs [V45 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 40
G_M20963_IG01:
57 push rdi
56 push rsi
55 push rbp
53 push rbx
4883EC28 sub rsp, 40
894C2450 mov dword ptr [rsp+50H], ecx
89542458 mov dword ptr [rsp+58H], edx
4489442460 mov dword ptr [rsp+60H], r8d
44894C2468 mov dword ptr [rsp+68H], r9d
G_M20963_IG02:
488D4C2450 lea rcx, bword ptr [rsp+50H]
E81C07E75D call System.Int32:GetHashCode():int:this
8BF0 mov esi, eax
488D4C2458 lea rcx, bword ptr [rsp+58H]
E81007E75D call System.Int32:GetHashCode():int:this
8BF8 mov edi, eax
488D4C2460 lea rcx, bword ptr [rsp+60H]
E80407E75D call System.Int32:GetHashCode():int:this
8BD8 mov ebx, eax
488D4C2468 lea rcx, bword ptr [rsp+68H]
E8F806E75D call System.Int32:GetHashCode():int:this
8BE8 mov ebp, eax
488D4C2470 lea rcx, bword ptr [rsp+70H]
E8EC06E75D call System.Int32:GetHashCode():int:this
69D677CAEB85 imul edx, esi, 0xFFFFFFFF85EBCA77
81C228442324 add edx, 0x24234428
C1C20D rol edx, 13
69D2B179379E imul edx, edx, 0xFFFFFFFF9E3779B1
69CF77CAEB85 imul ecx, edi, 0xFFFFFFFF85EBCA77
81C177CAEB85 add ecx, 0xFFFFFFFF85EBCA77
C1C10D rol ecx, 13
69C9B179379E imul ecx, ecx, 0xFFFFFFFF9E3779B1
4469C377CAEB85 imul r8d, ebx, 0xFFFFFFFF85EBCA77
41C1C00D rol r8d, 13
4569C0B179379E imul r8d, r8d, 0xFFFFFFFF9E3779B1
4469CD77CAEB85 imul r9d, ebp, 0xFFFFFFFF85EBCA77
4181C14F86C861 add r9d, 0x61C8864F
41C1C10D rol r9d, 13
4569C9B179379E imul r9d, r9d, 0xFFFFFFFF9E3779B1
D1C2 rol edx, 1
C1C107 rol ecx, 7
03D1 add edx, ecx
41C1C00C rol r8d, 12
4103D0 add edx, r8d
41C1C112 rol r9d, 18
428D540A14 lea edx, [rdx+r9+20]
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
03D0 add edx, eax
C1C211 rol edx, 17
69C22FEBD427 imul eax, edx, 0x27D4EB2F
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M20963_IG03:
4883C428 add rsp, 40
5B pop rbx
5D pop rbp
5E pop rsi
5F pop rdi
C3 ret
; Total bytes of code 251, prolog size 8 for method System.HashCode:Combine(int,int,int,int,int):int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int,int,int,int,int,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op
; V02 arg2 [V02 ] ( 3, 3 ) int -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op
; V03 arg3 [V03 ] ( 3, 3 ) int -> [rsp+0x68] do-not-enreg[X] addr-exposed ld-addr-op
; V04 arg4 [V04 ] ( 1, 1 ) int -> [rsp+0x70] do-not-enreg[X] addr-exposed ld-addr-op
; V05 arg5 [V05 ] ( 1, 1 ) int -> [rsp+0x78] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc0 [V06,T10] ( 2, 2 ) int -> rsi
; V07 loc1 [V07,T11] ( 2, 2 ) int -> rdi
; V08 loc2 [V08,T12] ( 2, 2 ) int -> rbx
; V09 loc3 [V09,T13] ( 2, 2 ) int -> rbp
; V10 loc4 [V10,T14] ( 2, 2 ) int -> r14
;* V11 loc5 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 loc6 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V15 loc9 [V15 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V16 tmp0 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V17 tmp1 [V17,T15] ( 2, 2 ) int -> rsi
;* V18 tmp2 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V19 tmp3 [V19,T16] ( 2, 2 ) int -> rdi
;* V20 tmp4 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V21 tmp5 [V21,T17] ( 2, 2 ) int -> rbx
;* V22 tmp6 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V23 tmp7 [V23,T18] ( 2, 2 ) int -> rbp
;* V24 tmp8 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V25 tmp9 [V25,T19] ( 2, 2 ) int -> r14
;* V26 tmp10 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V27 tmp11 [V27,T20] ( 2, 2 ) int -> rax
; V28 tmp12 [V28,T01] ( 6, 12 ) int -> rdx ld-addr-op
;* V29 tmp13 [V29 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V30 tmp14 [V30,T02] ( 6, 12 ) int -> rcx ld-addr-op
;* V31 tmp15 [V31 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V32 tmp16 [V32,T03] ( 6, 12 ) int -> r8 ld-addr-op
;* V33 tmp17 [V33 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V34 tmp18 [V34,T04] ( 6, 12 ) int -> r9 ld-addr-op
;* V35 tmp19 [V35 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V36 tmp20 [V36 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V37 tmp21 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp22 [V38,T07] ( 2, 4 ) int -> rdx
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V40 tmp24 [V40,T08] ( 2, 4 ) int -> rdx
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V42 tmp26 [V42,T09] ( 2, 4 ) int -> rdx
;* V43 tmp27 [V43 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V44 tmp28 [V44 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V46 tmp30 [V46 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V47 tmp31 [V47,T05] ( 4, 8 ) int -> rdx
; V48 tmp32 [V48,T06] ( 4, 8 ) int -> rdx
; V49 tmp33 [V49,T00] ( 15, 30 ) int -> rax
; V50 OutArgs [V50 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 32
G_M10881_IG01:
4156 push r14
57 push rdi
56 push rsi
55 push rbp
53 push rbx
4883EC20 sub rsp, 32
894C2450 mov dword ptr [rsp+50H], ecx
89542458 mov dword ptr [rsp+58H], edx
4489442460 mov dword ptr [rsp+60H], r8d
44894C2468 mov dword ptr [rsp+68H], r9d
G_M10881_IG02:
488D4C2450 lea rcx, bword ptr [rsp+50H]
E8FA05E75D call System.Int32:GetHashCode():int:this
8BF0 mov esi, eax
488D4C2458 lea rcx, bword ptr [rsp+58H]
E8EE05E75D call System.Int32:GetHashCode():int:this
8BF8 mov edi, eax
488D4C2460 lea rcx, bword ptr [rsp+60H]
E8E205E75D call System.Int32:GetHashCode():int:this
8BD8 mov ebx, eax
488D4C2468 lea rcx, bword ptr [rsp+68H]
E8D605E75D call System.Int32:GetHashCode():int:this
8BE8 mov ebp, eax
488D4C2470 lea rcx, bword ptr [rsp+70H]
E8CA05E75D call System.Int32:GetHashCode():int:this
448BF0 mov r14d, eax
488D4C2478 lea rcx, bword ptr [rsp+78H]
E8BD05E75D call System.Int32:GetHashCode():int:this
69D677CAEB85 imul edx, esi, 0xFFFFFFFF85EBCA77
81C228442324 add edx, 0x24234428
C1C20D rol edx, 13
69D2B179379E imul edx, edx, 0xFFFFFFFF9E3779B1
69CF77CAEB85 imul ecx, edi, 0xFFFFFFFF85EBCA77
81C177CAEB85 add ecx, 0xFFFFFFFF85EBCA77
C1C10D rol ecx, 13
69C9B179379E imul ecx, ecx, 0xFFFFFFFF9E3779B1
4469C377CAEB85 imul r8d, ebx, 0xFFFFFFFF85EBCA77
41C1C00D rol r8d, 13
4569C0B179379E imul r8d, r8d, 0xFFFFFFFF9E3779B1
4469CD77CAEB85 imul r9d, ebp, 0xFFFFFFFF85EBCA77
4181C14F86C861 add r9d, 0x61C8864F
41C1C10D rol r9d, 13
4569C9B179379E imul r9d, r9d, 0xFFFFFFFF9E3779B1
D1C2 rol edx, 1
C1C107 rol ecx, 7
03D1 add edx, ecx
41C1C00C rol r8d, 12
4103D0 add edx, r8d
41C1C112 rol r9d, 18
428D540A18 lea edx, [rdx+r9+24]
4169CE3DAEB2C2 imul ecx, r14d, 0xFFFFFFFFC2B2AE3D
03D1 add edx, ecx
C1C211 rol edx, 17
69D22FEBD427 imul edx, edx, 0x27D4EB2F
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
03D0 add edx, eax
C1C211 rol edx, 17
69C22FEBD427 imul eax, edx, 0x27D4EB2F
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M10881_IG03:
4883C420 add rsp, 32
5B pop rbx
5D pop rbp
5E pop rsi
5F pop rdi
415E pop r14
C3 ret
; Total bytes of code 286, prolog size 10 for method System.HashCode:Combine(int,int,int,int,int,int):int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int,int,int,int,int,int,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op
; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x68] do-not-enreg[X] addr-exposed ld-addr-op
; V02 arg2 [V02 ] ( 3, 3 ) int -> [rsp+0x70] do-not-enreg[X] addr-exposed ld-addr-op
; V03 arg3 [V03 ] ( 3, 3 ) int -> [rsp+0x78] do-not-enreg[X] addr-exposed ld-addr-op
; V04 arg4 [V04 ] ( 1, 1 ) int -> [rsp+0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V05 arg5 [V05 ] ( 1, 1 ) int -> [rsp+0x88] do-not-enreg[X] addr-exposed ld-addr-op
; V06 arg6 [V06 ] ( 1, 1 ) int -> [rsp+0x90] do-not-enreg[X] addr-exposed ld-addr-op
; V07 loc0 [V07,T11] ( 2, 2 ) int -> rsi
; V08 loc1 [V08,T12] ( 2, 2 ) int -> rdi
; V09 loc2 [V09,T13] ( 2, 2 ) int -> rbx
; V10 loc3 [V10,T14] ( 2, 2 ) int -> rbp
; V11 loc4 [V11,T15] ( 2, 2 ) int -> r14
; V12 loc5 [V12,T16] ( 2, 2 ) int -> r15
;* V13 loc6 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 loc7 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V15 loc8 [V15 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V16 loc9 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V17 loc10 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V18 tmp0 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V19 tmp1 [V19,T17] ( 2, 2 ) int -> rsi
;* V20 tmp2 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V21 tmp3 [V21,T18] ( 2, 2 ) int -> rdi
;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V23 tmp5 [V23,T19] ( 2, 2 ) int -> rbx
;* V24 tmp6 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V25 tmp7 [V25,T20] ( 2, 2 ) int -> rbp
;* V26 tmp8 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V27 tmp9 [V27,T21] ( 2, 2 ) int -> r14
;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V29 tmp11 [V29,T22] ( 2, 2 ) int -> r15
;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V31 tmp13 [V31,T23] ( 2, 2 ) int -> rax
; V32 tmp14 [V32,T01] ( 6, 12 ) int -> rdx ld-addr-op
;* V33 tmp15 [V33 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V34 tmp16 [V34,T02] ( 6, 12 ) int -> rcx ld-addr-op
;* V35 tmp17 [V35 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V36 tmp18 [V36,T03] ( 6, 12 ) int -> r8 ld-addr-op
;* V37 tmp19 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp20 [V38,T04] ( 6, 12 ) int -> r9 ld-addr-op
;* V39 tmp21 [V39 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V40 tmp22 [V40 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V41 tmp23 [V41 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V42 tmp24 [V42,T08] ( 2, 4 ) int -> rdx
;* V43 tmp25 [V43 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V44 tmp26 [V44,T09] ( 2, 4 ) int -> rdx
;* V45 tmp27 [V45 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V46 tmp28 [V46,T10] ( 2, 4 ) int -> rdx
;* V47 tmp29 [V47 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V48 tmp30 [V48 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V49 tmp31 [V49 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V50 tmp32 [V50 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V51 tmp33 [V51,T05] ( 4, 8 ) int -> rdx
; V52 tmp34 [V52,T06] ( 4, 8 ) int -> rdx
; V53 tmp35 [V53,T07] ( 4, 8 ) int -> rdx
; V54 tmp36 [V54,T00] ( 15, 30 ) int -> rax
; V55 OutArgs [V55 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 40
G_M56871_IG01:
4157 push r15
4156 push r14
57 push rdi
56 push rsi
55 push rbp
53 push rbx
4883EC28 sub rsp, 40
894C2460 mov dword ptr [rsp+60H], ecx
89542468 mov dword ptr [rsp+68H], edx
4489442470 mov dword ptr [rsp+70H], r8d
44894C2478 mov dword ptr [rsp+78H], r9d
G_M56871_IG02:
488D4C2460 lea rcx, bword ptr [rsp+60H]
E8B804E75D call System.Int32:GetHashCode():int:this
8BF0 mov esi, eax
488D4C2468 lea rcx, bword ptr [rsp+68H]
E8AC04E75D call System.Int32:GetHashCode():int:this
8BF8 mov edi, eax
488D4C2470 lea rcx, bword ptr [rsp+70H]
E8A004E75D call System.Int32:GetHashCode():int:this
8BD8 mov ebx, eax
488D4C2478 lea rcx, bword ptr [rsp+78H]
E89404E75D call System.Int32:GetHashCode():int:this
8BE8 mov ebp, eax
488D8C2480000000 lea rcx, bword ptr [rsp+80H]
E88504E75D call System.Int32:GetHashCode():int:this
448BF0 mov r14d, eax
488D8C2488000000 lea rcx, bword ptr [rsp+88H]
E87504E75D call System.Int32:GetHashCode():int:this
448BF8 mov r15d, eax
488D8C2490000000 lea rcx, bword ptr [rsp+90H]
E86504E75D call System.Int32:GetHashCode():int:this
69D677CAEB85 imul edx, esi, 0xFFFFFFFF85EBCA77
81C228442324 add edx, 0x24234428
C1C20D rol edx, 13
69D2B179379E imul edx, edx, 0xFFFFFFFF9E3779B1
69CF77CAEB85 imul ecx, edi, 0xFFFFFFFF85EBCA77
81C177CAEB85 add ecx, 0xFFFFFFFF85EBCA77
C1C10D rol ecx, 13
69C9B179379E imul ecx, ecx, 0xFFFFFFFF9E3779B1
4469C377CAEB85 imul r8d, ebx, 0xFFFFFFFF85EBCA77
41C1C00D rol r8d, 13
4569C0B179379E imul r8d, r8d, 0xFFFFFFFF9E3779B1
4469CD77CAEB85 imul r9d, ebp, 0xFFFFFFFF85EBCA77
4181C14F86C861 add r9d, 0x61C8864F
41C1C10D rol r9d, 13
4569C9B179379E imul r9d, r9d, 0xFFFFFFFF9E3779B1
D1C2 rol edx, 1
C1C107 rol ecx, 7
03D1 add edx, ecx
41C1C00C rol r8d, 12
4103D0 add edx, r8d
41C1C112 rol r9d, 18
428D540A1C lea edx, [rdx+r9+28]
4169CE3DAEB2C2 imul ecx, r14d, 0xFFFFFFFFC2B2AE3D
03D1 add edx, ecx
C1C211 rol edx, 17
69D22FEBD427 imul edx, edx, 0x27D4EB2F
4169CF3DAEB2C2 imul ecx, r15d, 0xFFFFFFFFC2B2AE3D
03D1 add edx, ecx
C1C211 rol edx, 17
69D22FEBD427 imul edx, edx, 0x27D4EB2F
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
03D0 add edx, eax
C1C211 rol edx, 17
69C22FEBD427 imul eax, edx, 0x27D4EB2F
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
G_M56871_IG03:
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M56871_IG04:
4883C428 add rsp, 40
5B pop rbx
5D pop rbp
5E pop rsi
5F pop rdi
415E pop r14
415F pop r15
C3 ret
; Total bytes of code 330, prolog size 12 for method System.HashCode:Combine(int,int,int,int,int,int,int):int
; ============================================================
; Assembly listing for method System.HashCode:Combine(int,int,int,int,int,int,int,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX
; optimized code
; rsp based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 3, 3 ) int -> [rsp+0x60] do-not-enreg[X] addr-exposed ld-addr-op
; V01 arg1 [V01 ] ( 3, 3 ) int -> [rsp+0x68] do-not-enreg[X] addr-exposed ld-addr-op
; V02 arg2 [V02 ] ( 3, 3 ) int -> [rsp+0x70] do-not-enreg[X] addr-exposed ld-addr-op
; V03 arg3 [V03 ] ( 3, 3 ) int -> [rsp+0x78] do-not-enreg[X] addr-exposed ld-addr-op
; V04 arg4 [V04 ] ( 1, 1 ) int -> [rsp+0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V05 arg5 [V05 ] ( 1, 1 ) int -> [rsp+0x88] do-not-enreg[X] addr-exposed ld-addr-op
; V06 arg6 [V06 ] ( 1, 1 ) int -> [rsp+0x90] do-not-enreg[X] addr-exposed ld-addr-op
; V07 arg7 [V07 ] ( 1, 1 ) int -> [rsp+0x98] do-not-enreg[X] addr-exposed ld-addr-op
; V08 loc0 [V08,T12] ( 2, 2 ) int -> rsi
; V09 loc1 [V09,T13] ( 2, 2 ) int -> rdi
; V10 loc2 [V10,T14] ( 2, 2 ) int -> rbx
; V11 loc3 [V11,T15] ( 2, 2 ) int -> rbp
; V12 loc4 [V12,T16] ( 2, 2 ) int -> r14
; V13 loc5 [V13,T17] ( 2, 2 ) int -> r15
; V14 loc6 [V14,T18] ( 2, 2 ) int -> r12
;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 loc8 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V17 loc9 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V18 loc10 [V18 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V19 loc11 [V19 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V20 tmp0 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V21 tmp1 [V21,T19] ( 2, 2 ) int -> rsi
;* V22 tmp2 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V23 tmp3 [V23,T20] ( 2, 2 ) int -> rdi
;* V24 tmp4 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V25 tmp5 [V25,T21] ( 2, 2 ) int -> rbx
;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V27 tmp7 [V27,T22] ( 2, 2 ) int -> rbp
;* V28 tmp8 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V29 tmp9 [V29,T23] ( 2, 2 ) int -> r14
;* V30 tmp10 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V31 tmp11 [V31,T24] ( 2, 2 ) int -> r15
;* V32 tmp12 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V33 tmp13 [V33,T25] ( 2, 2 ) int -> r12
;* V34 tmp14 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V35 tmp15 [V35,T26] ( 2, 2 ) int -> rax
; V36 tmp16 [V36,T01] ( 6, 12 ) int -> rdx ld-addr-op
;* V37 tmp17 [V37 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V38 tmp18 [V38,T02] ( 6, 12 ) int -> rcx ld-addr-op
;* V39 tmp19 [V39 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V40 tmp20 [V40,T03] ( 6, 12 ) int -> r8 ld-addr-op
;* V41 tmp21 [V41 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V42 tmp22 [V42,T04] ( 6, 12 ) int -> r9 ld-addr-op
;* V43 tmp23 [V43 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V44 tmp24 [V44,T05] ( 6, 12 ) int -> rdx ld-addr-op
;* V45 tmp25 [V45 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V46 tmp26 [V46,T06] ( 6, 12 ) int -> rcx ld-addr-op
;* V47 tmp27 [V47 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V48 tmp28 [V48,T07] ( 6, 12 ) int -> r8 ld-addr-op
;* V49 tmp29 [V49 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V50 tmp30 [V50,T08] ( 6, 12 ) int -> rax ld-addr-op
;* V51 tmp31 [V51 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V52 tmp32 [V52 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V53 tmp33 [V53 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V54 tmp34 [V54,T09] ( 2, 4 ) int -> rdx
;* V55 tmp35 [V55 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V56 tmp36 [V56,T10] ( 2, 4 ) int -> rdx
;* V57 tmp37 [V57 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V58 tmp38 [V58,T11] ( 2, 4 ) int -> rdx
;* V59 tmp39 [V59 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V60 tmp40 [V60 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V61 tmp41 [V61 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V62 tmp42 [V62 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V63 tmp43 [V63,T00] ( 15, 30 ) int -> rax
; V64 OutArgs [V64 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
;
; Lcl frame size = 32
G_M1605_IG01:
4157 push r15
4156 push r14
4154 push r12
57 push rdi
56 push rsi
55 push rbp
53 push rbx
4883EC20 sub rsp, 32
894C2460 mov dword ptr [rsp+60H], ecx
89542468 mov dword ptr [rsp+68H], edx
4489442470 mov dword ptr [rsp+70H], r8d
44894C2478 mov dword ptr [rsp+78H], r9d
G_M1605_IG02:
488D4C2460 lea rcx, bword ptr [rsp+60H]
E84603E75D call System.Int32:GetHashCode():int:this
8BF0 mov esi, eax
488D4C2468 lea rcx, bword ptr [rsp+68H]
E83A03E75D call System.Int32:GetHashCode():int:this
8BF8 mov edi, eax
488D4C2470 lea rcx, bword ptr [rsp+70H]
E82E03E75D call System.Int32:GetHashCode():int:this
8BD8 mov ebx, eax
488D4C2478 lea rcx, bword ptr [rsp+78H]
E82203E75D call System.Int32:GetHashCode():int:this
8BE8 mov ebp, eax
488D8C2480000000 lea rcx, bword ptr [rsp+80H]
E81303E75D call System.Int32:GetHashCode():int:this
448BF0 mov r14d, eax
488D8C2488000000 lea rcx, bword ptr [rsp+88H]
E80303E75D call System.Int32:GetHashCode():int:this
448BF8 mov r15d, eax
488D8C2490000000 lea rcx, bword ptr [rsp+90H]
E8F302E75D call System.Int32:GetHashCode():int:this
448BE0 mov r12d, eax
488D8C2498000000 lea rcx, bword ptr [rsp+98H]
E8E302E75D call System.Int32:GetHashCode():int:this
69D677CAEB85 imul edx, esi, 0xFFFFFFFF85EBCA77
81C228442324 add edx, 0x24234428
C1C20D rol edx, 13
69D2B179379E imul edx, edx, 0xFFFFFFFF9E3779B1
69CF77CAEB85 imul ecx, edi, 0xFFFFFFFF85EBCA77
81C177CAEB85 add ecx, 0xFFFFFFFF85EBCA77
C1C10D rol ecx, 13
69C9B179379E imul ecx, ecx, 0xFFFFFFFF9E3779B1
4469C377CAEB85 imul r8d, ebx, 0xFFFFFFFF85EBCA77
41C1C00D rol r8d, 13
4569C0B179379E imul r8d, r8d, 0xFFFFFFFF9E3779B1
4469CD77CAEB85 imul r9d, ebp, 0xFFFFFFFF85EBCA77
4181C14F86C861 add r9d, 0x61C8864F
41C1C10D rol r9d, 13
4569C9B179379E imul r9d, r9d, 0xFFFFFFFF9E3779B1
4569D677CAEB85 imul r10d, r14d, 0xFFFFFFFF85EBCA77
4103D2 add edx, r10d
C1C20D rol edx, 13
69D2B179379E imul edx, edx, 0xFFFFFFFF9E3779B1
4569D777CAEB85 imul r10d, r15d, 0xFFFFFFFF85EBCA77
4103CA add ecx, r10d
C1C10D rol ecx, 13
69C9B179379E imul ecx, ecx, 0xFFFFFFFF9E3779B1
4569D477CAEB85 imul r10d, r12d, 0xFFFFFFFF85EBCA77
4503C2 add r8d, r10d
41C1C00D rol r8d, 13
4569C0B179379E imul r8d, r8d, 0xFFFFFFFF9E3779B1
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
4103C1 add eax, r9d
C1C00D rol eax, 13
69C0B179379E imul eax, eax, 0xFFFFFFFF9E3779B1
D1C2 rol edx, 1
C1C107 rol ecx, 7
03D1 add edx, ecx
41C1C00C rol r8d, 12
4103D0 add edx, r8d
C1C012 rol eax, 18
8D440220 lea eax, [rdx+rax+32]
G_M1605_IG03:
8BD0 mov edx, eax
C1EA0F shr edx, 15
33C2 xor eax, edx
69C077CAEB85 imul eax, eax, 0xFFFFFFFF85EBCA77
8BD0 mov edx, eax
C1EA0D shr edx, 13
33C2 xor eax, edx
69C03DAEB2C2 imul eax, eax, 0xFFFFFFFFC2B2AE3D
8BD0 mov edx, eax
C1EA10 shr edx, 16
33C2 xor eax, edx
G_M1605_IG04:
4883C420 add rsp, 32
5B pop rbx
5D pop rbp
5E pop rsi
5F pop rdi
415C pop r12
415E pop r14
415F pop r15
C3 ret
; Total bytes of code 372, prolog size 14 for method System.HashCode:Combine(int,int,int,int,int,int,int,int):int
; ============================================================
@jcdickinson
Copy link
Author

jcdickinson commented Nov 4, 2017

TL;DR - Inlining should not be used for any HashCode public interface method.

RyuJIT Rant

I've noticed that jumps are still present in the Add() code. They shouldn't be: there is enough information to eliminate them entirely. These results might look very different if RyuJIT is improved - possibly exactly like the Combine() code. Changing _length & 0x3 to _length % 3 doesn't change the code (so it's not bit twiddling sorcery tripping up the jitter).

This is the offending C#:

        [MethodImpl(MethodImplOptions.NoInlining)]
        public static int Test_8()
        {
            var hc = new HashCode();
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            hc.Add(_test);
            return hc.ToHashCode();
        }

If hc were a field on a heap object I'd totally understand why no optimization can occur (another thread might access it); however, in this case it is absolutely known that all the code exists 100% in the stack (apart from a static readonly read). At the very least, the jumps could be eliminated. I'm guessing some constraint must be loosened?

/RyuJIT Rant

Combine.asm contains calls to all Combine().

Method Prolog Code
System.HashCode:Combine(int):int 4b 76b
System.HashCode:Combine(int,int):int 5b 112b
System.HashCode:Combine(int,int,int):int 6b 148b
System.HashCode:ToHashCode():int:this 0b 181b
System.HashCode:Combine(int,int,int,int):int 7b 213b
System.HashCode:Combine(int,int,int,int,int):int 8b 251b
System.HashCode:Combine(int,int,int,int,int,int):int 10b 286b
System.HashCode:Combine(int,int,int,int,int,int,int):int 12b 330b
System.HashCode:Combine(int,int,int,int,int,int,int,int):int 14b 372b

Add.asm contains increasing amounts of calls of Add() (up to 8).

Calls to Add Size Difference
1 310b
2 500b 190b
3 719b 219b
4 938b 219b
5 1157b 219b
6 1376b 219b
7 1595b 219b
8 1814b 219b

8 adds are used to simulate when you'd use Add(): when there is no Combine() overload.

Method Mean Error StdDev
'8: Inlined' 20.109 ns 0.0920 ns 0.0861 ns
'8: Non-Inlined' 21.524 ns 0.0653 ns 0.0611 ns
'7: Inlined' 17.914 ns 0.0849 ns 0.0794 ns
'7: Non-Inlined' 18.091 ns 0.1099 ns 0.1028 ns
'6: Inlined' 16.357 ns 0.0916 ns 0.0812 ns
'6: Non-Inlined' 16.282 ns 0.1103 ns 0.0921 ns
'5: Inlined' 14.554 ns 0.0737 ns 0.0689 ns
'5: Non-Inlined' 14.169 ns 0.0663 ns 0.0620 ns
'4: Inlined' 12.550 ns 0.0442 ns 0.0369 ns
'4: Non-Inlined' 12.684 ns 0.0712 ns 0.0666 ns
'3: Inlined' 9.789 ns 0.0377 ns 0.0334 ns
'3: Non-Inlined' 9.519 ns 0.0661 ns 0.0618 ns
'2: Inlined' 7.736 ns 0.0689 ns 0.0644 ns
'2: Non-Inlined' 7.547 ns 0.0452 ns 0.0423 ns
'1: Inlined' 5.796 ns 0.0286 ns 0.0224 ns
'1: Non-Inlined' 5.678 ns 0.0339 ns 0.0317 ns
'Add+ToHashCode: Inlined' 3.836 ns 0.0346 ns 0.0324 ns
'Add+ToHashCode: Non-Inlined' 4.820 ns 0.0286 ns 0.0223 ns
'ToHashCode: Inlined' 10.089 ns 0.0388 ns 0.0363 ns
'ToHashCode: Non-Inlined' 10.091 ns 0.0570 ns 0.0534 ns

@jkotas
Copy link

jkotas commented Nov 4, 2017

It does not look right that System.Int32:GetHashCode() calls are not inlined.

C:\dev\coreclr\bin\Product\Windows_NT.x64.Debug

I think this is the problem - debug version of CoreCLR has CoreLib compiled as debug. You should do the measurements on Release build. If you need jit disassembly for release CoreCLR build, you can copy clrjit.dll from Debug build to Release CoreCLR build.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment