Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
空白の変更を非表示
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
テキストスタイル
外観を変更
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
ScaleResult
作成日
5 年前
差分は期限切れになりません
クリア
エクスポート
共有
説明
182 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
596 行
すべてコピー
192 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
605 行
すべてコピー
; Assembly listing for method DecCalc:ScaleResult(long,int,int):int
; Assembly listing for method DecCalc:ScaleResult(long,int,int):int
; Emitting BLENDED_CODE for X64 CPU with SSE2 - Windows
; Emitting BLENDED_CODE for X64 CPU with SSE2 - Windows
; ReadyToRun compilation
; ReadyToRun compilation
; optimized code
; optimized code
; rsp based frame
; rsp based frame
; fully interruptible
; fully interruptible
; discarded IBC profile data due to mismatch in ILSize
; discarded IBC profile data due to mismatch in ILSize
; Final local variable assignments
; Final local variable assignments
;
;
コピー
コピー済み
コピー
コピー済み
; V00 arg0 [V00,T6
8
] ( 3, 3 ) long -> rbx
; V00 arg0 [V00,T6
2
] ( 3, 3 ) long -> rbx
; V01 arg1 [V01,T02] ( 30, 52 ) int -> rsi
; V01 arg1 [V01,T02] ( 30, 52 ) int -> rsi
コピー
コピー済み
コピー
コピー済み
; V02 arg2 [V02,T4
6
] ( 14, 9 ) int -> rdi
; V02 arg2 [V02,T4
0
] ( 14, 9 ) int -> rdi
; V03 loc0 [V03,T00] ( 34,173 ) long -> rbx
; V03 loc0 [V03,T00] ( 34,173 ) long -> rbx
コピー
コピー済み
コピー
コピー済み
; V04 loc1 [V04,
T30
] ( 17, 24 ) int -> rbp
; V04 loc1 [V04,
T22
] ( 17, 24 ) int -> rbp
; V05 loc2 [V05,T4
9
] ( 5, 9.50) int -> r14
; V05 loc2 [V05,T4
3
] ( 5, 9.50) int -> r14
; V06 loc3 [V06,T1
6
] ( 20, 44 ) int -> r8 ld-addr-op
; V06 loc3 [V06,T1
2
] ( 20, 44 ) int -> r8 ld-addr-op
; V07 loc4 [V07,T01] ( 32,168 ) int -> r15 ld-addr-op
; V07 loc4 [V07,T01] ( 32,168 ) int -> r15 ld-addr-op
コピー
コピー済み
コピー
コピー済み
; V08 loc5 [V08,T3
8
] ( 13, 20 ) int -> rcx
; V08 loc5 [V08,T3
4
] ( 13, 20 ) int -> rcx
; V09 loc6 [V09,
T42
] ( 6, 13.50) int -> registers
; V09 loc6 [V09,
T38
] ( 6, 13.50) int -> registers
; V10 loc7 [V10,T3
9
] ( 7, 17.50) int -> rsi
; V10 loc7 [V10,T3
5
] ( 7, 17.50) int -> rsi
; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
コピー
コピー済み
コピー
コピー済み
; V12 tmp1 [V12,
T40
] ( 2, 16 ) int -> rsi "dup spill"
; V12 tmp1 [V12,
T36
] ( 2, 16 ) int -> rsi "dup spill"
; V13 tmp2 [V13,T
31
] ( 3, 24 ) long -> rax "dup spill"
; V13 tmp2 [V13,T
23
] ( 3, 24 ) long -> rax "dup spill"
; V14 tmp3 [V14,T6
9
] ( 2, 4 ) bool -> rcx "Inlining Arg"
; V14 tmp3 [V14,T6
3
] ( 2, 4 ) bool -> rcx "Inlining Arg"
; V15 tmp4 [V15,
T71
] ( 2, 2.50) ref -> rax class-hnd "Inlining Arg"
; V15 tmp4 [V15,
T65
] ( 2, 2.50) ref -> rax class-hnd "Inlining Arg"
; V16 tmp5 [V16,
T72
] ( 2, 2.50) ref -> rdx class-hnd "Inlining Arg"
; V16 tmp5 [V16,
T66
] ( 2, 2.50) ref -> rdx class-hnd "Inlining Arg"
; V17 tmp6 [V17,
T74
] ( 2, 1 ) int -> rax "Inline return value spill temp"
; V17 tmp6 [V17,
T68
] ( 2, 1 ) int -> rax "Inline return value spill temp"
; V18 tmp7 [V18,T
73
] ( 2, 2 ) int -> rax "Inlining Arg"
; V18 tmp7 [V18,T
67
] ( 2, 2 ) int -> rax "Inlining Arg"
; V19 tmp8 [V19,
T61
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V19 tmp8 [V19,
T53
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V20 tmp9 [V20,
T52
] ( 2, 8 ) int -> r8 "dup spill"
; V20 tmp9 [V20,
T44
] ( 2, 8 ) int -> r8 "dup spill"
;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V22 tmp11 [V22,T1
7
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V22 tmp11 [V22,T1
3
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V23 tmp12 [V23,T
32
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V23 tmp12 [V23,T
24
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V24 tmp13 [V24,T03] ( 3, 48 ) int -> rax "dup spill"
; V24 tmp13 [V24,T03] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V25 tmp14 [V25,
T62
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V25 tmp14 [V25,
T54
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V26 tmp15 [V26,T
53
] ( 2, 8 ) int -> r8 "dup spill"
; V26 tmp15 [V26,T
45
] ( 2, 8 ) int -> r8 "dup spill"
;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V28 tmp17 [V28,T1
8
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V28 tmp17 [V28,T1
4
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V29 tmp18 [V29,T2
6
] (
4, 32
) long -> r15 "Inline stloc first use temp"
; V29 tmp18 [V29,T2
5
] (
3, 24
) long -> r15 "Inline stloc first use temp"
; V30 tmp19 [V30,T04] ( 3, 48 ) int -> rax "dup spill"
; V30 tmp19 [V30,T04] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V31 tmp20 [V31,
T63
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V31 tmp20 [V31,
T55
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V32 tmp21 [V32,T
54
] ( 2, 8 ) int -> r8 "dup spill"
; V32 tmp21 [V32,T
46
] ( 2, 8 ) int -> r8 "dup spill"
;* V33 tmp22 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V33 tmp22 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V34 tmp23 [V34,T1
9
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V34 tmp23 [V34,T1
5
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V35 tmp24 [V35,T2
7
] (
4, 32
) long -> r15 "Inline stloc first use temp"
; V35 tmp24 [V35,T2
6
] (
3, 24
) long -> r15 "Inline stloc first use temp"
; V36 tmp25 [V36,T05] ( 3, 48 ) int -> rax "dup spill"
; V36 tmp25 [V36,T05] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V37 tmp26 [V37,T
64
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V37 tmp26 [V37,T
56
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V38 tmp27 [V38,
T55
] ( 2, 8 ) int -> r8 "dup spill"
; V38 tmp27 [V38,
T47
] ( 2, 8 ) int -> r8 "dup spill"
;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V40 tmp29 [V40,
T20
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V40 tmp29 [V40,
T16
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V41 tmp30 [V41,
T33
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V41 tmp30 [V41,
T27
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V42 tmp31 [V42,T06] ( 3, 48 ) int -> rax "dup spill"
; V42 tmp31 [V42,T06] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V43 tmp32 [V43,T5
0
] (
4
,
8
) int -> r15 "Inline stloc first use temp"
; V43 tmp32 [V43,T5
7
] (
3
,
6
) int -> r15 "Inline stloc first use temp"
; V44 tmp33 [V44,
T56
] ( 2, 8 ) int -> r8 "dup spill"
; V44 tmp33 [V44,
T48
] ( 2, 8 ) int -> r8 "dup spill"
;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V46 tmp35 [V46,T
21
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V46 tmp35 [V46,T
17
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V47 tmp36 [V47,T28] (
4, 32
) long -> r15 "Inline stloc first use temp"
; V47 tmp36 [V47,T28] (
3, 24
) long -> r15 "Inline stloc first use temp"
; V48 tmp37 [V48,T07] ( 3, 48 ) int -> rax "dup spill"
; V48 tmp37 [V48,T07] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V49 tmp38 [V49,T
65
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V49 tmp38 [V49,T
58
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V50 tmp39 [V50,
T57
] ( 2, 8 ) int -> r8 "dup spill"
; V50 tmp39 [V50,
T49
] ( 2, 8 ) int -> r8 "dup spill"
;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V52 tmp41 [V52,
T22
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V52 tmp41 [V52,
T18
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V53 tmp42 [V53,
T34
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V53 tmp42 [V53,
T29
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V54 tmp43 [V54,T08] ( 3, 48 ) int -> rax "dup spill"
; V54 tmp43 [V54,T08] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V55 tmp44 [V55,
T66
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V55 tmp44 [V55,
T59
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V56 tmp45 [V56,T5
8
] ( 2, 8 ) int -> r8 "dup spill"
; V56 tmp45 [V56,T5
0
] ( 2, 8 ) int -> r8 "dup spill"
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V58 tmp47 [V58,
T23
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V58 tmp47 [V58,
T19
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V59 tmp48 [V59,T3
5
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V59 tmp48 [V59,T3
0
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V60 tmp49 [V60,T09] ( 3, 48 ) int -> rax "dup spill"
; V60 tmp49 [V60,T09] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V61 tmp50 [V61,T6
7
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V61 tmp50 [V61,T6
0
] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V62 tmp51 [V62,T5
9
] ( 2, 8 ) int -> r8 "dup spill"
; V62 tmp51 [V62,T5
1
] ( 2, 8 ) int -> r8 "dup spill"
;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V64 tmp53 [V64,T2
4
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V64 tmp53 [V64,T2
0
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V65 tmp54 [V65,T3
6
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V65 tmp54 [V65,T3
1
] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V66 tmp55 [V66,T10] ( 3, 48 ) int -> rax "dup spill"
; V66 tmp55 [V66,T10] ( 3, 48 ) int -> rax "dup spill"
コピー
コピー済み
コピー
コピー済み
; V67 tmp56 [V67,T
5
1] (
4
,
8
) int -> r15 "Inline stloc first use temp"
; V67 tmp56 [V67,T
6
1] (
3
,
6
) int -> r15 "Inline stloc first use temp"
; V68 tmp57 [V68,
T60
] ( 2, 8 ) int -> r8 "dup spill"
; V68 tmp57 [V68,
T52
] ( 2, 8 ) int -> r8 "dup spill"
;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
コピー
コピー済み
コピー
コピー済み
; V70 tmp59 [V70,T2
5
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V70 tmp59 [V70,T2
1
] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V71 tmp60 [V71,T
29
] (
4, 32
) long -> r15 "Inline stloc first use temp"
; V71 tmp60 [V71,T
32
] (
3, 24
) long -> r15 "Inline stloc first use temp"
; V72 tmp61 [V72,T11] ( 3, 48 ) int -> rdx "dup spill"
; V72 tmp61 [V72,T11] ( 3, 48 ) int -> rdx "dup spill"
コピー
コピー済み
コピー
コピー済み
; V73 tmp62 [V73,
T41
] ( 2, 16 ) bool -> rcx "Inlining Arg"
; V73 tmp62 [V73,
T37
] ( 2, 16 ) bool -> rcx "Inlining Arg"
; V74 tmp63 [V74,T4
7
] ( 2, 10 ) ref -> rax class-hnd "Inlining Arg"
; V74 tmp63 [V74,T4
1
] ( 2, 10 ) ref -> rax class-hnd "Inlining Arg"
; V75 tmp64 [V75,T4
8
] ( 2, 10 ) ref -> rdx class-hnd "Inlining Arg"
; V75 tmp64 [V75,T4
2
] ( 2, 10 ) ref -> rdx class-hnd "Inlining Arg"
; V76 cse0 [V76,T
43
] ( 3, 12 ) ref -> rdx "CSE - conservative"
; V76 cse0 [V76,T
39
] ( 3, 12 ) ref -> rdx "CSE - conservative"
; V77 cse1 [V77,
T70
] ( 3, 3 ) ref -> rdx "CSE - conservative"
; V77 cse1 [V77,
T64
] ( 3, 3 ) ref -> rdx "CSE - conservative"
; V78 rat0 [V78,T3
7
] ( 3, 24 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
; V78 rat0 [V78,T3
3
] ( 3, 24 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
; V79 rat1 [V79,T12] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
; V80 rat2 [V80,T13] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
; V81 rat3 [V81,T44] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
; V82 rat4 [V82,T14] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
; V83 rat5 [V83,T45] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
; V84 rat6 [V84,T15] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
;
;
; Lcl frame size = 32
; Lcl frame size = 32
G_M57020_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M57020_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push r15
push r15
push r14
push r14
push r12
push r12
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 32
sub rsp, 32
mov rbx, rcx
mov rbx, rcx
mov esi, edx
mov esi, edx
mov edi, r8d
mov edi, r8d
;; bbWeight=1 PerfScore 8.00
;; bbWeight=1 PerfScore 8.00
G_M57020_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 6
cmp esi, 6
setb cl
setb cl
movzx rcx, cl
movzx rcx, cl
mov rdx, qword ptr [(reloc)]
mov rdx, qword ptr [(reloc)]
mov rdx, gword ptr [rdx]
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
; gcrRegs +[rdx]
mov rax, rdx
mov rax, rdx
; gcrRegs +[rax]
; gcrRegs +[rax]
test ecx, ecx
test ecx, ecx
jne SHORT G_M57020_IG04
jne SHORT G_M57020_IG04
;; bbWeight=1 PerfScore 7.00
;; bbWeight=1 PerfScore 7.00
G_M57020_IG03: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref
G_M57020_IG03: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref
mov rcx, rax
mov rcx, rax
; gcrRegs +[rcx]
; gcrRegs +[rcx]
call [hackishModuleName:hackishMethodName()]
call [hackishModuleName:hackishMethodName()]
; gcrRegs -[rax rcx rdx]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
; gcr arg pop 0
;; bbWeight=0.25 PerfScore 0.81
;; bbWeight=0.25 PerfScore 0.81
G_M57020_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor ebp, ebp
xor ebp, ebp
cmp esi, 2
cmp esi, 2
jbe SHORT G_M57020_IG06
jbe SHORT G_M57020_IG06
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M57020_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ebp, esi
mov ebp, esi
shl ebp, 5
shl ebp, 5
add ebp, -65
add ebp, -65
mov eax, esi
mov eax, esi
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
lzcnt eax, eax
lzcnt eax, eax
sub ebp, eax
sub ebp, eax
imul ebp, ebp, 77
imul ebp, ebp, 77
sar ebp, 8
sar ebp, 8
inc ebp
inc ebp
cmp ebp, edi
cmp ebp, edi
jg G_M57020_IG50
jg G_M57020_IG50
;; bbWeight=0.50 PerfScore 6.25
;; bbWeight=0.50 PerfScore 6.25
G_M57020_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea eax, [rdi-28]
lea eax, [rdi-28]
cmp ebp, eax
cmp ebp, eax
jge SHORT G_M57020_IG08
jge SHORT G_M57020_IG08
;; bbWeight=1 PerfScore 1.75
;; bbWeight=1 PerfScore 1.75
G_M57020_IG07: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG07: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea ebp, [rdi-28]
lea ebp, [rdi-28]
;; bbWeight=0.50 PerfScore 0.25
;; bbWeight=0.50 PerfScore 0.25
G_M57020_IG08: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG08: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test ebp, ebp
test ebp, ebp
je G_M57020_IG48
je G_M57020_IG48
;; bbWeight=1 PerfScore 1.25
;; bbWeight=1 PerfScore 1.25
G_M57020_IG09: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG09: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
sub edi, ebp
sub edi, ebp
xor r14d, r14d
xor r14d, r14d
xor r15d, r15d
xor r15d, r15d
;; bbWeight=0.50 PerfScore 0.38
;; bbWeight=0.50 PerfScore 0.38
G_M57020_IG10: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG10: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
or r14d, r15d
or r14d, r15d
lea r12d, [rbp-1]
lea r12d, [rbp-1]
cmp r12d, 7
cmp r12d, 7
ja G_M57020_IG35
ja G_M57020_IG35
mov eax, r12d
mov eax, r12d
lea rdx, [reloc @RWD00]
lea rdx, [reloc @RWD00]
mov edx, dword ptr [rdx+4*rax]
mov edx, dword ptr [rdx+4*rax]
lea rcx, G_M57020_IG02
lea rcx, G_M57020_IG02
add rdx, rcx
add rdx, rcx
jmp rdx
jmp rdx
;; bbWeight=4 PerfScore 32.00
;; bbWeight=4 PerfScore 32.00
G_M57020_IG11: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG11: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov eax, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*rax]
コピー
コピー済み
コピー
コピー済み
mov
edx
, 0xD1FFAB1E
mov
r8d
, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul
edx:eax, edx
i
mul
r8, rax
shr
edx, 3
shr
r8, 35
mov r8d, edx
lea eax, [r8+4*r8]
lea eax, [r8+4*r8]
add eax, eax
add eax, eax
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG13
jl SHORT G_M57020_IG13
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore 19.
50
;; bbWeight=2 PerfScore 19.
00
G_M57020_IG12: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG12: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 3
shr rdx, 3
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
lea eax, [rax+4*rax]
lea eax, [rax+4*rax]
add eax, eax
add eax, eax
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG12
jge SHORT G_M57020_IG12
;; bbWeight=8 PerfScore 108.00
;; bbWeight=8 PerfScore 108.00
G_M57020_IG13: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG13: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 10
mov ecx, 10
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG14: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG14: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
コピー
コピー済み
コピー
コピー済み
mov
eax
, esi
mov
r8d
, esi
mov r15d, dword ptr [rbx+4*
rax]
mov r15d, dword ptr [rbx+4*
r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul
edx:e
ax,
edx
i
mul
r8, r
ax,
0xD1FFAB1E
shr
edx, 5
shr
r8, 37
mov r8d, edx
imul eax, r8d, 100
imul eax, r8d, 100
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG16
jl SHORT G_M57020_IG16
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
22
.00
;; bbWeight=2 PerfScore
21
.00
G_M57020_IG15: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG15: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
コピー
コピー済み
コピー
コピー済み
shr rax, 2
mul rdx:rax, rdx
mul rdx:rax, rdx
コピー
コピー済み
コピー
コピー済み
mov rax, r15
shr r
d
x,
2
sub rax, rdx
mov
e
ax,
edx
shr r
a
x,
1
add
r
ax,
rdx
shr rax, 6
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 100
imul eax, eax, 100
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG15
jge SHORT G_M57020_IG15
コピー
コピー済み
コピー
コピー済み
;; bbWeight=8 PerfScore
126
.00
;; bbWeight=8 PerfScore
134
.00
G_M57020_IG16: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG16: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 100
mov ecx, 100
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG17: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG17: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
コピー
コピー済み
コピー
コピー済み
mov
eax
, esi
mov
r8d
, esi
mov r15d, dword ptr [rbx+4*
rax]
mov r15d, dword ptr [rbx+4*
r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul
edx:e
ax,
edx
i
mul
r8, r
ax,
0xD1FFAB1E
shr
edx, 6
shr
r8, 38
mov r8d, edx
imul eax, r8d, 0x3E8
imul eax, r8d, 0x3E8
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG19
jl SHORT G_M57020_IG19
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
22
.00
;; bbWeight=2 PerfScore
21
.00
G_M57020_IG18: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG18: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
コピー
コピー済み
コピー
コピー済み
shr rax, 3
mul rdx:rax, rdx
mul rdx:rax, rdx
コピー
コピー済み
コピー
コピー済み
mov rax, r15
shr r
d
x,
4
sub rax, rdx
mov
e
ax,
edx
shr r
a
x,
1
add
r
ax,
rdx
shr rax, 9
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0x3E8
imul eax, eax, 0x3E8
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG18
jge SHORT G_M57020_IG18
コピー
コピー済み
コピー
コピー済み
;; bbWeight=8 PerfScore
126
.00
;; bbWeight=8 PerfScore
134
.00
G_M57020_IG19: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG19: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x3E8
mov ecx, 0x3E8
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG20: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG20: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
コピー
コピー済み
コピー
コピー済み
mov
eax
, esi
mov
r8d
, esi
mov r15d, dword ptr [rbx+4*
rax
]
mov r15d, dword ptr [rbx+4*
r8
]
mov
edx
, 0xD1FFAB1E
mov
r8d
, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul
edx:eax, edx
i
mul
r8, rax
shr
edx, 13
shr
r8, 45
mov r8d, edx
imul eax, r8d, 0x2710
imul eax, r8d, 0x2710
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG22
jl SHORT G_M57020_IG22
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
22.00
;; bbWeight=2 PerfScore
21.50
G_M57020_IG21: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG21: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 11
shr rdx, 11
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0x2710
imul eax, eax, 0x2710
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG21
jge SHORT G_M57020_IG21
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG22: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG22: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x2710
mov ecx, 0x2710
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG23: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG23: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
コピー
コピー済み
コピー
コピー済み
mov
eax
, esi
mov
r8d
, esi
mov r15d, dword ptr [rbx+4*
rax]
mov r15d, dword ptr [rbx+4*
r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul edx:eax, edx
shr
eax, 5
mov r8d, r15d
imul
r8
, rax, 0xD1FFAB1E
sub r8d, edx
shr r8
, 39
shr
r8d, 1
add
r8
d, edx
shr r8
d, 16
imul eax, r8d, 0x186A0
imul eax, r8d, 0x186A0
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG25
jl SHORT G_M57020_IG25
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
24
.00
;; bbWeight=2 PerfScore
25
.00
G_M57020_IG24: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG24: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
コピー
コピー済み
コピー
コピー済み
shr rax, 5
mul rdx:rax, rdx
mul rdx:rax, rdx
コピー
コピー済み
コピー
コピー済み
mov rax, r15
shr r
d
x,
7
sub rax, rdx
mov
e
ax,
edx
shr r
a
x,
1
add
r
ax,
rdx
shr rax, 16
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0x186A0
imul eax, eax, 0x186A0
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG24
jge SHORT G_M57020_IG24
コピー
コピー済み
コピー
コピー済み
;; bbWeight=8 PerfScore
126
.00
;; bbWeight=8 PerfScore
134
.00
G_M57020_IG25: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG25: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x186A0
mov ecx, 0x186A0
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG26: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG26: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
コピー
コピー済み
コピー
コピー済み
mov
eax
, esi
mov
r8d
, esi
mov r15d, dword ptr [rbx+4*
rax]
mov r15d, dword ptr [rbx+4*
r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul
edx:e
ax,
edx
i
mul
r8, r
ax,
0xD1FFAB1E
shr
edx, 18
shr
r8, 50
mov r8d, edx
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG28
jl SHORT G_M57020_IG28
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
22
.00
;; bbWeight=2 PerfScore
21
.00
G_M57020_IG27: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG27: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 18
shr rdx, 18
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0xD1FFAB1E
imul eax, eax, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG27
jge SHORT G_M57020_IG27
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG28: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG28: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG29: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG29: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
コピー
コピー済み
コピー
コピー済み
mov
eax
, esi
mov
r8d
, esi
mov r15d, dword ptr [rbx+4*
rax]
mov r15d, dword ptr [rbx+4*
r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul
edx:e
ax,
edx
i
mul
r8, r
ax,
0xD1FFAB1E
shr
edx, 22
shr
r8, 54
mov r8d, edx
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG31
jl SHORT G_M57020_IG31
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
22
.00
;; bbWeight=2 PerfScore
21
.00
G_M57020_IG30: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG30: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 23
shr rdx, 23
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0xD1FFAB1E
imul eax, eax, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG30
jge SHORT G_M57020_IG30
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG31: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG31: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG32: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG32: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
コピー
コピー済み
コピー
コピー済み
mov
eax
, esi
mov
r8d
, esi
mov r15d, dword ptr [rbx+4*
rax]
mov r15d, dword ptr [rbx+4*
r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul
edx:e
ax,
edx
i
mul
r8, r
ax,
0xD1FFAB1E
shr
edx, 25
shr
r8, 57
mov r8d, edx
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG34
jl SHORT G_M57020_IG34
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
22
.00
;; bbWeight=2 PerfScore
21
.00
G_M57020_IG33: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG33: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 26
shr rdx, 26
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0xD1FFAB1E
imul eax, eax, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG33
jge SHORT G_M57020_IG33
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG34: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG34: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
jmp SHORT G_M57020_IG38
jmp SHORT G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG35: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG35: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov eax, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*rax]
コピー
コピー済み
コピー
コピー済み
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
コピー
コピー済み
コピー
コピー済み
mul edx:eax, edx
shr
eax, 9
mov r8d, r15d
imul
r8
, rax, 0xD1FFAB1E
sub r8d, edx
shr r8
, 39
shr
r8d, 1
add
r8
d, edx
shr r8
d, 29
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG37
jl SHORT G_M57020_IG37
コピー
コピー済み
コピー
コピー済み
;; bbWeight=2 PerfScore
24
.00
;; bbWeight=2 PerfScore
25
.00
G_M57020_IG36: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG36: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
コピー
コピー済み
コピー
コピー済み
shr rax, 9
mul rdx:rax, rdx
mul rdx:rax, rdx
コピー
コピー済み
コピー
コピー済み
mov rax, r15
shr rdx,
11
sub rax, rdx
shr rax, 1
add rdx, rax
shr rdx,
29
mov eax, ecx
mov eax, ecx
mov dword ptr [rbx+4*rax], edx
mov dword ptr [rbx+4*rax], edx
imul edx, edx, 0xD1FFAB1E
imul edx, edx, 0xD1FFAB1E
sub r15d, edx
sub r15d, edx
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG36
jge SHORT G_M57020_IG36
コピー
コピー済み
コピー
コピー済み
;; bbWeight=8 PerfScore 1
26
.00
;; bbWeight=8 PerfScore 1
32
.00
G_M57020_IG37: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG37: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M57020_IG38: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG38: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
mov edx, esi
mov dword ptr [rbx+4*rdx], r8d
mov dword ptr [rbx+4*rdx], r8d
test r8d, r8d
test r8d, r8d
jne SHORT G_M57020_IG40
jne SHORT G_M57020_IG40
;; bbWeight=4 PerfScore 10.00
;; bbWeight=4 PerfScore 10.00
G_M57020_IG39: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG39: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test esi, esi
test esi, esi
je SHORT G_M57020_IG40
je SHORT G_M57020_IG40
dec esi
dec esi
;; bbWeight=2 PerfScore 3.00
;; bbWeight=2 PerfScore 3.00
G_M57020_IG40: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG40: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
add ebp, -9
add ebp, -9
test ebp, ebp
test ebp, ebp
jg G_M57020_IG10
jg G_M57020_IG10
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M57020_IG41: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG41: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 2
cmp esi, 2
jbe SHORT G_M57020_IG42
jbe SHORT G_M57020_IG42
test edi, edi
test edi, edi
je G_M57020_IG50
je G_M57020_IG50
mov ebp, 1
mov ebp, 1
dec edi
dec edi
jmp G_M57020_IG10
jmp G_M57020_IG10
;; bbWeight=0.50 PerfScore 2.50
;; bbWeight=0.50 PerfScore 2.50
G_M57020_IG42: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG42: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
shr ecx, 1
shr ecx, 1
cmp ecx, r15d
cmp ecx, r15d
ja SHORT G_M57020_IG48
ja SHORT G_M57020_IG48
cmp ecx, r15d
cmp ecx, r15d
jb SHORT G_M57020_IG43
jb SHORT G_M57020_IG43
mov ecx, dword ptr [rbx]
mov ecx, dword ptr [rbx]
and ecx, 1
and ecx, 1
or ecx, r14d
or ecx, r14d
je SHORT G_M57020_IG48
je SHORT G_M57020_IG48
;; bbWeight=0.50 PerfScore 3.25
;; bbWeight=0.50 PerfScore 3.25
G_M57020_IG43: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG43: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [rbx]
mov eax, dword ptr [rbx]
inc eax
inc eax
mov dword ptr [rbx], eax
mov dword ptr [rbx], eax
test eax, eax
test eax, eax
jne SHORT G_M57020_IG48
jne SHORT G_M57020_IG48
xor esi, esi
xor esi, esi
;; bbWeight=0.50 PerfScore 2.38
;; bbWeight=0.50 PerfScore 2.38
G_M57020_IG44: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG44: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [rsi+1]
lea ecx, [rsi+1]
cmp ecx, 6
cmp ecx, 6
setb cl
setb cl
movzx rcx, cl
movzx rcx, cl
mov rdx, qword ptr [(reloc)]
mov rdx, qword ptr [(reloc)]
mov rdx, gword ptr [rdx]
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
; gcrRegs +[rdx]
mov rax, rdx
mov rax, rdx
; gcrRegs +[rax]
; gcrRegs +[rax]
test ecx, ecx
test ecx, ecx
jne SHORT G_M57020_IG46
jne SHORT G_M57020_IG46
;; bbWeight=4 PerfScore 30.00
;; bbWeight=4 PerfScore 30.00
コピー
コピー済み
コピー
コピー済み
G_M57020_IG45: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=000000
G_M57020_IG45: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=000000
00 {}, byref
mov rcx, rax
; gcrRegs +[rcx]
call [hackishModuleName:hackishMethodName()]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
;; bbWeight=1 PerfScore 3.25
G_M57020_IG46: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc esi
mov eax, esi
lea rax, [rbx+4*rax]
mov edx, dword ptr [rax]
inc edx
mov dword ptr [rax], edx
test edx, edx
je SHORT G_M57020_IG44
;; bbWeight=4 PerfScore 22.00
G_M57020_IG47: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 2
jbe SHORT G_M57020_IG48
test edi, edi
je SHORT G_M57020_IG50
xor r14d, r14d
xor r15d, r15d
mov ebp, 1
dec edi
jmp G_M57020_IG10
;; bbWeight=0.50 PerfScore 2.75
G_M57020_IG48: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi
;; bbWeight=1 PerfScore 0.25
G_M57020_IG49: ; , epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r14
pop r15
ret
;; bbWeight=1 PerfScore 4.75
G_M57020_IG50: ; gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 15
保存された差分
原文
ファイルを開く
; Assembly listing for method DecCalc:ScaleResult(long,int,int):int ; Emitting BLENDED_CODE for X64 CPU with SSE2 - Windows ; ReadyToRun compilation ; optimized code ; rsp based frame ; fully interruptible ; discarded IBC profile data due to mismatch in ILSize ; Final local variable assignments ; ; V00 arg0 [V00,T68] ( 3, 3 ) long -> rbx ; V01 arg1 [V01,T02] ( 30, 52 ) int -> rsi ; V02 arg2 [V02,T46] ( 14, 9 ) int -> rdi ; V03 loc0 [V03,T00] ( 34,173 ) long -> rbx ; V04 loc1 [V04,T30] ( 17, 24 ) int -> rbp ; V05 loc2 [V05,T49] ( 5, 9.50) int -> r14 ; V06 loc3 [V06,T16] ( 20, 44 ) int -> r8 ld-addr-op ; V07 loc4 [V07,T01] ( 32,168 ) int -> r15 ld-addr-op ; V08 loc5 [V08,T38] ( 13, 20 ) int -> rcx ; V09 loc6 [V09,T42] ( 6, 13.50) int -> registers ; V10 loc7 [V10,T39] ( 7, 17.50) int -> rsi ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V12 tmp1 [V12,T40] ( 2, 16 ) int -> rsi "dup spill" ; V13 tmp2 [V13,T31] ( 3, 24 ) long -> rax "dup spill" ; V14 tmp3 [V14,T69] ( 2, 4 ) bool -> rcx "Inlining Arg" ; V15 tmp4 [V15,T71] ( 2, 2.50) ref -> rax class-hnd "Inlining Arg" ; V16 tmp5 [V16,T72] ( 2, 2.50) ref -> rdx class-hnd "Inlining Arg" ; V17 tmp6 [V17,T74] ( 2, 1 ) int -> rax "Inline return value spill temp" ; V18 tmp7 [V18,T73] ( 2, 2 ) int -> rax "Inlining Arg" ; V19 tmp8 [V19,T61] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V20 tmp9 [V20,T52] ( 2, 8 ) int -> r8 "dup spill" ;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V22 tmp11 [V22,T17] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V23 tmp12 [V23,T32] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V24 tmp13 [V24,T03] ( 3, 48 ) int -> rax "dup spill" ; V25 tmp14 [V25,T62] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V26 tmp15 [V26,T53] ( 2, 8 ) int -> r8 "dup spill" ;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V28 tmp17 [V28,T18] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V29 tmp18 [V29,T26] ( 4, 32 ) long -> r15 "Inline stloc first use temp" ; V30 tmp19 [V30,T04] ( 3, 48 ) int -> rax "dup spill" ; V31 tmp20 [V31,T63] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V32 tmp21 [V32,T54] ( 2, 8 ) int -> r8 "dup spill" ;* V33 tmp22 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp23 [V34,T19] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V35 tmp24 [V35,T27] ( 4, 32 ) long -> r15 "Inline stloc first use temp" ; V36 tmp25 [V36,T05] ( 3, 48 ) int -> rax "dup spill" ; V37 tmp26 [V37,T64] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V38 tmp27 [V38,T55] ( 2, 8 ) int -> r8 "dup spill" ;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V40 tmp29 [V40,T20] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V41 tmp30 [V41,T33] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V42 tmp31 [V42,T06] ( 3, 48 ) int -> rax "dup spill" ; V43 tmp32 [V43,T50] ( 4, 8 ) int -> r15 "Inline stloc first use temp" ; V44 tmp33 [V44,T56] ( 2, 8 ) int -> r8 "dup spill" ;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V46 tmp35 [V46,T21] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V47 tmp36 [V47,T28] ( 4, 32 ) long -> r15 "Inline stloc first use temp" ; V48 tmp37 [V48,T07] ( 3, 48 ) int -> rax "dup spill" ; V49 tmp38 [V49,T65] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V50 tmp39 [V50,T57] ( 2, 8 ) int -> r8 "dup spill" ;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V52 tmp41 [V52,T22] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V53 tmp42 [V53,T34] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V54 tmp43 [V54,T08] ( 3, 48 ) int -> rax "dup spill" ; V55 tmp44 [V55,T66] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V56 tmp45 [V56,T58] ( 2, 8 ) int -> r8 "dup spill" ;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V58 tmp47 [V58,T23] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V59 tmp48 [V59,T35] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V60 tmp49 [V60,T09] ( 3, 48 ) int -> rax "dup spill" ; V61 tmp50 [V61,T67] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V62 tmp51 [V62,T59] ( 2, 8 ) int -> r8 "dup spill" ;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V64 tmp53 [V64,T24] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V65 tmp54 [V65,T36] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V66 tmp55 [V66,T10] ( 3, 48 ) int -> rax "dup spill" ; V67 tmp56 [V67,T51] ( 4, 8 ) int -> r15 "Inline stloc first use temp" ; V68 tmp57 [V68,T60] ( 2, 8 ) int -> r8 "dup spill" ;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V70 tmp59 [V70,T25] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V71 tmp60 [V71,T29] ( 4, 32 ) long -> r15 "Inline stloc first use temp" ; V72 tmp61 [V72,T11] ( 3, 48 ) int -> rdx "dup spill" ; V73 tmp62 [V73,T41] ( 2, 16 ) bool -> rcx "Inlining Arg" ; V74 tmp63 [V74,T47] ( 2, 10 ) ref -> rax class-hnd "Inlining Arg" ; V75 tmp64 [V75,T48] ( 2, 10 ) ref -> rdx class-hnd "Inlining Arg" ; V76 cse0 [V76,T43] ( 3, 12 ) ref -> rdx "CSE - conservative" ; V77 cse1 [V77,T70] ( 3, 3 ) ref -> rdx "CSE - conservative" ; V78 rat0 [V78,T37] ( 3, 24 ) int -> r12 "ReplaceWithLclVar is creating a new local variable" ; V79 rat1 [V79,T12] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" ; V80 rat2 [V80,T13] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" ; V81 rat3 [V81,T44] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; V82 rat4 [V82,T14] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" ; V83 rat5 [V83,T45] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable" ; V84 rat6 [V84,T15] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 32 G_M57020_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 32 mov rbx, rcx mov esi, edx mov edi, r8d ;; bbWeight=1 PerfScore 8.00 G_M57020_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp esi, 6 setb cl movzx rcx, cl mov rdx, qword ptr [(reloc)] mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] mov rax, rdx ; gcrRegs +[rax] test ecx, ecx jne SHORT G_M57020_IG04 ;; bbWeight=1 PerfScore 7.00 G_M57020_IG03: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref mov rcx, rax ; gcrRegs +[rcx] call [hackishModuleName:hackishMethodName()] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 ;; bbWeight=0.25 PerfScore 0.81 G_M57020_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz xor ebp, ebp cmp esi, 2 jbe SHORT G_M57020_IG06 ;; bbWeight=1 PerfScore 1.50 G_M57020_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ebp, esi shl ebp, 5 add ebp, -65 mov eax, esi mov eax, dword ptr [rbx+4*rax] lzcnt eax, eax sub ebp, eax imul ebp, ebp, 77 sar ebp, 8 inc ebp cmp ebp, edi jg G_M57020_IG50 ;; bbWeight=0.50 PerfScore 6.25 G_M57020_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz lea eax, [rdi-28] cmp ebp, eax jge SHORT G_M57020_IG08 ;; bbWeight=1 PerfScore 1.75 G_M57020_IG07: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref lea ebp, [rdi-28] ;; bbWeight=0.50 PerfScore 0.25 G_M57020_IG08: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test ebp, ebp je G_M57020_IG48 ;; bbWeight=1 PerfScore 1.25 G_M57020_IG09: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref sub edi, ebp xor r14d, r14d xor r15d, r15d ;; bbWeight=0.50 PerfScore 0.38 G_M57020_IG10: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref or r14d, r15d lea r12d, [rbp-1] cmp r12d, 7 ja G_M57020_IG35 mov eax, r12d lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea rcx, G_M57020_IG02 add rdx, rcx jmp rdx ;; bbWeight=4 PerfScore 32.00 G_M57020_IG11: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx shr edx, 3 mov r8d, edx lea eax, [r8+4*r8] add eax, eax sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG13 ;; bbWeight=2 PerfScore 19.50 G_M57020_IG12: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 3 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax lea eax, [rax+4*rax] add eax, eax sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG12 ;; bbWeight=8 PerfScore 108.00 G_M57020_IG13: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 10 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG14: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx shr edx, 5 mov r8d, edx imul eax, r8d, 100 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG16 ;; bbWeight=2 PerfScore 22.00 G_M57020_IG15: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx mov rax, r15 sub rax, rdx shr rax, 1 add rax, rdx shr rax, 6 mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 100 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG15 ;; bbWeight=8 PerfScore 126.00 G_M57020_IG16: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 100 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG17: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx shr edx, 6 mov r8d, edx imul eax, r8d, 0x3E8 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG19 ;; bbWeight=2 PerfScore 22.00 G_M57020_IG18: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx mov rax, r15 sub rax, rdx shr rax, 1 add rax, rdx shr rax, 9 mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0x3E8 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG18 ;; bbWeight=8 PerfScore 126.00 G_M57020_IG19: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0x3E8 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG20: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx shr edx, 13 mov r8d, edx imul eax, r8d, 0x2710 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG22 ;; bbWeight=2 PerfScore 22.00 G_M57020_IG21: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 11 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0x2710 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG21 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG22: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0x2710 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG23: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx mov r8d, r15d sub r8d, edx shr r8d, 1 add r8d, edx shr r8d, 16 imul eax, r8d, 0x186A0 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG25 ;; bbWeight=2 PerfScore 24.00 G_M57020_IG24: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx mov rax, r15 sub rax, rdx shr rax, 1 add rax, rdx shr rax, 16 mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0x186A0 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG24 ;; bbWeight=8 PerfScore 126.00 G_M57020_IG25: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0x186A0 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG26: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx shr edx, 18 mov r8d, edx imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG28 ;; bbWeight=2 PerfScore 22.00 G_M57020_IG27: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 18 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0xD1FFAB1E sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG27 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG28: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG29: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx shr edx, 22 mov r8d, edx imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG31 ;; bbWeight=2 PerfScore 22.00 G_M57020_IG30: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 23 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0xD1FFAB1E sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG30 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG31: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG32: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx shr edx, 25 mov r8d, edx imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG34 ;; bbWeight=2 PerfScore 22.00 G_M57020_IG33: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 26 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0xD1FFAB1E sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG33 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG34: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E jmp SHORT G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG35: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov edx, 0xD1FFAB1E mov eax, r15d mul edx:eax, edx mov r8d, r15d sub r8d, edx shr r8d, 1 add r8d, edx shr r8d, 29 imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG37 ;; bbWeight=2 PerfScore 24.00 G_M57020_IG36: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx mov rax, r15 sub rax, rdx shr rax, 1 add rdx, rax shr rdx, 29 mov eax, ecx mov dword ptr [rbx+4*rax], edx imul edx, edx, 0xD1FFAB1E sub r15d, edx dec ecx test ecx, ecx jge SHORT G_M57020_IG36 ;; bbWeight=8 PerfScore 126.00 G_M57020_IG37: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ;; bbWeight=2 PerfScore 0.50 G_M57020_IG38: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov edx, esi mov dword ptr [rbx+4*rdx], r8d test r8d, r8d jne SHORT G_M57020_IG40 ;; bbWeight=4 PerfScore 10.00 G_M57020_IG39: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz test esi, esi je SHORT G_M57020_IG40 dec esi ;; bbWeight=2 PerfScore 3.00 G_M57020_IG40: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref add ebp, -9 test ebp, ebp jg G_M57020_IG10 ;; bbWeight=4 PerfScore 6.00 G_M57020_IG41: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp esi, 2 jbe SHORT G_M57020_IG42 test edi, edi je G_M57020_IG50 mov ebp, 1 dec edi jmp G_M57020_IG10 ;; bbWeight=0.50 PerfScore 2.50 G_M57020_IG42: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz shr ecx, 1 cmp ecx, r15d ja SHORT G_M57020_IG48 cmp ecx, r15d jb SHORT G_M57020_IG43 mov ecx, dword ptr [rbx] and ecx, 1 or ecx, r14d je SHORT G_M57020_IG48 ;; bbWeight=0.50 PerfScore 3.25 G_M57020_IG43: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [rbx] inc eax mov dword ptr [rbx], eax test eax, eax jne SHORT G_M57020_IG48 xor esi, esi ;; bbWeight=0.50 PerfScore 2.38 G_M57020_IG44: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz lea ecx, [rsi+1] cmp ecx, 6 setb cl movzx rcx, cl mov rdx, qword ptr [(reloc)] mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] mov rax, rdx ; gcrRegs +[rax] test ecx, ecx jne SHORT G_M57020_IG46 ;; bbWeight=4 PerfScore 30.00 G_M57020_IG45: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref mov rcx, rax ; gcrRegs +[rcx] call [hackishModuleName:hackishMethodName()] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 ;; bbWeight=1 PerfScore 3.25 G_M57020_IG46: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz inc esi mov eax, esi lea rax, [rbx+4*rax] mov edx, dword ptr [rax] inc edx mov dword ptr [rax], edx test edx, edx je SHORT G_M57020_IG44 ;; bbWeight=4 PerfScore 22.00 G_M57020_IG47: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp esi, 2 jbe SHORT G_M57020_IG48 test edi, edi je SHORT G_M57020_IG50 xor r14d, r14d xor r15d, r15d mov ebp, 1 dec edi jmp G_M57020_IG10 ;; bbWeight=0.50 PerfScore 2.75 G_M57020_IG48: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, edi ;; bbWeight=1 PerfScore 0.25 G_M57020_IG49: ; , epilog, nogc, extend add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M57020_IG50: ; gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref mov ecx, 15 call [System.Number:ThrowOverflowException(int)] ; gcr arg pop 0 int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M57020_IG11 - G_M57020_IG02 dd G_M57020_IG14 - G_M57020_IG02 dd G_M57020_IG17 - G_M57020_IG02 dd G_M57020_IG20 - G_M57020_IG02 dd G_M57020_IG23 - G_M57020_IG02 dd G_M57020_IG26 - G_M57020_IG02 dd G_M57020_IG29 - G_M57020_IG02 dd G_M57020_IG32 - G_M57020_IG02 ; Total bytes of code 1391, prolog size 22, PerfScore 1608.41, instruction count 435, allocated bytes for code 1391 (MethodHash=ebe22143) for method DecCalc:ScaleResult(long,int,int):int ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00 SizeOfProlog : 0x0E CountOfUnwindCodes: 8 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
変更されたテキスト
ファイルを開く
; Assembly listing for method DecCalc:ScaleResult(long,int,int):int ; Emitting BLENDED_CODE for X64 CPU with SSE2 - Windows ; ReadyToRun compilation ; optimized code ; rsp based frame ; fully interruptible ; discarded IBC profile data due to mismatch in ILSize ; Final local variable assignments ; ; V00 arg0 [V00,T62] ( 3, 3 ) long -> rbx ; V01 arg1 [V01,T02] ( 30, 52 ) int -> rsi ; V02 arg2 [V02,T40] ( 14, 9 ) int -> rdi ; V03 loc0 [V03,T00] ( 34,173 ) long -> rbx ; V04 loc1 [V04,T22] ( 17, 24 ) int -> rbp ; V05 loc2 [V05,T43] ( 5, 9.50) int -> r14 ; V06 loc3 [V06,T12] ( 20, 44 ) int -> r8 ld-addr-op ; V07 loc4 [V07,T01] ( 32,168 ) int -> r15 ld-addr-op ; V08 loc5 [V08,T34] ( 13, 20 ) int -> rcx ; V09 loc6 [V09,T38] ( 6, 13.50) int -> registers ; V10 loc7 [V10,T35] ( 7, 17.50) int -> rsi ; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V12 tmp1 [V12,T36] ( 2, 16 ) int -> rsi "dup spill" ; V13 tmp2 [V13,T23] ( 3, 24 ) long -> rax "dup spill" ; V14 tmp3 [V14,T63] ( 2, 4 ) bool -> rcx "Inlining Arg" ; V15 tmp4 [V15,T65] ( 2, 2.50) ref -> rax class-hnd "Inlining Arg" ; V16 tmp5 [V16,T66] ( 2, 2.50) ref -> rdx class-hnd "Inlining Arg" ; V17 tmp6 [V17,T68] ( 2, 1 ) int -> rax "Inline return value spill temp" ; V18 tmp7 [V18,T67] ( 2, 2 ) int -> rax "Inlining Arg" ; V19 tmp8 [V19,T53] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V20 tmp9 [V20,T44] ( 2, 8 ) int -> r8 "dup spill" ;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V22 tmp11 [V22,T13] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V23 tmp12 [V23,T24] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V24 tmp13 [V24,T03] ( 3, 48 ) int -> rax "dup spill" ; V25 tmp14 [V25,T54] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V26 tmp15 [V26,T45] ( 2, 8 ) int -> r8 "dup spill" ;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V28 tmp17 [V28,T14] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V29 tmp18 [V29,T25] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V30 tmp19 [V30,T04] ( 3, 48 ) int -> rax "dup spill" ; V31 tmp20 [V31,T55] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V32 tmp21 [V32,T46] ( 2, 8 ) int -> r8 "dup spill" ;* V33 tmp22 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp23 [V34,T15] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V35 tmp24 [V35,T26] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V36 tmp25 [V36,T05] ( 3, 48 ) int -> rax "dup spill" ; V37 tmp26 [V37,T56] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V38 tmp27 [V38,T47] ( 2, 8 ) int -> r8 "dup spill" ;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V40 tmp29 [V40,T16] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V41 tmp30 [V41,T27] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V42 tmp31 [V42,T06] ( 3, 48 ) int -> rax "dup spill" ; V43 tmp32 [V43,T57] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V44 tmp33 [V44,T48] ( 2, 8 ) int -> r8 "dup spill" ;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V46 tmp35 [V46,T17] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V47 tmp36 [V47,T28] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V48 tmp37 [V48,T07] ( 3, 48 ) int -> rax "dup spill" ; V49 tmp38 [V49,T58] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V50 tmp39 [V50,T49] ( 2, 8 ) int -> r8 "dup spill" ;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V52 tmp41 [V52,T18] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V53 tmp42 [V53,T29] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V54 tmp43 [V54,T08] ( 3, 48 ) int -> rax "dup spill" ; V55 tmp44 [V55,T59] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V56 tmp45 [V56,T50] ( 2, 8 ) int -> r8 "dup spill" ;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V58 tmp47 [V58,T19] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V59 tmp48 [V59,T30] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V60 tmp49 [V60,T09] ( 3, 48 ) int -> rax "dup spill" ; V61 tmp50 [V61,T60] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V62 tmp51 [V62,T51] ( 2, 8 ) int -> r8 "dup spill" ;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V64 tmp53 [V64,T20] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V65 tmp54 [V65,T31] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V66 tmp55 [V66,T10] ( 3, 48 ) int -> rax "dup spill" ; V67 tmp56 [V67,T61] ( 3, 6 ) int -> r15 "Inline stloc first use temp" ; V68 tmp57 [V68,T52] ( 2, 8 ) int -> r8 "dup spill" ;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V70 tmp59 [V70,T21] ( 7, 44 ) int -> rcx "Inline stloc first use temp" ; V71 tmp60 [V71,T32] ( 3, 24 ) long -> r15 "Inline stloc first use temp" ; V72 tmp61 [V72,T11] ( 3, 48 ) int -> rdx "dup spill" ; V73 tmp62 [V73,T37] ( 2, 16 ) bool -> rcx "Inlining Arg" ; V74 tmp63 [V74,T41] ( 2, 10 ) ref -> rax class-hnd "Inlining Arg" ; V75 tmp64 [V75,T42] ( 2, 10 ) ref -> rdx class-hnd "Inlining Arg" ; V76 cse0 [V76,T39] ( 3, 12 ) ref -> rdx "CSE - conservative" ; V77 cse1 [V77,T64] ( 3, 3 ) ref -> rdx "CSE - conservative" ; V78 rat0 [V78,T33] ( 3, 24 ) int -> r12 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 32 G_M57020_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp, 32 mov rbx, rcx mov esi, edx mov edi, r8d ;; bbWeight=1 PerfScore 8.00 G_M57020_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp esi, 6 setb cl movzx rcx, cl mov rdx, qword ptr [(reloc)] mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] mov rax, rdx ; gcrRegs +[rax] test ecx, ecx jne SHORT G_M57020_IG04 ;; bbWeight=1 PerfScore 7.00 G_M57020_IG03: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref mov rcx, rax ; gcrRegs +[rcx] call [hackishModuleName:hackishMethodName()] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 ;; bbWeight=0.25 PerfScore 0.81 G_M57020_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz xor ebp, ebp cmp esi, 2 jbe SHORT G_M57020_IG06 ;; bbWeight=1 PerfScore 1.50 G_M57020_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ebp, esi shl ebp, 5 add ebp, -65 mov eax, esi mov eax, dword ptr [rbx+4*rax] lzcnt eax, eax sub ebp, eax imul ebp, ebp, 77 sar ebp, 8 inc ebp cmp ebp, edi jg G_M57020_IG50 ;; bbWeight=0.50 PerfScore 6.25 G_M57020_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz lea eax, [rdi-28] cmp ebp, eax jge SHORT G_M57020_IG08 ;; bbWeight=1 PerfScore 1.75 G_M57020_IG07: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref lea ebp, [rdi-28] ;; bbWeight=0.50 PerfScore 0.25 G_M57020_IG08: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test ebp, ebp je G_M57020_IG48 ;; bbWeight=1 PerfScore 1.25 G_M57020_IG09: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref sub edi, ebp xor r14d, r14d xor r15d, r15d ;; bbWeight=0.50 PerfScore 0.38 G_M57020_IG10: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref or r14d, r15d lea r12d, [rbp-1] cmp r12d, 7 ja G_M57020_IG35 mov eax, r12d lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rax] lea rcx, G_M57020_IG02 add rdx, rcx jmp rdx ;; bbWeight=4 PerfScore 32.00 G_M57020_IG11: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov r8d, 0xD1FFAB1E mov eax, r15d imul r8, rax shr r8, 35 lea eax, [r8+4*r8] add eax, eax sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG13 ;; bbWeight=2 PerfScore 19.00 G_M57020_IG12: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 3 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax lea eax, [rax+4*rax] add eax, eax sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG12 ;; bbWeight=8 PerfScore 108.00 G_M57020_IG13: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 10 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG14: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov r8d, esi mov r15d, dword ptr [rbx+4*r8] mov eax, r15d imul r8, rax, 0xD1FFAB1E shr r8, 37 imul eax, r8d, 100 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG16 ;; bbWeight=2 PerfScore 21.00 G_M57020_IG15: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 shr rax, 2 mul rdx:rax, rdx shr rdx, 2 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 100 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG15 ;; bbWeight=8 PerfScore 134.00 G_M57020_IG16: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 100 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG17: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov r8d, esi mov r15d, dword ptr [rbx+4*r8] mov eax, r15d imul r8, rax, 0xD1FFAB1E shr r8, 38 imul eax, r8d, 0x3E8 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG19 ;; bbWeight=2 PerfScore 21.00 G_M57020_IG18: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 shr rax, 3 mul rdx:rax, rdx shr rdx, 4 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0x3E8 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG18 ;; bbWeight=8 PerfScore 134.00 G_M57020_IG19: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0x3E8 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG20: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov r8d, esi mov r15d, dword ptr [rbx+4*r8] mov r8d, 0xD1FFAB1E mov eax, r15d imul r8, rax shr r8, 45 imul eax, r8d, 0x2710 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG22 ;; bbWeight=2 PerfScore 21.50 G_M57020_IG21: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 11 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0x2710 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG21 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG22: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0x2710 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG23: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov r8d, esi mov r15d, dword ptr [rbx+4*r8] mov eax, r15d shr eax, 5 imul r8, rax, 0xD1FFAB1E shr r8, 39 imul eax, r8d, 0x186A0 sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG25 ;; bbWeight=2 PerfScore 25.00 G_M57020_IG24: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 shr rax, 5 mul rdx:rax, rdx shr rdx, 7 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0x186A0 sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG24 ;; bbWeight=8 PerfScore 134.00 G_M57020_IG25: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0x186A0 jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG26: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov r8d, esi mov r15d, dword ptr [rbx+4*r8] mov eax, r15d imul r8, rax, 0xD1FFAB1E shr r8, 50 imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG28 ;; bbWeight=2 PerfScore 21.00 G_M57020_IG27: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 18 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0xD1FFAB1E sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG27 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG28: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG29: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov r8d, esi mov r15d, dword ptr [rbx+4*r8] mov eax, r15d imul r8, rax, 0xD1FFAB1E shr r8, 54 imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG31 ;; bbWeight=2 PerfScore 21.00 G_M57020_IG30: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 23 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0xD1FFAB1E sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG30 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG31: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E jmp G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG32: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov r8d, esi mov r15d, dword ptr [rbx+4*r8] mov eax, r15d imul r8, rax, 0xD1FFAB1E shr r8, 57 imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG34 ;; bbWeight=2 PerfScore 21.00 G_M57020_IG33: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 mul rdx:rax, rdx shr rdx, 26 mov eax, edx mov edx, ecx mov dword ptr [rbx+4*rdx], eax imul eax, eax, 0xD1FFAB1E sub r15d, eax dec ecx test ecx, ecx jge SHORT G_M57020_IG33 ;; bbWeight=8 PerfScore 118.00 G_M57020_IG34: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E jmp SHORT G_M57020_IG38 ;; bbWeight=2 PerfScore 4.50 G_M57020_IG35: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, esi mov r15d, dword ptr [rbx+4*rax] mov eax, r15d shr eax, 9 imul r8, rax, 0xD1FFAB1E shr r8, 39 imul eax, r8d, 0xD1FFAB1E sub r15d, eax lea ecx, [rsi-1] test ecx, ecx jl SHORT G_M57020_IG37 ;; bbWeight=2 PerfScore 25.00 G_M57020_IG36: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, ecx mov eax, dword ptr [rbx+4*rax] mov r9d, eax mov r15d, r15d shl r15, 32 add r15, r9 mov rdx, 0xD1FFAB1E mov rax, r15 shr rax, 9 mul rdx:rax, rdx shr rdx, 11 mov eax, ecx mov dword ptr [rbx+4*rax], edx imul edx, edx, 0xD1FFAB1E sub r15d, edx dec ecx test ecx, ecx jge SHORT G_M57020_IG36 ;; bbWeight=8 PerfScore 132.00 G_M57020_IG37: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ;; bbWeight=2 PerfScore 0.50 G_M57020_IG38: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov edx, esi mov dword ptr [rbx+4*rdx], r8d test r8d, r8d jne SHORT G_M57020_IG40 ;; bbWeight=4 PerfScore 10.00 G_M57020_IG39: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz test esi, esi je SHORT G_M57020_IG40 dec esi ;; bbWeight=2 PerfScore 3.00 G_M57020_IG40: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref add ebp, -9 test ebp, ebp jg G_M57020_IG10 ;; bbWeight=4 PerfScore 6.00 G_M57020_IG41: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp esi, 2 jbe SHORT G_M57020_IG42 test edi, edi je G_M57020_IG50 mov ebp, 1 dec edi jmp G_M57020_IG10 ;; bbWeight=0.50 PerfScore 2.50 G_M57020_IG42: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz shr ecx, 1 cmp ecx, r15d ja SHORT G_M57020_IG48 cmp ecx, r15d jb SHORT G_M57020_IG43 mov ecx, dword ptr [rbx] and ecx, 1 or ecx, r14d je SHORT G_M57020_IG48 ;; bbWeight=0.50 PerfScore 3.25 G_M57020_IG43: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [rbx] inc eax mov dword ptr [rbx], eax test eax, eax jne SHORT G_M57020_IG48 xor esi, esi ;; bbWeight=0.50 PerfScore 2.38 G_M57020_IG44: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz lea ecx, [rsi+1] cmp ecx, 6 setb cl movzx rcx, cl mov rdx, qword ptr [(reloc)] mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] mov rax, rdx ; gcrRegs +[rax] test ecx, ecx jne SHORT G_M57020_IG46 ;; bbWeight=4 PerfScore 30.00 G_M57020_IG45: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref mov rcx, rax ; gcrRegs +[rcx] call [hackishModuleName:hackishMethodName()] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 ;; bbWeight=1 PerfScore 3.25 G_M57020_IG46: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz inc esi mov eax, esi lea rax, [rbx+4*rax] mov edx, dword ptr [rax] inc edx mov dword ptr [rax], edx test edx, edx je SHORT G_M57020_IG44 ;; bbWeight=4 PerfScore 22.00 G_M57020_IG47: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp esi, 2 jbe SHORT G_M57020_IG48 test edi, edi je SHORT G_M57020_IG50 xor r14d, r14d xor r15d, r15d mov ebp, 1 dec edi jmp G_M57020_IG10 ;; bbWeight=0.50 PerfScore 2.75 G_M57020_IG48: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, edi ;; bbWeight=1 PerfScore 0.25 G_M57020_IG49: ; , epilog, nogc, extend add rsp, 32 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 ret ;; bbWeight=1 PerfScore 4.75 G_M57020_IG50: ; gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref mov ecx, 15 call [System.Number:ThrowOverflowException(int)] ; gcr arg pop 0 int3 ;; bbWeight=0 PerfScore 0.00 RWD00 dd G_M57020_IG11 - G_M57020_IG02 dd G_M57020_IG14 - G_M57020_IG02 dd G_M57020_IG17 - G_M57020_IG02 dd G_M57020_IG20 - G_M57020_IG02 dd G_M57020_IG23 - G_M57020_IG02 dd G_M57020_IG26 - G_M57020_IG02 dd G_M57020_IG29 - G_M57020_IG02 dd G_M57020_IG32 - G_M57020_IG02 ; Total bytes of code 1346, prolog size 22, PerfScore 1629.91, instruction count 406, allocated bytes for code 1346 (MethodHash=ebe22143) for method DecCalc:ScaleResult(long,int,int):int ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00 SizeOfProlog : 0x0E CountOfUnwindCodes: 8 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
違いを見つける