Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
15658.mc
Created
2 years ago
Diff never expires
Clear
Export
Share
Explain
58 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
92 lines
Copy
98 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
126 lines
Copy
; Assembly listing for method System.Security.Cryptography.CryptographicOperations:FixedTimeEquals(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (MinOpts)
; Assembly listing for method System.Security.Cryptography.CryptographicOperations:FixedTimeEquals(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (MinOpts)
; Emitting BLENDED_CODE for generic ARM64 - Windows
; Emitting BLENDED_CODE for generic ARM64 - Windows
; MinOpts code
; MinOpts code
; fp based frame
; fp based frame
; partially interruptible
; partially interruptible
G_M000_IG01:
G_M000_IG01:
Copy
Copied
Copy
Copied
stp fp, lr, [sp, #-0x
5
0]!
stp fp, lr, [sp, #-0x
6
0]!
mov fp, sp
mov fp, sp
Copy
Copied
Copy
Copied
str x0, [fp, #0x
4
0] //
str x0, [fp, #0x
5
0] //
str x1, [fp, #0x
4
8] //
str x1, [fp, #0x
5
8] //
str x2, [fp, #0x
3
0] //
str x2, [fp, #0x
4
0] //
str x3, [fp, #0x
3
8] //
str x3, [fp, #0x
4
8] //
G_M000_IG02:
G_M000_IG02:
Copy
Copied
Copy
Copied
add x0, fp, #80 //
str x0, [fp, #0x1C] //
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
str x0, [fp, #0x14] //
ldr x0, [fp, #0x1C] //
ldr x1, [fp, #0x14] //
blr x1
str w0, [fp, #0x30] //
add x0, fp, #64 //
add x0, fp, #64 //
Copy
Copied
Copy
Copied
movz
x1
, #0xD1FFAB1E
str x0, [fp, #0x14] //
movk
x1
, #0xD1FFAB1E LSL #16
movz
x0
, #0xD1FFAB1E
movk
x1
, #0xD1FFAB1E LSL #32
movk
x0
, #0xD1FFAB1E LSL #16
ldr
x1
, [
x1]
movk
x0
, #0xD1FFAB1E LSL #32
blr x1
ldr
x0
, [
x0]
str
w0
, [fp, #
0x20
] //
str
x0
, [fp, #
0x1C
] //
add
x0,
fp, #
48
//
ldr
x0,
[
fp, #
0x14]
//
movz x1, #0xD1FFAB1E
ldr x1, [
fp, #0x1C] //
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [
x1]
blr x1
blr x1
Copy
Copied
Copy
Copied
ldr w1, [fp, #0x2
0
] //
str w0, [fp, #0x28] //
ldr w0, [fp, #0x30] //
str w0, [fp, #0x24] //
ldr w0, [fp, #0x28] //
ldr w1, [fp, #0x2
4
] //
cmp w0, w1
cmp w0, w1
beq G_M000_IG04
beq G_M000_IG04
mov w0, wzr
mov w0, wzr
G_M000_IG03:
G_M000_IG03:
Copy
Copied
Copy
Copied
ldp fp, lr, [sp], #0x
5
0
ldp fp, lr, [sp], #0x
6
0
ret lr
ret lr
G_M000_IG04:
G_M000_IG04:
Copy
Copied
Copy
Copied
add x0, fp, #
64
//
add x0, fp, #
80 //
movz
x1
, #0xD1FFAB1E
str x0, [fp, #0x1C]
//
movk
x1
, #0xD1FFAB1E LSL #16
movz
x0
, #0xD1FFAB1E
movk
x1
, #0xD1FFAB1E LSL #32
movk
x0
, #0xD1FFAB1E LSL #16
ldr x1, [
x1]
movk
x0
, #0xD1FFAB1E LSL #32
ldr x0, [x0]
str x0, [fp, #0x14] //
ldr x0, [fp, #0x1C] //
ldr x1, [
fp, #0x14] //
blr x1
blr x1
Copy
Copied
Copy
Copied
str w0, [fp, #0x
2
C] //
str w0, [fp, #0x
3
C] //
str wzr, [fp, #0x
2
8] //
str wzr, [fp, #0x
3
8] //
str wzr, [fp, #0x
2
4] //
str wzr, [fp, #0x
3
4] //
b G_M000_IG06
b G_M000_IG06
G_M000_IG05:
G_M000_IG05:
Copy
Copied
Copy
Copied
add x0, fp, #
64
//
add x0, fp, #
80 //
ldr w1, [fp, #0x
2
4] //
str x0, [fp, #0x14]
//
movz
x2
, #0xD1FFAB1E
ldr w1, [fp, #0x
3
4] //
movk
x2
, #0xD1FFAB1E LSL #16
movz
x0
, #0xD1FFAB1E
movk
x2
, #0xD1FFAB1E LSL #32
movk
x0
, #0xD1FFAB1E LSL #16
ldr
x2, [x2]
movk
x0
, #0xD1FFAB1E LSL #32
ldr
x0, [x0]
str x0, [fp, #0x1C] //
ldr x0, [fp, #0x14] //
ldr x2, [fp, #0x1C] //
blr x2
blr x2
ldrb w0, [x0]
ldrb w0, [x0]
Copy
Copied
Copy
Copied
str w0, [fp, #0x
1
C] //
str w0, [fp, #0x
2
C] //
add x0, fp, #
48
//
add x0, fp, #
64 //
ldr w1, [fp, #0x
2
4] //
str x0, [fp, #0x1C]
//
movz
x2
, #0xD1FFAB1E
ldr w1, [fp, #0x
3
4] //
movk
x2
, #0xD1FFAB1E LSL #16
movz
x0
, #0xD1FFAB1E
movk
x2
, #0xD1FFAB1E LSL #32
movk
x0
, #0xD1FFAB1E LSL #16
ldr
x2, [x2]
movk
x0
, #0xD1FFAB1E LSL #32
ldr
x0, [x0]
str x0, [fp, #0x14] //
ldr x0, [fp, #0x1C] //
ldr x2, [fp, #0x14] //
blr x2
blr x2
ldrb w0, [x0]
ldrb w0, [x0]
Copy
Copied
Copy
Copied
ldr
w1
, [fp, #0x
1
C] //
str w0, [fp, #0x24] //
sub w0,
w1, w0
ldr
w0
, [fp, #0x
2
C] //
ldr
w1
, [fp, #0x2
8
] //
ldrb w1, [fp, #0x24] //
orr
w0,
w0, w1
sub w0,
w0, w1
str
w0
, [fp, #0x2
4
] //
ldr
w0,
[fp, #0x38] //
str w0, [fp, #0x28] //
str w0, [fp, #0x28] //
ldr w0, [fp, #0x24] //
ldr w0, [fp, #0x24] //
Copy
Copied
Copy
Copied
ldr w1, [fp, #0x28] //
orr w0, w0, w1
str w0, [fp, #0x38] //
ldr w0, [fp, #0x34] //
add w0, w0, #1
add w0, w0, #1
Copy
Copied
Copy
Copied
str w0, [fp, #0x
2
4] //
str w0, [fp, #0x
3
4] //
G_M000_IG06:
G_M000_IG06:
Copy
Copied
Copy
Copied
ldr w0, [fp,
#0x24] //
ldr w0, [fp,
#0x34] //
ldr
w1
, [fp, #0x2
C
] //
str w0, [fp, #0x28] //
ldr w0, [fp, #0x3C] //
str w0, [fp,
#0x24] //
ldr
w0, [fp, #0x28] //
ldr w1
, [fp, #0x2
4
] //
cmp w0, w1
cmp w0, w1
blt G_M000_IG05
blt G_M000_IG05
Copy
Copied
Copy
Copied
ldr w0, [fp, #0x
2
8] //
ldr w0, [fp, #0x
3
8] //
cmp w0, #0
cmp w0, #0
cset x0, eq
cset x0, eq
G_M000_IG07:
G_M000_IG07:
Copy
Copied
Copy
Copied
ldp fp, lr, [sp], #0x
5
0
ldp fp, lr, [sp], #0x
6
0
ret lr
ret lr
Copy
Copied
Copy
Copied
; Total bytes of code
276
; Total bytes of code
412
Saved diffs
Original text
Open file
; Assembly listing for method System.Security.Cryptography.CryptographicOperations:FixedTimeEquals(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (MinOpts) ; Emitting BLENDED_CODE for generic ARM64 - Windows ; MinOpts code ; fp based frame ; partially interruptible G_M000_IG01: stp fp, lr, [sp, #-0x50]! mov fp, sp str x0, [fp, #0x40] // str x1, [fp, #0x48] // str x2, [fp, #0x30] // str x3, [fp, #0x38] // G_M000_IG02: add x0, fp, #64 // movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 str w0, [fp, #0x20] // add x0, fp, #48 // movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ldr w1, [fp, #0x20] // cmp w0, w1 beq G_M000_IG04 mov w0, wzr G_M000_IG03: ldp fp, lr, [sp], #0x50 ret lr G_M000_IG04: add x0, fp, #64 // movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 str w0, [fp, #0x2C] // str wzr, [fp, #0x28] // str wzr, [fp, #0x24] // b G_M000_IG06 G_M000_IG05: add x0, fp, #64 // ldr w1, [fp, #0x24] // movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2 ldrb w0, [x0] str w0, [fp, #0x1C] // add x0, fp, #48 // ldr w1, [fp, #0x24] // movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2 ldrb w0, [x0] ldr w1, [fp, #0x1C] // sub w0, w1, w0 ldr w1, [fp, #0x28] // orr w0, w0, w1 str w0, [fp, #0x28] // ldr w0, [fp, #0x24] // add w0, w0, #1 str w0, [fp, #0x24] // G_M000_IG06: ldr w0, [fp, #0x24] // ldr w1, [fp, #0x2C] // cmp w0, w1 blt G_M000_IG05 ldr w0, [fp, #0x28] // cmp w0, #0 cset x0, eq G_M000_IG07: ldp fp, lr, [sp], #0x50 ret lr ; Total bytes of code 276
Changed text
Open file
; Assembly listing for method System.Security.Cryptography.CryptographicOperations:FixedTimeEquals(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte (MinOpts) ; Emitting BLENDED_CODE for generic ARM64 - Windows ; MinOpts code ; fp based frame ; partially interruptible G_M000_IG01: stp fp, lr, [sp, #-0x60]! mov fp, sp str x0, [fp, #0x50] // str x1, [fp, #0x58] // str x2, [fp, #0x40] // str x3, [fp, #0x48] // G_M000_IG02: add x0, fp, #80 // str x0, [fp, #0x1C] // movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] str x0, [fp, #0x14] // ldr x0, [fp, #0x1C] // ldr x1, [fp, #0x14] // blr x1 str w0, [fp, #0x30] // add x0, fp, #64 // str x0, [fp, #0x14] // movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] str x0, [fp, #0x1C] // ldr x0, [fp, #0x14] // ldr x1, [fp, #0x1C] // blr x1 str w0, [fp, #0x28] // ldr w0, [fp, #0x30] // str w0, [fp, #0x24] // ldr w0, [fp, #0x28] // ldr w1, [fp, #0x24] // cmp w0, w1 beq G_M000_IG04 mov w0, wzr G_M000_IG03: ldp fp, lr, [sp], #0x60 ret lr G_M000_IG04: add x0, fp, #80 // str x0, [fp, #0x1C] // movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] str x0, [fp, #0x14] // ldr x0, [fp, #0x1C] // ldr x1, [fp, #0x14] // blr x1 str w0, [fp, #0x3C] // str wzr, [fp, #0x38] // str wzr, [fp, #0x34] // b G_M000_IG06 G_M000_IG05: add x0, fp, #80 // str x0, [fp, #0x14] // ldr w1, [fp, #0x34] // movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] str x0, [fp, #0x1C] // ldr x0, [fp, #0x14] // ldr x2, [fp, #0x1C] // blr x2 ldrb w0, [x0] str w0, [fp, #0x2C] // add x0, fp, #64 // str x0, [fp, #0x1C] // ldr w1, [fp, #0x34] // movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] str x0, [fp, #0x14] // ldr x0, [fp, #0x1C] // ldr x2, [fp, #0x14] // blr x2 ldrb w0, [x0] str w0, [fp, #0x24] // ldr w0, [fp, #0x2C] // ldrb w1, [fp, #0x24] // sub w0, w0, w1 str w0, [fp, #0x24] // ldr w0, [fp, #0x38] // str w0, [fp, #0x28] // ldr w0, [fp, #0x24] // ldr w1, [fp, #0x28] // orr w0, w0, w1 str w0, [fp, #0x38] // ldr w0, [fp, #0x34] // add w0, w0, #1 str w0, [fp, #0x34] // G_M000_IG06: ldr w0, [fp, #0x34] // str w0, [fp, #0x28] // ldr w0, [fp, #0x3C] // str w0, [fp, #0x24] // ldr w0, [fp, #0x28] // ldr w1, [fp, #0x24] // cmp w0, w1 blt G_M000_IG05 ldr w0, [fp, #0x38] // cmp w0, #0 cset x0, eq G_M000_IG07: ldp fp, lr, [sp], #0x60 ret lr ; Total bytes of code 412
Find difference