V8 is running with developer-only features enabled. Stability and security will suffer.
[marking 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> for optimization to MAGLEV, ConcurrencyMode::kConcurrent, reason: hot and stable]
[compiling method 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target MAGLEV) OSR, mode: ConcurrencyMode::kConcurrent]
[completed compiling 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target MAGLEV) OSR - took 0.002, 9.847, 0.042 ms]
[compiling method 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target TURBOFAN_JS) OSR, mode: ConcurrencyMode::kConcurrent]
[completed compiling 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target TURBOFAN_JS) OSR - took 0.034, 9.264, 0.083 ms]
[completed optimizing 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target TURBOFAN_JS) OSR]
[bailout (kind: deopt-eager, reason: prepare for on stack replacement (OSR)): begin. deoptimizing 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)>, 0x2b5101000881 <Code MAGLEV>, opt id 0, node id 0, bytecode offset 125, deopt exit 6, FP to SP delta 120, caller SP 0x7ffe87241d88, pc 0x557ac3ec0f86]
[bailout (kind: deopt-eager, reason: Insufficient type feedback for compare operation): begin. deoptimizing 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)>, 0x2b5101000c9d <Code TURBOFAN_JS>, opt id 1, node id 146, bytecode offset 140, deopt exit 3, FP to SP delta 144, caller SP 0x7ffe87241d88, pc 0x557ac3ec12f8]
[compiling method 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target MAGLEV) OSR, mode: ConcurrencyMode::kConcurrent]
[completed compiling 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target MAGLEV) OSR - took 0.000, 1.321, 0.025 ms]
[compiling method 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target TURBOFAN_JS) OSR, mode: ConcurrencyMode::kConcurrent]
[completed compiling 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target TURBOFAN_JS) OSR - took 0.011, 2.967, 0.070 ms]
[completed optimizing 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)> (target TURBOFAN_JS) OSR]
[bailout (kind: deopt-eager, reason: prepare for on stack replacement (OSR)): begin. deoptimizing 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)>, 0x2b5101001371 <Code MAGLEV>, opt id 2, node id 0, bytecode offset 188, deopt exit 14, FP to SP delta 120, caller SP 0x7ffe87241d88, pc 0x557ac3ec19d8]
[manually marking 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)> for optimization to TURBOFAN_JS, ConcurrencyMode::kSynchronous]
[bailout (kind: deopt-eager, reason: Insufficient type feedback for generic named access): begin. deoptimizing 0x24f7010265c5 <JSFunction (sfi = 0x24f7010264dd)>, 0x2b5101001861 <Code TURBOFAN_JS>, opt id 3, node id 172, bytecode offset 215, deopt exit 7, FP to SP delta 144, caller SP 0x7ffe87241d88, pc 0x557ac3ec1d1e]
[compiling method 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)> (target TURBOFAN_JS), mode: ConcurrencyMode::kSynchronous]
---------------------------------------------------
Begin compiling method trigger using TurboFan
----- Graph after V8.TFBytecodeGraphBuilder ----- 
#25:HeapConstant[0x24f7010263e9 <String[2]: #TK>]()
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()
#0:Start()
#1:Parameter[0, debug name: %this](#0:Start)
#2:Parameter[1](#0:Start)
#3:Parameter[2](#0:Start)
#4:Parameter[3](#0:Start)
#5:Parameter[4](#0:Start)
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)
#13:StateValues[sparse:......]()
#7:Parameter[8, debug name: %context](#0:Start)
#14:HeapConstant[0x24f70012fffd <optimized_out>]()
#15:Parameter[-1, debug name: %closure](#0:Start)
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #15:Parameter, #0:Start)
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#22:JSLoadContextNoCell[0, 3, 1](#7:Parameter, #11:JSStackCheck)
#29:FrameState[UNOPTIMIZED_FRAME, 6, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #22:JSLoadContextNoCell, #7:Parameter, #15:Parameter, #0:Start)
#23:HeapConstant[0x24f70002fffd <the_hole_value>]()
#24:ReferenceEqual(#22:JSLoadContextNoCell, #23:HeapConstant)
#17:ToBoolean(#2:Parameter)
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#26:Branch[Unspecified, False](#24:ReferenceEqual, #21:IfTrue)
#27:IfTrue(#26:Branch)
#28:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#25:HeapConstant, #9:HeapConstant, #29:FrameState, #22:JSLoadContextNoCell, #27:IfTrue)
#30:Throw(#28:JSCallRuntime, #28:JSCallRuntime)
#44:NumberConstant[0]()
#6:HeapConstant[0x24f700000011 <undefined>]()
#31:IfFalse(#26:Branch)
#19:IfFalse(#18:Branch)
#20:Merge(#19:IfFalse)
#32:Merge(#31:IfFalse, #20:Merge)
#34:Phi[kRepTagged](#22:JSLoadContextNoCell, #6:HeapConstant, #32:Merge)
#38:FrameState[UNOPTIMIZED_FRAME, 11, PokeAt(0), 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #15:Parameter, #0:Start)
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #15:Parameter, #0:Start)
#33:EffectPhi(#22:JSLoadContextNoCell, #11:JSStackCheck, #32:Merge)
#35:Checkpoint(#36:FrameState, #33:EffectPhi, #32:Merge)
#37:JSToNumber(#34:Phi, #9:HeapConstant, #38:FrameState, #35:Checkpoint, #32:Merge)
#39:ToBoolean(#3:Parameter)
#40:Branch[Unspecified, None](#39:ToBoolean, #37:JSToNumber)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #37:JSToNumber, #43:IfTrue)
#48:HeapConstant[0x24f7000031d5 <String[1]: #C>]()
#52:StateValues[sparse:^.....](#37:JSToNumber)
#46:JSLoadContextNoCell[0, 2, 1](#7:Parameter, #37:JSToNumber)
#53:FrameState[UNOPTIMIZED_FRAME, 22, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #46:JSLoadContextNoCell, #7:Parameter, #15:Parameter, #0:Start)
#47:ReferenceEqual(#46:JSLoadContextNoCell, #23:HeapConstant)
#41:IfFalse(#40:Branch)
#42:Merge(#41:IfFalse)
#49:Branch[Unspecified, False](#47:ReferenceEqual, #42:Merge)
#50:IfTrue(#49:Branch)
#51:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#48:HeapConstant, #9:HeapConstant, #53:FrameState, #46:JSLoadContextNoCell, #50:IfTrue)
#54:Throw(#51:JSCallRuntime, #51:JSCallRuntime)
#8:HeapConstant[0x24f7010266ed <FeedbackVector[13]>]()
#57:FrameState[UNOPTIMIZED_FRAME, 24, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #46:JSLoadContextNoCell, #7:Parameter, #15:Parameter, #0:Start)
#55:IfFalse(#49:Branch)
#56:Checkpoint(#57:FrameState, #46:JSLoadContextNoCell, #55:IfFalse)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:JSToNumber, #46:JSLoadContextNoCell, #56:Checkpoint, #55:IfFalse)
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #55:IfFalse)
#60:NumberConstant[8]()
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #55:IfFalse)
#62:NumberConstant[65535]()
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #55:IfFalse)
#64:NumberConstant[4095]()
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #55:IfFalse)
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #55:IfFalse)
#67:NumberConstant[4112]()
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #55:IfFalse)
#69:NumberConstant[4097]()
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #55:IfFalse)
#72:StateValues[sparse:...^^.](#68:SpeculativeSmallIntegerSubtract, #70:SpeculativeSmallIntegerSubtract)
#73:FrameState[UNOPTIMIZED_FRAME, 73, PokeAt(0), 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #72:StateValues, #14:HeapConstant, #7:Parameter, #15:Parameter, #0:Start)
#71:JSLoadNamed[0x24f7003b2081 <String[5]: #slice>, sloppy](#4:Parameter, #8:HeapConstant, #7:Parameter, #73:FrameState, #70:SpeculativeSmallIntegerSubtract, #55:IfFalse)
#78:FrameState[UNOPTIMIZED_FRAME, 78, PokeAt(0), 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #15:Parameter, #0:Start)
#75:StateValues[sparse:...^^^](#68:SpeculativeSmallIntegerSubtract, #70:SpeculativeSmallIntegerSubtract, #71:JSLoadNamed)
#76:FrameState[UNOPTIMIZED_FRAME, 78, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #75:StateValues, #14:HeapConstant, #7:Parameter, #15:Parameter, #0:Start)
#74:Checkpoint(#76:FrameState, #71:JSLoadNamed, #71:JSLoadNamed)
#77:JSCall[5, 0.00645931, NOT_NULL_OR_UNDEFINED, SpeculationMode::kAllowSpeculation, CallFeedbackRelation::kTarget](#71:JSLoadNamed, #4:Parameter, #68:SpeculativeSmallIntegerSubtract, #70:SpeculativeSmallIntegerSubtract, #8:HeapConstant, #9:HeapConstant, #78:FrameState, #74:Checkpoint, #71:JSLoadNamed)
#79:Return(#44:NumberConstant, #77:JSCall, #77:JSCall, #77:JSCall)
#80:End(#30:Throw, #45:Return, #54:Throw, #79:Return)
----- Graph after V8.TFInlining ----- 
#25:HeapConstant[0x24f7010263e9 <String[2]: #TK>]()
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()
#0:Start()
#1:Parameter[0, debug name: %this](#0:Start)
#2:Parameter[1](#0:Start)
#3:Parameter[2](#0:Start)
#4:Parameter[3](#0:Start)
#5:Parameter[4](#0:Start)
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)
#13:StateValues[sparse:......]()
#84:NumberConstant[-1.07479e+09]()
#7:Parameter[8, debug name: %context](#0:Start)
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()
#29:FrameState[UNOPTIMIZED_FRAME, 6, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #84:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#14:HeapConstant[0x24f70012fffd <optimized_out>]()
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#23:HeapConstant[0x24f70002fffd <the_hole_value>]()
#24:ReferenceEqual(#84:NumberConstant, #23:HeapConstant)
#17:ToBoolean(#2:Parameter)
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#26:Branch[Unspecified, False](#24:ReferenceEqual, #21:IfTrue)
#27:IfTrue(#26:Branch)
#28:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#25:HeapConstant, #9:HeapConstant, #29:FrameState, #11:JSStackCheck, #27:IfTrue)
#30:Throw(#28:JSCallRuntime, #28:JSCallRuntime)
#44:NumberConstant[0]()
#6:HeapConstant[0x24f700000011 <undefined>]()
#31:IfFalse(#26:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#31:IfFalse, #19:IfFalse)
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)
#38:FrameState[UNOPTIMIZED_FRAME, 11, PokeAt(0), 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #83:HeapConstant, #0:Start)
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#37:JSToNumber(#34:Phi, #9:HeapConstant, #38:FrameState, #35:Checkpoint, #32:Merge)
#39:ToBoolean(#3:Parameter)
#40:Branch[Unspecified, None](#39:ToBoolean, #37:JSToNumber)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #37:JSToNumber, #43:IfTrue)
#48:HeapConstant[0x24f7000031d5 <String[1]: #C>]()
#52:StateValues[sparse:^.....](#37:JSToNumber)
#85:NumberConstant[1.07479e+09]()
#53:FrameState[UNOPTIMIZED_FRAME, 22, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #85:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#47:ReferenceEqual(#85:NumberConstant, #23:HeapConstant)
#41:IfFalse(#40:Branch)
#49:Branch[Unspecified, False](#47:ReferenceEqual, #41:IfFalse)
#50:IfTrue(#49:Branch)
#51:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#48:HeapConstant, #9:HeapConstant, #53:FrameState, #37:JSToNumber, #50:IfTrue)
#54:Throw(#51:JSCallRuntime, #51:JSCallRuntime)
#57:FrameState[UNOPTIMIZED_FRAME, 24, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #85:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#55:IfFalse(#49:Branch)
#56:Checkpoint(#57:FrameState, #37:JSToNumber, #55:IfFalse)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:JSToNumber, #85:NumberConstant, #56:Checkpoint, #55:IfFalse)
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #55:IfFalse)
#60:NumberConstant[8]()
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #55:IfFalse)
#62:NumberConstant[65535]()
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #55:IfFalse)
#64:NumberConstant[4095]()
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #55:IfFalse)
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #55:IfFalse)
#69:NumberConstant[4097]()
#67:NumberConstant[4112]()
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #55:IfFalse)
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #55:IfFalse)
#86:CheckString[FeedbackSource(INVALID)](#4:Parameter, #70:SpeculativeSmallIntegerSubtract, #55:IfFalse)
#88:CheckString[FeedbackSource(#11)](#4:Parameter, #86:CheckString, #55:IfFalse)
#89:StringLength(#88:CheckString)
#90:CheckSmi[FeedbackSource(#11)](#68:SpeculativeSmallIntegerSubtract, #88:CheckString, #55:IfFalse)
#106:NumberAdd(#89:StringLength, #90:CheckSmi)
#107:NumberMax(#106:NumberAdd, #44:NumberConstant)
#109:NumberMin(#90:CheckSmi, #89:StringLength)
#101:NumberLessThan(#90:CheckSmi, #44:NumberConstant)
#91:ReferenceEqual(#70:SpeculativeSmallIntegerSubtract, #6:HeapConstant)
#92:Branch[JS, False](#91:ReferenceEqual, #55:IfFalse)
#93:IfTrue(#92:Branch)
#94:IfFalse(#92:Branch)
#98:Merge(#93:IfTrue, #94:IfFalse)
#102:Branch[JS, False](#101:NumberLessThan, #98:Merge)
#103:IfTrue(#102:Branch)
#104:IfFalse(#102:Branch)
#110:Merge(#103:IfTrue, #104:IfFalse)
#112:Phi[kRepTagged](#107:NumberMax, #109:NumberMin, #110:Merge)
#97:CheckSmi[FeedbackSource(#11)](#70:SpeculativeSmallIntegerSubtract, #90:CheckSmi, #94:IfFalse)
#99:EffectPhi(#90:CheckSmi, #97:CheckSmi, #98:Merge)
#113:TypeGuard[Unsigned30](#112:Phi, #99:EffectPhi, #110:Merge)
#100:Phi[kRepTagged](#89:StringLength, #97:CheckSmi, #98:Merge)
#119:NumberAdd(#89:StringLength, #100:Phi)
#120:NumberMax(#119:NumberAdd, #44:NumberConstant)
#122:NumberMin(#100:Phi, #89:StringLength)
#114:NumberLessThan(#100:Phi, #44:NumberConstant)
#115:Branch[JS, False](#114:NumberLessThan, #110:Merge)
#116:IfTrue(#115:Branch)
#117:IfFalse(#115:Branch)
#123:Merge(#116:IfTrue, #117:IfFalse)
#125:Phi[kRepTagged](#120:NumberMax, #122:NumberMin, #123:Merge)
#126:TypeGuard[Unsigned30](#125:Phi, #113:TypeGuard, #123:Merge)
#127:NumberLessThan(#113:TypeGuard, #126:TypeGuard)
#128:Branch[JS, True](#127:NumberLessThan, #123:Merge)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#88:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)
#138:Return(#44:NumberConstant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()
#130:IfFalse(#128:Branch)
#139:Return(#44:NumberConstant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#30:Throw, #45:Return, #54:Throw, #138:Return, #139:Return)
----- Graph after V8.TFEarlyGraphTrimming ----- 
#25:HeapConstant[0x24f7010263e9 <String[2]: #TK>]()
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()
#0:Start()
#1:Parameter[0, debug name: %this](#0:Start)
#2:Parameter[1](#0:Start)
#3:Parameter[2](#0:Start)
#4:Parameter[3](#0:Start)
#5:Parameter[4](#0:Start)
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)
#13:StateValues[sparse:......]()
#84:NumberConstant[-1.07479e+09]()
#7:Parameter[8, debug name: %context](#0:Start)
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()
#29:FrameState[UNOPTIMIZED_FRAME, 6, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #84:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#14:HeapConstant[0x24f70012fffd <optimized_out>]()
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#23:HeapConstant[0x24f70002fffd <the_hole_value>]()
#24:ReferenceEqual(#84:NumberConstant, #23:HeapConstant)
#17:ToBoolean(#2:Parameter)
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#26:Branch[Unspecified, False](#24:ReferenceEqual, #21:IfTrue)
#27:IfTrue(#26:Branch)
#28:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#25:HeapConstant, #9:HeapConstant, #29:FrameState, #11:JSStackCheck, #27:IfTrue)
#30:Throw(#28:JSCallRuntime, #28:JSCallRuntime)
#44:NumberConstant[0]()
#6:HeapConstant[0x24f700000011 <undefined>]()
#31:IfFalse(#26:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#31:IfFalse, #19:IfFalse)
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)
#38:FrameState[UNOPTIMIZED_FRAME, 11, PokeAt(0), 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #83:HeapConstant, #0:Start)
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#37:JSToNumber(#34:Phi, #9:HeapConstant, #38:FrameState, #35:Checkpoint, #32:Merge)
#39:ToBoolean(#3:Parameter)
#40:Branch[Unspecified, None](#39:ToBoolean, #37:JSToNumber)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #37:JSToNumber, #43:IfTrue)
#48:HeapConstant[0x24f7000031d5 <String[1]: #C>]()
#52:StateValues[sparse:^.....](#37:JSToNumber)
#85:NumberConstant[1.07479e+09]()
#53:FrameState[UNOPTIMIZED_FRAME, 22, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #85:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#47:ReferenceEqual(#85:NumberConstant, #23:HeapConstant)
#41:IfFalse(#40:Branch)
#49:Branch[Unspecified, False](#47:ReferenceEqual, #41:IfFalse)
#50:IfTrue(#49:Branch)
#51:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#48:HeapConstant, #9:HeapConstant, #53:FrameState, #37:JSToNumber, #50:IfTrue)
#54:Throw(#51:JSCallRuntime, #51:JSCallRuntime)
#57:FrameState[UNOPTIMIZED_FRAME, 24, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #85:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)
#55:IfFalse(#49:Branch)
#56:Checkpoint(#57:FrameState, #37:JSToNumber, #55:IfFalse)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:JSToNumber, #85:NumberConstant, #56:Checkpoint, #55:IfFalse)
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #55:IfFalse)
#60:NumberConstant[8]()
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #55:IfFalse)
#62:NumberConstant[65535]()
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #55:IfFalse)
#64:NumberConstant[4095]()
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #55:IfFalse)
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #55:IfFalse)
#69:NumberConstant[4097]()
#67:NumberConstant[4112]()
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #55:IfFalse)
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #55:IfFalse)
#86:CheckString[FeedbackSource(INVALID)](#4:Parameter, #70:SpeculativeSmallIntegerSubtract, #55:IfFalse)
#88:CheckString[FeedbackSource(#11)](#4:Parameter, #86:CheckString, #55:IfFalse)
#89:StringLength(#88:CheckString)
#90:CheckSmi[FeedbackSource(#11)](#68:SpeculativeSmallIntegerSubtract, #88:CheckString, #55:IfFalse)
#106:NumberAdd(#89:StringLength, #90:CheckSmi)
#107:NumberMax(#106:NumberAdd, #44:NumberConstant)
#109:NumberMin(#90:CheckSmi, #89:StringLength)
#101:NumberLessThan(#90:CheckSmi, #44:NumberConstant)
#91:ReferenceEqual(#70:SpeculativeSmallIntegerSubtract, #6:HeapConstant)
#92:Branch[JS, False](#91:ReferenceEqual, #55:IfFalse)
#93:IfTrue(#92:Branch)
#94:IfFalse(#92:Branch)
#98:Merge(#93:IfTrue, #94:IfFalse)
#102:Branch[JS, False](#101:NumberLessThan, #98:Merge)
#103:IfTrue(#102:Branch)
#104:IfFalse(#102:Branch)
#110:Merge(#103:IfTrue, #104:IfFalse)
#112:Phi[kRepTagged](#107:NumberMax, #109:NumberMin, #110:Merge)
#97:CheckSmi[FeedbackSource(#11)](#70:SpeculativeSmallIntegerSubtract, #90:CheckSmi, #94:IfFalse)
#99:EffectPhi(#90:CheckSmi, #97:CheckSmi, #98:Merge)
#113:TypeGuard[Unsigned30](#112:Phi, #99:EffectPhi, #110:Merge)
#100:Phi[kRepTagged](#89:StringLength, #97:CheckSmi, #98:Merge)
#119:NumberAdd(#89:StringLength, #100:Phi)
#120:NumberMax(#119:NumberAdd, #44:NumberConstant)
#122:NumberMin(#100:Phi, #89:StringLength)
#114:NumberLessThan(#100:Phi, #44:NumberConstant)
#115:Branch[JS, False](#114:NumberLessThan, #110:Merge)
#116:IfTrue(#115:Branch)
#117:IfFalse(#115:Branch)
#123:Merge(#116:IfTrue, #117:IfFalse)
#125:Phi[kRepTagged](#120:NumberMax, #122:NumberMin, #123:Merge)
#126:TypeGuard[Unsigned30](#125:Phi, #113:TypeGuard, #123:Merge)
#127:NumberLessThan(#113:TypeGuard, #126:TypeGuard)
#128:Branch[JS, True](#127:NumberLessThan, #123:Merge)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#88:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)
#138:Return(#44:NumberConstant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()
#130:IfFalse(#128:Branch)
#139:Return(#44:NumberConstant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#30:Throw, #45:Return, #54:Throw, #138:Return, #139:Return)
----- Graph after V8.TFTyper ----- 
#25:HeapConstant[0x24f7010263e9 <String[2]: #TK>]()  [Type: HeapConstant(0x1dcc01382df8 {0x24f7010263e9 <String[2]: #TK>})]
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()  [Type: HeapConstant(0x1dcc01382c80 {0x24f70100c9b5 <NativeContext[309]>})]
#0:Start()  [Type: Internal]
#1:Parameter[0, debug name: %this](#0:Start)  [Type: Receiver]
#2:Parameter[1](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#3:Parameter[2](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#4:Parameter[3](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#5:Parameter[4](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)  [Type: Internal]
#13:StateValues[sparse:......]()  [Type: Internal]
#84:NumberConstant[-1.07479e+09]()  [Type: Range(-1074794496, -1074794496)]
#7:Parameter[8, debug name: %context](#0:Start)  [Type: OtherInternal]
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()  [Type: HeapConstant(0x1dcc013837a0)]
#29:FrameState[UNOPTIMIZED_FRAME, 6, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #84:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#14:HeapConstant[0x24f70012fffd <optimized_out>]()  [Type: Hole]
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#23:HeapConstant[0x24f70002fffd <the_hole_value>]()  [Type: Hole]
#24:ReferenceEqual(#84:NumberConstant, #23:HeapConstant)  [Type: Boolean]
#17:ToBoolean(#2:Parameter)  [Type: Boolean]
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#26:Branch[Unspecified, False](#24:ReferenceEqual, #21:IfTrue)
#27:IfTrue(#26:Branch)
#28:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#25:HeapConstant, #9:HeapConstant, #29:FrameState, #11:JSStackCheck, #27:IfTrue)  [Type: Any]
#30:Throw(#28:JSCallRuntime, #28:JSCallRuntime)
#44:NumberConstant[0]()  [Type: Range(0, 0)]
#6:HeapConstant[0x24f700000011 <undefined>]()  [Type: Undefined]
#31:IfFalse(#26:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#31:IfFalse, #19:IfFalse)
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)  [Type: (Undefined | Range(-1074794496, -1074794496))]
#38:FrameState[UNOPTIMIZED_FRAME, 11, PokeAt(0), 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#37:JSToNumber(#34:Phi, #9:HeapConstant, #38:FrameState, #35:Checkpoint, #32:Merge)  [Type: (NaN | Range(-1074794496, -1074794496))]
#39:ToBoolean(#3:Parameter)  [Type: Boolean]
#40:Branch[Unspecified, None](#39:ToBoolean, #37:JSToNumber)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #37:JSToNumber, #43:IfTrue)
#48:HeapConstant[0x24f7000031d5 <String[1]: #C>]()  [Type: HeapConstant(0x1dcc01382e50 {0x24f7000031d5 <String[1]: #C>})]
#52:StateValues[sparse:^.....](#37:JSToNumber)  [Type: Internal]
#85:NumberConstant[1.07479e+09]()  [Type: Range(1074794496, 1074794496)]
#53:FrameState[UNOPTIMIZED_FRAME, 22, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #85:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#47:ReferenceEqual(#85:NumberConstant, #23:HeapConstant)  [Type: Boolean]
#41:IfFalse(#40:Branch)
#49:Branch[Unspecified, False](#47:ReferenceEqual, #41:IfFalse)
#50:IfTrue(#49:Branch)
#51:JSCallRuntime[ThrowAccessedUninitializedVariable, 1](#48:HeapConstant, #9:HeapConstant, #53:FrameState, #37:JSToNumber, #50:IfTrue)  [Type: Any]
#54:Throw(#51:JSCallRuntime, #51:JSCallRuntime)
#57:FrameState[UNOPTIMIZED_FRAME, 24, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #52:StateValues, #85:NumberConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#55:IfFalse(#49:Branch)
#56:Checkpoint(#57:FrameState, #37:JSToNumber, #55:IfFalse)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:JSToNumber, #85:NumberConstant, #56:Checkpoint, #55:IfFalse)  [Type: (NaN | Range(0, 0))]
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #55:IfFalse)  [Type: Range(0, 0)]
#60:NumberConstant[8]()  [Type: Range(8, 8)]
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #55:IfFalse)  [Type: Range(0, 0)]
#62:NumberConstant[65535]()  [Type: Range(65535, 65535)]
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #55:IfFalse)  [Type: Range(0, 0)]
#64:NumberConstant[4095]()  [Type: Range(4095, 4095)]
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #55:IfFalse)  [Type: Range(0, 4095)]
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #55:IfFalse)  [Type: Range(0, 4095)]
#69:NumberConstant[4097]()  [Type: Range(4097, 4097)]
#67:NumberConstant[4112]()  [Type: Range(4112, 4112)]
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #55:IfFalse)  [Type: Range(-4112, -17)]
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #55:IfFalse)  [Type: Range(-4097, -2)]
#86:CheckString[FeedbackSource(INVALID)](#4:Parameter, #70:SpeculativeSmallIntegerSubtract, #55:IfFalse)  [Type: String]
#88:CheckString[FeedbackSource(#11)](#4:Parameter, #86:CheckString, #55:IfFalse)  [Type: String]
#89:StringLength(#88:CheckString)  [Type: Range(0, 536870888)]
#90:CheckSmi[FeedbackSource(#11)](#68:SpeculativeSmallIntegerSubtract, #88:CheckString, #55:IfFalse)  [Type: Range(-4112, -17)]
#106:NumberAdd(#89:StringLength, #90:CheckSmi)  [Type: Range(-4112, 536870871)]
#107:NumberMax(#106:NumberAdd, #44:NumberConstant)  [Type: Range(0, 536870871)]
#109:NumberMin(#90:CheckSmi, #89:StringLength)  [Type: Range(-4112, -17)]
#101:NumberLessThan(#90:CheckSmi, #44:NumberConstant)  [Type: HeapConstant(0x1dcc013848d0 {0x24f700000071 <true>})]
#91:ReferenceEqual(#70:SpeculativeSmallIntegerSubtract, #6:HeapConstant)  [Type: Boolean]
#92:Branch[JS, False](#91:ReferenceEqual, #55:IfFalse)
#93:IfTrue(#92:Branch)
#94:IfFalse(#92:Branch)
#98:Merge(#93:IfTrue, #94:IfFalse)
#102:Branch[JS, False](#101:NumberLessThan, #98:Merge)
#103:IfTrue(#102:Branch)
#104:IfFalse(#102:Branch)
#110:Merge(#103:IfTrue, #104:IfFalse)
#112:Phi[kRepTagged](#107:NumberMax, #109:NumberMin, #110:Merge)  [Type: Range(-4112, 536870871)]
#97:CheckSmi[FeedbackSource(#11)](#70:SpeculativeSmallIntegerSubtract, #90:CheckSmi, #94:IfFalse)  [Type: Range(-4097, -2)]
#99:EffectPhi(#90:CheckSmi, #97:CheckSmi, #98:Merge)
#113:TypeGuard[Unsigned30](#112:Phi, #99:EffectPhi, #110:Merge)  [Type: Range(0, 536870871)]
#100:Phi[kRepTagged](#89:StringLength, #97:CheckSmi, #98:Merge)  [Type: Range(-4097, 536870888)]
#119:NumberAdd(#89:StringLength, #100:Phi)  [Type: Range(-4097, 1073741776)]
#120:NumberMax(#119:NumberAdd, #44:NumberConstant)  [Type: Range(0, 1073741776)]
#122:NumberMin(#100:Phi, #89:StringLength)  [Type: Range(-4097, 536870888)]
#114:NumberLessThan(#100:Phi, #44:NumberConstant)  [Type: Boolean]
#115:Branch[JS, False](#114:NumberLessThan, #110:Merge)
#116:IfTrue(#115:Branch)
#117:IfFalse(#115:Branch)
#123:Merge(#116:IfTrue, #117:IfFalse)
#125:Phi[kRepTagged](#120:NumberMax, #122:NumberMin, #123:Merge)  [Type: Range(-4097, 1073741776)]
#126:TypeGuard[Unsigned30](#125:Phi, #113:TypeGuard, #123:Merge)  [Type: Range(0, 1073741776)]
#127:NumberLessThan(#113:TypeGuard, #126:TypeGuard)  [Type: Boolean]
#128:Branch[JS, True](#127:NumberLessThan, #123:Merge)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#88:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)  [Type: String]
#138:Return(#44:NumberConstant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()  [Type: HeapConstant(0x1dcc01384870 {0x24f700000049 <String[0]: #>})]
#130:IfFalse(#128:Branch)
#139:Return(#44:NumberConstant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#30:Throw, #45:Return, #54:Throw, #138:Return, #139:Return)
----- Graph after V8.TFTypedLowering ----- 
#44:NumberConstant[0]()  [Type: Range(0, 0)]
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()  [Type: HeapConstant(0x1dcc01382c80 {0x24f70100c9b5 <NativeContext[309]>})]
#0:Start()  [Type: Internal]
#1:Parameter[0, debug name: %this](#0:Start)  [Type: Receiver]
#2:Parameter[1](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#3:Parameter[2](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#4:Parameter[3](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#5:Parameter[4](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)  [Type: Internal]
#13:StateValues[sparse:......]()  [Type: Internal]
#14:HeapConstant[0x24f70012fffd <optimized_out>]()  [Type: Hole]
#7:Parameter[8, debug name: %context](#0:Start)  [Type: OtherInternal]
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()  [Type: HeapConstant(0x1dcc013837a0)]
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#39:ToBoolean(#3:Parameter)  [Type: Boolean]
#17:ToBoolean(#2:Parameter)  [Type: Boolean]
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Unspecified, None](#39:ToBoolean, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()  [Type: Range(-1074794496, -1074794496)]
#6:HeapConstant[0x24f700000011 <undefined>]()  [Type: Undefined]
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)  [Type: (Undefined | Range(-1074794496, -1074794496))]
#37:PlainPrimitiveToNumber(#34:Phi)  [Type: (NaN | Range(-1074794496, -1074794496))]
#85:NumberConstant[1.07479e+09]()  [Type: Range(1074794496, 1074794496)]
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:PlainPrimitiveToNumber, #85:NumberConstant, #35:Checkpoint, #41:IfFalse)  [Type: (NaN | Range(0, 0))]
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #41:IfFalse)  [Type: Range(0, 0)]
#60:NumberConstant[8]()  [Type: Range(8, 8)]
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #41:IfFalse)  [Type: Range(0, 0)]
#62:NumberConstant[65535]()  [Type: Range(65535, 65535)]
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #41:IfFalse)  [Type: Range(0, 0)]
#64:NumberConstant[4095]()  [Type: Range(4095, 4095)]
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#69:NumberConstant[4097]()  [Type: Range(4097, 4097)]
#67:NumberConstant[4112]()  [Type: Range(4112, 4112)]
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #41:IfFalse)  [Type: Range(-4112, -17)]
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: Range(-4097, -2)]
#86:CheckString[FeedbackSource(INVALID)](#4:Parameter, #70:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: String]
#88:CheckString[FeedbackSource(#11)](#4:Parameter, #86:CheckString, #41:IfFalse)  [Type: String]
#89:StringLength(#88:CheckString)  [Type: Range(0, 536870888)]
#90:CheckSmi[FeedbackSource(#11)](#68:SpeculativeSmallIntegerSubtract, #88:CheckString, #41:IfFalse)  [Type: Range(-4112, -17)]
#106:NumberAdd(#89:StringLength, #90:CheckSmi)  [Type: Range(-4112, 536870871)]
#107:NumberMax(#106:NumberAdd, #44:NumberConstant)  [Type: Range(0, 536870871)]
#97:CheckSmi[FeedbackSource(#11)](#70:SpeculativeSmallIntegerSubtract, #90:CheckSmi, #41:IfFalse)  [Type: Range(-4097, -2)]
#113:TypeGuard[Unsigned30](#107:NumberMax, #97:CheckSmi, #41:IfFalse)  [Type: Range(0, 536870871)]
#119:NumberAdd(#89:StringLength, #97:CheckSmi)  [Type: Range(-4097, 1073741776)]
#120:NumberMax(#119:NumberAdd, #44:NumberConstant)  [Type: Range(0, 1073741776)]
#122:NumberMin(#97:CheckSmi, #89:StringLength)  [Type: Range(-4097, 536870888)]
#114:NumberLessThan(#97:CheckSmi, #44:NumberConstant)  [Type: Boolean]
#115:Branch[JS, False](#114:NumberLessThan, #41:IfFalse)
#116:IfTrue(#115:Branch)
#117:IfFalse(#115:Branch)
#123:Merge(#116:IfTrue, #117:IfFalse)
#125:Phi[kRepTagged](#120:NumberMax, #122:NumberMin, #123:Merge)  [Type: Range(-4097, 1073741776)]
#126:TypeGuard[Unsigned30](#125:Phi, #113:TypeGuard, #123:Merge)  [Type: Range(0, 1073741776)]
#127:NumberLessThan(#113:TypeGuard, #126:TypeGuard)  [Type: Boolean]
#128:Branch[JS, True](#127:NumberLessThan, #123:Merge)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#88:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)  [Type: String]
#138:Return(#44:NumberConstant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()  [Type: HeapConstant(0x1dcc01384870 {0x24f700000049 <String[0]: #>})]
#130:IfFalse(#128:Branch)
#139:Return(#44:NumberConstant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- Graph after V8.TFLoopPeeling ----- 
#44:NumberConstant[0]()  [Type: Range(0, 0)]
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()  [Type: HeapConstant(0x1dcc01382c80 {0x24f70100c9b5 <NativeContext[309]>})]
#0:Start()  [Type: Internal]
#1:Parameter[0, debug name: %this](#0:Start)  [Type: Receiver]
#2:Parameter[1](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#3:Parameter[2](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#4:Parameter[3](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#5:Parameter[4](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)  [Type: Internal]
#13:StateValues[sparse:......]()  [Type: Internal]
#14:HeapConstant[0x24f70012fffd <optimized_out>]()  [Type: Hole]
#7:Parameter[8, debug name: %context](#0:Start)  [Type: OtherInternal]
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()  [Type: HeapConstant(0x1dcc013837a0)]
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#39:ToBoolean(#3:Parameter)  [Type: Boolean]
#17:ToBoolean(#2:Parameter)  [Type: Boolean]
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Unspecified, None](#39:ToBoolean, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()  [Type: Range(-1074794496, -1074794496)]
#6:HeapConstant[0x24f700000011 <undefined>]()  [Type: Undefined]
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)  [Type: (Undefined | Range(-1074794496, -1074794496))]
#37:PlainPrimitiveToNumber(#34:Phi)  [Type: (NaN | Range(-1074794496, -1074794496))]
#85:NumberConstant[1.07479e+09]()  [Type: Range(1074794496, 1074794496)]
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:PlainPrimitiveToNumber, #85:NumberConstant, #35:Checkpoint, #41:IfFalse)  [Type: (NaN | Range(0, 0))]
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #41:IfFalse)  [Type: Range(0, 0)]
#60:NumberConstant[8]()  [Type: Range(8, 8)]
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #41:IfFalse)  [Type: Range(0, 0)]
#62:NumberConstant[65535]()  [Type: Range(65535, 65535)]
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #41:IfFalse)  [Type: Range(0, 0)]
#64:NumberConstant[4095]()  [Type: Range(4095, 4095)]
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#69:NumberConstant[4097]()  [Type: Range(4097, 4097)]
#67:NumberConstant[4112]()  [Type: Range(4112, 4112)]
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #41:IfFalse)  [Type: Range(-4112, -17)]
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: Range(-4097, -2)]
#86:CheckString[FeedbackSource(INVALID)](#4:Parameter, #70:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: String]
#88:CheckString[FeedbackSource(#11)](#4:Parameter, #86:CheckString, #41:IfFalse)  [Type: String]
#89:StringLength(#88:CheckString)  [Type: Range(0, 536870888)]
#90:CheckSmi[FeedbackSource(#11)](#68:SpeculativeSmallIntegerSubtract, #88:CheckString, #41:IfFalse)  [Type: Range(-4112, -17)]
#106:NumberAdd(#89:StringLength, #90:CheckSmi)  [Type: Range(-4112, 536870871)]
#107:NumberMax(#106:NumberAdd, #44:NumberConstant)  [Type: Range(0, 536870871)]
#97:CheckSmi[FeedbackSource(#11)](#70:SpeculativeSmallIntegerSubtract, #90:CheckSmi, #41:IfFalse)  [Type: Range(-4097, -2)]
#113:TypeGuard[Unsigned30](#107:NumberMax, #97:CheckSmi, #41:IfFalse)  [Type: Range(0, 536870871)]
#119:NumberAdd(#89:StringLength, #97:CheckSmi)  [Type: Range(-4097, 1073741776)]
#120:NumberMax(#119:NumberAdd, #44:NumberConstant)  [Type: Range(0, 1073741776)]
#122:NumberMin(#97:CheckSmi, #89:StringLength)  [Type: Range(-4097, 536870888)]
#114:NumberLessThan(#97:CheckSmi, #44:NumberConstant)  [Type: Boolean]
#115:Branch[JS, False](#114:NumberLessThan, #41:IfFalse)
#116:IfTrue(#115:Branch)
#117:IfFalse(#115:Branch)
#123:Merge(#116:IfTrue, #117:IfFalse)
#125:Phi[kRepTagged](#120:NumberMax, #122:NumberMin, #123:Merge)  [Type: Range(-4097, 1073741776)]
#126:TypeGuard[Unsigned30](#125:Phi, #113:TypeGuard, #123:Merge)  [Type: Range(0, 1073741776)]
#127:NumberLessThan(#113:TypeGuard, #126:TypeGuard)  [Type: Boolean]
#128:Branch[JS, True](#127:NumberLessThan, #123:Merge)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#88:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)  [Type: String]
#138:Return(#44:NumberConstant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()  [Type: HeapConstant(0x1dcc01384870 {0x24f700000049 <String[0]: #>})]
#130:IfFalse(#128:Branch)
#139:Return(#44:NumberConstant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- Graph after V8.TFLoadElimination ----- 
#44:NumberConstant[0]()  [Type: Range(0, 0)]
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()  [Type: HeapConstant(0x1dcc01382c80 {0x24f70100c9b5 <NativeContext[309]>})]
#0:Start()  [Type: Internal]
#1:Parameter[0, debug name: %this](#0:Start)  [Type: Receiver]
#2:Parameter[1](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#3:Parameter[2](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#4:Parameter[3](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#5:Parameter[4](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)  [Type: Internal]
#13:StateValues[sparse:......]()  [Type: Internal]
#14:HeapConstant[0x24f70012fffd <optimized_out>]()  [Type: Hole]
#7:Parameter[8, debug name: %context](#0:Start)  [Type: OtherInternal]
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()  [Type: HeapConstant(0x1dcc013837a0)]
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#39:ToBoolean(#3:Parameter)  [Type: Boolean]
#17:ToBoolean(#2:Parameter)  [Type: Boolean]
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Unspecified, None](#39:ToBoolean, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()  [Type: Range(-1074794496, -1074794496)]
#6:HeapConstant[0x24f700000011 <undefined>]()  [Type: Undefined]
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)  [Type: (Undefined | Range(-1074794496, -1074794496))]
#37:PlainPrimitiveToNumber(#34:Phi)  [Type: (NaN | Range(-1074794496, -1074794496))]
#85:NumberConstant[1.07479e+09]()  [Type: Range(1074794496, 1074794496)]
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:PlainPrimitiveToNumber, #85:NumberConstant, #35:Checkpoint, #41:IfFalse)  [Type: (NaN | Range(0, 0))]
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #41:IfFalse)  [Type: Range(0, 0)]
#60:NumberConstant[8]()  [Type: Range(8, 8)]
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #41:IfFalse)  [Type: Range(0, 0)]
#62:NumberConstant[65535]()  [Type: Range(65535, 65535)]
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #41:IfFalse)  [Type: Range(0, 0)]
#64:NumberConstant[4095]()  [Type: Range(4095, 4095)]
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#69:NumberConstant[4097]()  [Type: Range(4097, 4097)]
#67:NumberConstant[4112]()  [Type: Range(4112, 4112)]
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #41:IfFalse)  [Type: Range(-4112, -17)]
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: Range(-4097, -2)]
#86:CheckString[FeedbackSource(INVALID)](#4:Parameter, #70:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: String]
#89:StringLength(#86:CheckString)  [Type: Range(0, 536870888)]
#90:CheckSmi[FeedbackSource(#11)](#68:SpeculativeSmallIntegerSubtract, #86:CheckString, #41:IfFalse)  [Type: Range(-4112, -17)]
#106:NumberAdd(#89:StringLength, #90:CheckSmi)  [Type: Range(-4112, 536870871)]
#107:NumberMax(#106:NumberAdd, #44:NumberConstant)  [Type: Range(0, 536870871)]
#97:CheckSmi[FeedbackSource(#11)](#70:SpeculativeSmallIntegerSubtract, #90:CheckSmi, #41:IfFalse)  [Type: Range(-4097, -2)]
#113:TypeGuard[Unsigned30](#107:NumberMax, #97:CheckSmi, #41:IfFalse)  [Type: Range(0, 536870871)]
#119:NumberAdd(#89:StringLength, #97:CheckSmi)  [Type: Range(-4097, 536870886)]
#120:NumberMax(#119:NumberAdd, #44:NumberConstant)  [Type: Range(0, 536870886)]
#126:TypeGuard[Unsigned30](#120:NumberMax, #113:TypeGuard, #41:IfFalse)  [Type: Range(0, 536870886)]
#127:NumberLessThan(#113:TypeGuard, #126:TypeGuard)  [Type: Boolean]
#128:Branch[JS, True](#127:NumberLessThan, #41:IfFalse)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#86:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)  [Type: String]
#138:Return(#44:NumberConstant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()  [Type: HeapConstant(0x1dcc01384870 {0x24f700000049 <String[0]: #>})]
#130:IfFalse(#128:Branch)
#139:Return(#44:NumberConstant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- Graph after V8.TFEscapeAnalysis ----- 
#44:NumberConstant[0]()  [Type: Range(0, 0)]
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()  [Type: HeapConstant(0x1dcc01382c80 {0x24f70100c9b5 <NativeContext[309]>})]
#0:Start()  [Type: Internal]
#1:Parameter[0, debug name: %this](#0:Start)  [Type: Receiver]
#2:Parameter[1](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#3:Parameter[2](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#4:Parameter[3](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#5:Parameter[4](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#12:StateValues[dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)  [Type: Internal]
#13:StateValues[sparse:......]()  [Type: Internal]
#14:HeapConstant[0x24f70012fffd <optimized_out>]()  [Type: Hole]
#7:Parameter[8, debug name: %context](#0:Start)  [Type: OtherInternal]
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()  [Type: HeapConstant(0x1dcc013837a0)]
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #14:HeapConstant, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#39:ToBoolean(#3:Parameter)  [Type: Boolean]
#17:ToBoolean(#2:Parameter)  [Type: Boolean]
#18:Branch[Unspecified, None](#17:ToBoolean, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Unspecified, None](#39:ToBoolean, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#44:NumberConstant, #44:NumberConstant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()  [Type: Range(-1074794496, -1074794496)]
#6:HeapConstant[0x24f700000011 <undefined>]()  [Type: Undefined]
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)  [Type: (Undefined | Range(-1074794496, -1074794496))]
#37:PlainPrimitiveToNumber(#34:Phi)  [Type: (NaN | Range(-1074794496, -1074794496))]
#85:NumberConstant[1.07479e+09]()  [Type: Range(1074794496, 1074794496)]
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:StateValues, #13:StateValues, #34:Phi, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#58:SpeculativeAdditiveSafeIntegerAdd[AdditiveSafeInteger](#37:PlainPrimitiveToNumber, #85:NumberConstant, #35:Checkpoint, #41:IfFalse)  [Type: (NaN | Range(0, 0))]
#59:SpeculativeNumberBitwiseOr[Number](#58:SpeculativeAdditiveSafeIntegerAdd, #44:NumberConstant, #58:SpeculativeAdditiveSafeIntegerAdd, #41:IfFalse)  [Type: Range(0, 0)]
#60:NumberConstant[8]()  [Type: Range(8, 8)]
#61:SpeculativeNumberShiftRightLogical[SignedSmall](#59:SpeculativeNumberBitwiseOr, #60:NumberConstant, #59:SpeculativeNumberBitwiseOr, #41:IfFalse)  [Type: Range(0, 0)]
#62:NumberConstant[65535]()  [Type: Range(65535, 65535)]
#63:SpeculativeNumberBitwiseAnd[SignedSmall](#61:SpeculativeNumberShiftRightLogical, #62:NumberConstant, #61:SpeculativeNumberShiftRightLogical, #41:IfFalse)  [Type: Range(0, 0)]
#64:NumberConstant[4095]()  [Type: Range(4095, 4095)]
#65:SpeculativeNumberBitwiseAnd[SignedSmall](#5:Parameter, #64:NumberConstant, #63:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#66:SpeculativeSmallIntegerAdd[SignedSmall](#63:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #65:SpeculativeNumberBitwiseAnd, #41:IfFalse)  [Type: Range(0, 4095)]
#69:NumberConstant[4097]()  [Type: Range(4097, 4097)]
#67:NumberConstant[4112]()  [Type: Range(4112, 4112)]
#68:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #67:NumberConstant, #66:SpeculativeSmallIntegerAdd, #41:IfFalse)  [Type: Range(-4112, -17)]
#70:SpeculativeSmallIntegerSubtract[SignedSmall](#66:SpeculativeSmallIntegerAdd, #69:NumberConstant, #68:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: Range(-4097, -2)]
#86:CheckString[FeedbackSource(INVALID)](#4:Parameter, #70:SpeculativeSmallIntegerSubtract, #41:IfFalse)  [Type: String]
#89:StringLength(#86:CheckString)  [Type: Range(0, 536870888)]
#90:CheckSmi[FeedbackSource(#11)](#68:SpeculativeSmallIntegerSubtract, #86:CheckString, #41:IfFalse)  [Type: Range(-4112, -17)]
#106:NumberAdd(#89:StringLength, #90:CheckSmi)  [Type: Range(-4112, 536870871)]
#107:NumberMax(#106:NumberAdd, #44:NumberConstant)  [Type: Range(0, 536870871)]
#97:CheckSmi[FeedbackSource(#11)](#70:SpeculativeSmallIntegerSubtract, #90:CheckSmi, #41:IfFalse)  [Type: Range(-4097, -2)]
#113:TypeGuard[Unsigned30](#107:NumberMax, #97:CheckSmi, #41:IfFalse)  [Type: Range(0, 536870871)]
#119:NumberAdd(#89:StringLength, #97:CheckSmi)  [Type: Range(-4097, 536870886)]
#120:NumberMax(#119:NumberAdd, #44:NumberConstant)  [Type: Range(0, 536870886)]
#126:TypeGuard[Unsigned30](#120:NumberMax, #113:TypeGuard, #41:IfFalse)  [Type: Range(0, 536870886)]
#127:NumberLessThan(#113:TypeGuard, #126:TypeGuard)  [Type: Boolean]
#128:Branch[JS, True](#127:NumberLessThan, #41:IfFalse)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#86:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)  [Type: String]
#138:Return(#44:NumberConstant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()  [Type: HeapConstant(0x1dcc01384870 {0x24f700000049 <String[0]: #>})]
#130:IfFalse(#128:Branch)
#139:Return(#44:NumberConstant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- Graph after V8.TFSimplifiedLowering ----- 
#150:Int32Constant[0]()
#146:Int64Constant[0]()
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()  [Type: HeapConstant(0x1dcc01382c80 {0x24f70100c9b5 <NativeContext[309]>})]
#0:Start()  [Type: Internal]
#1:Parameter[0, debug name: %this](#0:Start)  [Type: Receiver]
#2:Parameter[1](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#3:Parameter[2](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#4:Parameter[3](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#5:Parameter[4](#0:Start)  [Type: (StringOrOddball | SymbolOrReceiver | NumberOrHole | BigInt)]
#12:TypedStateValues[kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)  [Type: Internal]
#13:TypedStateValues[, sparse:......]()  [Type: Internal]
#147:TypedStateValues[, sparse:.]()
#7:Parameter[8, debug name: %context](#0:Start)  [Type: OtherInternal]
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()  [Type: HeapConstant(0x1dcc013837a0)]
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #147:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#148:TruncateTaggedToBit(#3:Parameter)
#149:TruncateTaggedToBit(#2:Parameter)
#18:Branch[Machine, None](#149:TruncateTaggedToBit, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Machine, None](#148:TruncateTaggedToBit, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#150:Int32Constant, #146:Int64Constant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()  [Type: Range(-1074794496, -1074794496)]
#6:HeapConstant[0x24f700000011 <undefined>]()  [Type: Undefined]
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)  [Type: (Undefined | Range(-1074794496, -1074794496))]
#152:TypedStateValues[kRepTagged|kTypeAny, dense](#34:Phi)
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #152:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)  [Type: Internal]
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#159:CheckedTaggedSignedToInt32[FeedbackSource(INVALID)](#5:Parameter, #35:Checkpoint, #41:IfFalse)
#165:CheckedTaggedToTaggedPointer[FeedbackSource(INVALID)](#4:Parameter, #159:CheckedTaggedSignedToInt32, #41:IfFalse)
#86:CheckString[FeedbackSource(INVALID)](#165:CheckedTaggedToTaggedPointer, #165:CheckedTaggedToTaggedPointer, #41:IfFalse)  [Type: String]
#89:StringLength(#86:CheckString)  [Type: Range(0, 536870888)]
#151:TruncateNumberOrOddballToWord32(#34:Phi)
#153:Int32Constant[1074794496]()
#58:Int32Add(#151:TruncateNumberOrOddballToWord32, #153:Int32Constant)  [Type: (NaN | Range(0, 0))]
#59:Word32Or(#58:Int32Add, #150:Int32Constant)  [Type: Range(0, 0)]
#155:Int32Constant[8]()
#61:Word32Shr(#59:Word32Or, #155:Int32Constant)  [Type: Range(0, 0)]
#157:Int32Constant[65535]()
#63:Word32And(#61:Word32Shr, #157:Int32Constant)  [Type: Range(0, 0)]
#160:Int32Constant[4095]()
#65:Word32And(#159:CheckedTaggedSignedToInt32, #160:Int32Constant)  [Type: Range(0, 4095)]
#66:Int32Add(#63:Word32And, #65:Word32And)  [Type: Range(0, 4095)]
#163:Int32Constant[4112]()
#68:Int32Sub(#66:Int32Add, #163:Int32Constant)  [Type: Range(-4112, -17)]
#166:ChangeInt31ToTaggedSigned(#68:Int32Sub)
#167:ChangeTaggedSignedToInt32(#166:ChangeInt31ToTaggedSigned)
#106:Int32Add(#89:StringLength, #167:ChangeTaggedSignedToInt32)  [Type: Range(-4112, 536870871)]
#168:Int32LessThan(#106:Int32Add, #150:Int32Constant)
#107:Select[kRepWord32, None, Unspecified](#168:Int32LessThan, #150:Int32Constant, #106:Int32Add)  [Type: Range(0, 536870871)]
#113:TypeGuard[Unsigned30](#107:Select, #86:CheckString, #41:IfFalse)  [Type: Range(0, 536870871)]
#164:Int32Constant[4097]()
#70:Int32Sub(#66:Int32Add, #164:Int32Constant)  [Type: Range(-4097, -2)]
#169:ChangeInt31ToTaggedSigned(#70:Int32Sub)
#170:ChangeTaggedSignedToInt32(#169:ChangeInt31ToTaggedSigned)
#119:Int32Add(#89:StringLength, #170:ChangeTaggedSignedToInt32)  [Type: Range(-4097, 536870886)]
#171:Int32LessThan(#119:Int32Add, #150:Int32Constant)
#120:Select[kRepWord32, None, Unspecified](#171:Int32LessThan, #150:Int32Constant, #119:Int32Add)  [Type: Range(0, 536870886)]
#126:TypeGuard[Unsigned30](#120:Select, #113:TypeGuard, #41:IfFalse)  [Type: Range(0, 536870886)]
#127:Uint32LessThan(#113:TypeGuard, #126:TypeGuard)  [Type: Boolean]
#128:Branch[Machine, True](#127:Uint32LessThan, #41:IfFalse)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#86:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)  [Type: String]
#138:Return(#150:Int32Constant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()  [Type: HeapConstant(0x1dcc01384870 {0x24f700000049 <String[0]: #>})]
#130:IfFalse(#128:Branch)
#139:Return(#150:Int32Constant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- Graph after V8.TFUntyper ----- 
#150:Int32Constant[0]()
#146:Int64Constant[0]()
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()
#0:Start()
#1:Parameter[0, debug name: %this](#0:Start)
#2:Parameter[1](#0:Start)
#3:Parameter[2](#0:Start)
#4:Parameter[3](#0:Start)
#5:Parameter[4](#0:Start)
#12:TypedStateValues[kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)
#13:TypedStateValues[, sparse:......]()
#147:TypedStateValues[, sparse:.]()
#7:Parameter[8, debug name: %context](#0:Start)
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #147:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#148:TruncateTaggedToBit(#3:Parameter)
#149:TruncateTaggedToBit(#2:Parameter)
#18:Branch[Machine, None](#149:TruncateTaggedToBit, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Machine, None](#148:TruncateTaggedToBit, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#150:Int32Constant, #146:Int64Constant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()
#6:HeapConstant[0x24f700000011 <undefined>]()
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)
#152:TypedStateValues[kRepTagged|kTypeAny, dense](#34:Phi)
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #152:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#159:CheckedTaggedSignedToInt32[FeedbackSource(INVALID)](#5:Parameter, #35:Checkpoint, #41:IfFalse)
#165:CheckedTaggedToTaggedPointer[FeedbackSource(INVALID)](#4:Parameter, #159:CheckedTaggedSignedToInt32, #41:IfFalse)
#86:CheckString[FeedbackSource(INVALID)](#165:CheckedTaggedToTaggedPointer, #165:CheckedTaggedToTaggedPointer, #41:IfFalse)
#89:StringLength(#86:CheckString)
#151:TruncateNumberOrOddballToWord32(#34:Phi)
#153:Int32Constant[1074794496]()
#58:Int32Add(#151:TruncateNumberOrOddballToWord32, #153:Int32Constant)
#59:Word32Or(#58:Int32Add, #150:Int32Constant)
#155:Int32Constant[8]()
#61:Word32Shr(#59:Word32Or, #155:Int32Constant)
#157:Int32Constant[65535]()
#63:Word32And(#61:Word32Shr, #157:Int32Constant)
#160:Int32Constant[4095]()
#65:Word32And(#159:CheckedTaggedSignedToInt32, #160:Int32Constant)
#66:Int32Add(#63:Word32And, #65:Word32And)
#163:Int32Constant[4112]()
#68:Int32Sub(#66:Int32Add, #163:Int32Constant)
#166:ChangeInt31ToTaggedSigned(#68:Int32Sub)
#167:ChangeTaggedSignedToInt32(#166:ChangeInt31ToTaggedSigned)
#106:Int32Add(#89:StringLength, #167:ChangeTaggedSignedToInt32)
#168:Int32LessThan(#106:Int32Add, #150:Int32Constant)
#107:Select[kRepWord32, None, Unspecified](#168:Int32LessThan, #150:Int32Constant, #106:Int32Add)
#113:TypeGuard[Unsigned30](#107:Select, #86:CheckString, #41:IfFalse)
#164:Int32Constant[4097]()
#70:Int32Sub(#66:Int32Add, #164:Int32Constant)
#169:ChangeInt31ToTaggedSigned(#70:Int32Sub)
#170:ChangeTaggedSignedToInt32(#169:ChangeInt31ToTaggedSigned)
#119:Int32Add(#89:StringLength, #170:ChangeTaggedSignedToInt32)
#171:Int32LessThan(#119:Int32Add, #150:Int32Constant)
#120:Select[kRepWord32, None, Unspecified](#171:Int32LessThan, #150:Int32Constant, #119:Int32Add)
#126:TypeGuard[Unsigned30](#120:Select, #113:TypeGuard, #41:IfFalse)
#127:Uint32LessThan(#113:TypeGuard, #126:TypeGuard)
#128:Branch[Machine, True](#127:Uint32LessThan, #41:IfFalse)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#86:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)
#138:Return(#150:Int32Constant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()
#130:IfFalse(#128:Branch)
#139:Return(#150:Int32Constant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- Graph after V8.TFGenericLowering ----- 
#150:Int32Constant[0]()
#146:Int64Constant[0]()
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()
#0:Start()
#1:Parameter[0, debug name: %this](#0:Start)
#2:Parameter[1](#0:Start)
#3:Parameter[2](#0:Start)
#4:Parameter[3](#0:Start)
#5:Parameter[4](#0:Start)
#12:TypedStateValues[kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)
#13:TypedStateValues[, sparse:......]()
#147:TypedStateValues[, sparse:.]()
#7:Parameter[8, debug name: %context](#0:Start)
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #147:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#148:TruncateTaggedToBit(#3:Parameter)
#149:TruncateTaggedToBit(#2:Parameter)
#18:Branch[Machine, None](#149:TruncateTaggedToBit, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Machine, None](#148:TruncateTaggedToBit, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#150:Int32Constant, #146:Int64Constant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()
#6:HeapConstant[0x24f700000011 <undefined>]()
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)
#152:TypedStateValues[kRepTagged|kTypeAny, dense](#34:Phi)
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #152:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#159:CheckedTaggedSignedToInt32[FeedbackSource(INVALID)](#5:Parameter, #35:Checkpoint, #41:IfFalse)
#165:CheckedTaggedToTaggedPointer[FeedbackSource(INVALID)](#4:Parameter, #159:CheckedTaggedSignedToInt32, #41:IfFalse)
#86:CheckString[FeedbackSource(INVALID)](#165:CheckedTaggedToTaggedPointer, #165:CheckedTaggedToTaggedPointer, #41:IfFalse)
#89:StringLength(#86:CheckString)
#151:TruncateNumberOrOddballToWord32(#34:Phi)
#153:Int32Constant[1074794496]()
#58:Int32Add(#151:TruncateNumberOrOddballToWord32, #153:Int32Constant)
#59:Word32Or(#58:Int32Add, #150:Int32Constant)
#155:Int32Constant[8]()
#61:Word32Shr(#59:Word32Or, #155:Int32Constant)
#157:Int32Constant[65535]()
#63:Word32And(#61:Word32Shr, #157:Int32Constant)
#160:Int32Constant[4095]()
#65:Word32And(#159:CheckedTaggedSignedToInt32, #160:Int32Constant)
#66:Int32Add(#63:Word32And, #65:Word32And)
#163:Int32Constant[4112]()
#68:Int32Sub(#66:Int32Add, #163:Int32Constant)
#166:ChangeInt31ToTaggedSigned(#68:Int32Sub)
#167:ChangeTaggedSignedToInt32(#166:ChangeInt31ToTaggedSigned)
#106:Int32Add(#89:StringLength, #167:ChangeTaggedSignedToInt32)
#168:Int32LessThan(#106:Int32Add, #150:Int32Constant)
#107:Select[kRepWord32, None, Unspecified](#168:Int32LessThan, #150:Int32Constant, #106:Int32Add)
#113:TypeGuard[Unsigned30](#107:Select, #86:CheckString, #41:IfFalse)
#164:Int32Constant[4097]()
#70:Int32Sub(#66:Int32Add, #164:Int32Constant)
#169:ChangeInt31ToTaggedSigned(#70:Int32Sub)
#170:ChangeTaggedSignedToInt32(#169:ChangeInt31ToTaggedSigned)
#119:Int32Add(#89:StringLength, #170:ChangeTaggedSignedToInt32)
#171:Int32LessThan(#119:Int32Add, #150:Int32Constant)
#120:Select[kRepWord32, None, Unspecified](#171:Int32LessThan, #150:Int32Constant, #119:Int32Add)
#126:TypeGuard[Unsigned30](#120:Select, #113:TypeGuard, #41:IfFalse)
#127:Uint32LessThan(#113:TypeGuard, #126:TypeGuard)
#128:Branch[Machine, True](#127:Uint32LessThan, #41:IfFalse)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#86:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)
#138:Return(#150:Int32Constant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()
#130:IfFalse(#128:Branch)
#139:Return(#150:Int32Constant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- Graph after V8.TFEarlyOptimization ----- 
#150:Int32Constant[0]()
#146:Int64Constant[0]()
#9:HeapConstant[0x24f70100c9b5 <NativeContext[309]>]()
#0:Start()
#1:Parameter[0, debug name: %this](#0:Start)
#2:Parameter[1](#0:Start)
#3:Parameter[2](#0:Start)
#4:Parameter[3](#0:Start)
#5:Parameter[4](#0:Start)
#12:TypedStateValues[kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, dense](#1:Parameter, #2:Parameter, #3:Parameter, #4:Parameter, #5:Parameter)
#13:TypedStateValues[, sparse:......]()
#147:TypedStateValues[, sparse:.]()
#7:Parameter[8, debug name: %context](#0:Start)
#83:HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]()
#16:FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #147:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)
#11:JSStackCheck[JSFunctionEntry](#9:HeapConstant, #16:FrameState, #0:Start, #0:Start)
#148:TruncateTaggedToBit(#3:Parameter)
#149:TruncateTaggedToBit(#2:Parameter)
#18:Branch[Machine, None](#149:TruncateTaggedToBit, #11:JSStackCheck)
#21:IfTrue(#18:Branch)
#19:IfFalse(#18:Branch)
#32:Merge(#21:IfTrue, #19:IfFalse)
#40:Branch[Machine, None](#148:TruncateTaggedToBit, #32:Merge)
#43:IfTrue(#40:Branch)
#45:Return(#150:Int32Constant, #146:Int64Constant, #11:JSStackCheck, #43:IfTrue)
#84:NumberConstant[-1.07479e+09]()
#6:HeapConstant[0x24f700000011 <undefined>]()
#34:Phi[kRepTagged](#84:NumberConstant, #6:HeapConstant, #32:Merge)
#152:TypedStateValues[kRepTagged|kTypeAny, dense](#34:Phi)
#36:FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](#12:TypedStateValues, #13:TypedStateValues, #152:TypedStateValues, #7:Parameter, #83:HeapConstant, #0:Start)
#35:Checkpoint(#36:FrameState, #11:JSStackCheck, #32:Merge)
#41:IfFalse(#40:Branch)
#159:CheckedTaggedSignedToInt32[FeedbackSource(INVALID)](#5:Parameter, #35:Checkpoint, #41:IfFalse)
#165:CheckedTaggedToTaggedPointer[FeedbackSource(INVALID)](#4:Parameter, #159:CheckedTaggedSignedToInt32, #41:IfFalse)
#86:CheckString[FeedbackSource(INVALID)](#165:CheckedTaggedToTaggedPointer, #165:CheckedTaggedToTaggedPointer, #41:IfFalse)
#89:StringLength(#86:CheckString)
#151:TruncateNumberOrOddballToWord32(#34:Phi)
#153:Int32Constant[1074794496]()
#58:Int32Add(#151:TruncateNumberOrOddballToWord32, #153:Int32Constant)
#155:Int32Constant[8]()
#61:Word32Shr(#58:Int32Add, #155:Int32Constant)
#157:Int32Constant[65535]()
#63:Word32And(#61:Word32Shr, #157:Int32Constant)
#160:Int32Constant[4095]()
#65:Word32And(#159:CheckedTaggedSignedToInt32, #160:Int32Constant)
#66:Int32Add(#63:Word32And, #65:Word32And)
#174:Int32Constant[-4112]()
#68:Int32Add(#66:Int32Add, #174:Int32Constant)
#106:Int32Add(#89:StringLength, #68:Int32Add)
#168:Int32LessThan(#106:Int32Add, #150:Int32Constant)
#107:Select[kRepWord32, None, Unspecified](#168:Int32LessThan, #150:Int32Constant, #106:Int32Add)
#113:TypeGuard[Unsigned30](#107:Select, #86:CheckString, #41:IfFalse)
#175:Int32Constant[-4097]()
#70:Int32Add(#66:Int32Add, #175:Int32Constant)
#119:Int32Add(#89:StringLength, #70:Int32Add)
#171:Int32LessThan(#119:Int32Add, #150:Int32Constant)
#120:Select[kRepWord32, None, Unspecified](#171:Int32LessThan, #150:Int32Constant, #119:Int32Add)
#126:TypeGuard[Unsigned30](#120:Select, #113:TypeGuard, #41:IfFalse)
#127:Uint32LessThan(#113:TypeGuard, #126:TypeGuard)
#128:Branch[Machine, True](#127:Uint32LessThan, #41:IfFalse)
#129:IfTrue(#128:Branch)
#132:StringSubstring(#86:CheckString, #113:TypeGuard, #126:TypeGuard, #126:TypeGuard, #129:IfTrue)
#138:Return(#150:Int32Constant, #132:StringSubstring, #132:StringSubstring, #129:IfTrue)
#134:HeapConstant[0x24f700000049 <String[0]: #>]()
#130:IfFalse(#128:Branch)
#139:Return(#150:Int32Constant, #134:HeapConstant, #126:TypeGuard, #130:IfFalse)
#80:End(#45:Return, #138:Return, #139:Return)
----- schedule -----
--- BLOCK B0 id0 ---
  0: Start
  7: Parameter[8, debug name: %context](0)
  1: Parameter[0, debug name: %this](0)
  2: Parameter[1](0)
  3: Parameter[2](0)
  4: Parameter[3](0)
  5: Parameter[4](0)
  149: TruncateTaggedToBit(2)
  83: HeapConstant[0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  147: TypedStateValues[, sparse:.]
  13: TypedStateValues[, sparse:......]
  12: TypedStateValues[kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, dense](1, 2, 3, 4, 5)
  16: FrameState[UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](12, 13, 147, 7, 83, 0)
  9: HeapConstant[0x24f70100c9b5 <NativeContext[309]>]
  11: JSStackCheck[JSFunctionEntry](9, 16, 0, 0)
  18: Branch[Machine, None](149, 11) -> B2, B1
--- BLOCK B1 id8 <- B0 ---
  19: IfFalse(18)
  6: HeapConstant[0x24f700000011 <undefined>]
  Goto -> B3
--- BLOCK B2 id7 <- B0 ---
  21: IfTrue(18)
  84: NumberConstant[-1.07479e+09]
  Goto -> B3
--- BLOCK B3 id6 <- B2, B1 ---
  32: Merge(21, 19)
  34: Phi[kRepTagged](84, 6, 32)
  148: TruncateTaggedToBit(3)
  150: Int32Constant[0]
  40: Branch[Machine, None](148, 32) -> B7, B4
--- BLOCK B4 id3 <- B3 ---
  41: IfFalse(40)
  152: TypedStateValues[kRepTagged|kTypeAny, dense](34)
  36: FrameState[UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>](12, 13, 152, 7, 83, 0)
  153: Int32Constant[1074794496]
  151: TruncateNumberOrOddballToWord32(34)
  35: Checkpoint(36, 11, 32)
  155: Int32Constant[8]
  58: Int32Add(151, 153)
  160: Int32Constant[4095]
  159: CheckedTaggedSignedToInt32[FeedbackSource(INVALID)](5, 35, 41)
  157: Int32Constant[65535]
  61: Word32Shr(58, 155)
  65: Word32And(159, 160)
  63: Word32And(61, 157)
  165: CheckedTaggedToTaggedPointer[FeedbackSource(INVALID)](4, 159, 41)
  174: Int32Constant[-4112]
  66: Int32Add(63, 65)
  86: CheckString[FeedbackSource(INVALID)](165, 165, 41)
  68: Int32Add(66, 174)
  89: StringLength(86)
  175: Int32Constant[-4097]
  106: Int32Add(89, 68)
  70: Int32Add(66, 175)
  168: Int32LessThan(106, 150)
  119: Int32Add(89, 70)
  107: Select[kRepWord32, None, Unspecified](168, 150, 106)
  171: Int32LessThan(119, 150)
  113: TypeGuard[Unsigned30](107, 86, 41)
  120: Select[kRepWord32, None, Unspecified](171, 150, 119)
  126: TypeGuard[Unsigned30](120, 113, 41)
  127: Uint32LessThan(113, 126)
  128: Branch[Machine, True](127, 41) -> B6, B5
--- BLOCK B5 id5 (deferred) <- B4 ---
  130: IfFalse(128)
  134: HeapConstant[0x24f700000049 <String[0]: #>]
  139: Return(150, 134, 126, 130) -> B8
--- BLOCK B6 id4 <- B4 ---
  129: IfTrue(128)
  132: StringSubstring(86, 113, 126, 126, 129)
  138: Return(150, 132, 132, 129) -> B8
--- BLOCK B7 id2 <- B3 ---
  43: IfTrue(40)
  146: Int64Constant[0]
  45: Return(150, 146, 11, 43) -> B8
--- BLOCK B8 id1 <- B7, B6, B5 ---
  80: End(45, 138, 139)

----- V8.TFTurboshaftBuildGraph -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: TruncateJSPrimitiveToUntagged(#3)[Bit, Object]
   10: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   11: FrameState(#10, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #10(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   14: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   15: JSStackCheck(#14, #11)[function-entry]
   16: Branch(#9)[B2, B1, None]

BLOCK B1 <- B0
   18: Constant()[heap object: 0x24f700000011 <undefined>]
   19: Goto()[B3, 0]

BLOCK B2 <- B0
   20: Constant()[number: -1.07479e+09]
   21: Goto()[B3, 0]

MERGE B3 <- B1, B2
   22: Phi(#18, #20)[Tagged]
   23: TruncateJSPrimitiveToUntagged(#4)[Bit, Object]
   24: Constant()[word32: 0]
   25: Branch(#23)[B7, B4, None]

BLOCK B4 <- B3
   27: FrameState(#10, #1, #3, #4, #6, #7, #0, #22)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #10(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #22(kRepTagged|kTypeAny)]
   30: Constant()[word32: 1074794496]
   31: TruncateJSPrimitiveToUntagged(#22)[Int32, NumberOrOddball]
   32: Constant()[word32: 8]
   33: WordBinop(#31, #30)[Add, Word32]
   34: Constant()[word32: 4095]
   35: ConvertJSPrimitiveToUntaggedOrDeopt(#7, #27)[Smi, Int32, dont-check-for-minus-zero, FeedbackSource(INVALID)]
   37: Constant()[word32: 65535]
   38: Shift(#33, #32)[ShiftRightLogical, Word32]
   39: WordBinop(#35, #34)[BitwiseAnd, Word32]
   40: WordBinop(#38, #37)[BitwiseAnd, Word32]
   41: ObjectIs(#6)[Smi, None]
   42: DeoptimizeIf(#41, #27)[Smi, FeedbackSource(INVALID)]
   43: Constant()[word32: -4112]
   44: WordBinop(#40, #39)[Add, Word32]
   45: ObjectIs(#6)[String, HeapObject]
   46: DeoptimizeIf(#45, #27)[negated, NotAString, FeedbackSource(INVALID)]
   48: WordBinop(#44, #43)[Add, Word32]
   49: StringLength(#6)
   50: Constant()[word32: -4097]
   51: WordBinop(#49, #48)[Add, Word32]
   52: WordBinop(#44, #50)[Add, Word32]
   53: Comparison(#51, #24)[SignedLessThan, Word32]
   54: WordBinop(#49, #52)[Add, Word32]
   55: Select(#53, #24, #51)[Word32, None, Any]
   56: Comparison(#54, #24)[SignedLessThan, Word32]
   57: Select(#56, #24, #54)[Word32, None, Any]
   59: Comparison(#55, #57)[UnsignedLessThan, Word32]
   60: Branch(#59)[B6, B5, True]

BLOCK B5 <- B4
   62: Constant()[heap object: 0x24f700000049 <String[0]: #>]
   63: Return(#24, #62)[0]

BLOCK B6 <- B4
   64: StringSubstring(#6, #55, #57)
   65: Return(#24, #64)[0]

BLOCK B7 <- B3
   66: Constant()[word64: 0]
   67: Return(#24, #66)[0]

----- V8.TFTurboshaftMachineLowering -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: Constant()[word32: 1]
   10: WordBinop(#3, #9)[BitwiseAnd, Word32]
   11: Constant()[word32: 0]
   12: Comparison(#10, #11)[Equal, Word32]
   13: Branch(#10)[B2, B1, True]

BLOCK B1 <- B0
   15: Constant()[smi: 0]
   16: Comparison(#3, #15)[Equal, Tagged]
   17: Comparison(#16, #11)[Equal, Word32]
   18: Goto()[B14, 0]

BLOCK B2 <- B0
   19: Goto()[B3, 0]

MERGE B3 <- B2
   20: TaggedBitcast(#3)[Tagged, Word64, HeapObject]
   21: Change(#20)[Truncate, NoAssumption, Word64, Word32]
   22: Constant()[word32: 113]
   23: Comparison(#21, #22)[UnsignedLessThan, Word32]
   24: Branch(#23)[B4, B5, None]

BLOCK B4 <- B3
   26: Goto()[B14, 0]

BLOCK B5 <- B3
   27: Comparison(#21, #22)[Equal, Word32]
   28: Branch(#27)[B6, B7, None]

BLOCK B6 <- B5
   30: Goto()[B14, 0]

BLOCK B7 <- B5
   31: Load *(#3) [tagged base, TaggedPointer, Tagged]
   32: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
   33: Comparison(#31, #32)[Equal, Tagged]
   34: Branch(#33)[B8, B9, False]

BLOCK B8 <- B7
   36: Load *(#3 + 4) [tagged base, Float64, Float64, offset: 4]
   37: FloatUnary(#36)[Abs, Float64]
   38: Constant()[float64: 0]
   39: Comparison(#38, #37)[SignedLessThan, Float64]
   40: Goto()[B14, 0]

BLOCK B9 <- B7
   41: Goto()[B10, 0]

MERGE B10 <- B9
   42: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
   43: Comparison(#31, #42)[Equal, Tagged]
   44: Branch(#43)[B11, B12, False]

BLOCK B11 <- B10
   46: Load *(#3 + 4) [tagged base, Uint32, Word32, offset: 4]
   47: Constant()[word32: -256]
   48: WordBinop(#46, #47)[BitwiseAnd, Word32]
   49: Comparison(#48, #11)[Equal, Word32]
   50: Comparison(#49, #11)[Equal, Word32]
   51: Goto()[B14, 0]

BLOCK B12 <- B10
   52: Goto()[B13, 0]

MERGE B13 <- B12
   53: Goto()[B14, 0]

MERGE B14 <- B1, B4, B6, B8, B11, B13
   54: Phi(#17, #11, #9, #39, #50, #9)[Word32]
   56: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   57: FrameState(#56, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #56(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   60: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   61: JSStackCheck(#60, #57)[function-entry]
   62: Branch(#54)[B16, B15, None]

BLOCK B15 <- B14
   64: Constant()[heap object: 0x24f700000011 <undefined>]
   65: Goto()[B17, 0]

BLOCK B16 <- B14
   66: Constant()[number: -1.07479e+09]
   67: Goto()[B17, 0]

MERGE B17 <- B15, B16
   68: Phi(#64, #66)[Tagged]
   69: WordBinop(#4, #9)[BitwiseAnd, Word32]
   70: Comparison(#69, #11)[Equal, Word32]
   71: Branch(#69)[B19, B18, True]

BLOCK B18 <- B17
   73: Constant()[smi: 0]
   74: Comparison(#4, #73)[Equal, Tagged]
   75: Comparison(#74, #11)[Equal, Word32]
   76: Goto()[B31, 0]

BLOCK B19 <- B17
   77: Goto()[B20, 0]

MERGE B20 <- B19
   78: TaggedBitcast(#4)[Tagged, Word64, HeapObject]
   79: Change(#78)[Truncate, NoAssumption, Word64, Word32]
   80: Constant()[word32: 113]
   81: Comparison(#79, #80)[UnsignedLessThan, Word32]
   82: Branch(#81)[B21, B22, None]

BLOCK B21 <- B20
   84: Goto()[B31, 0]

BLOCK B22 <- B20
   85: Comparison(#79, #80)[Equal, Word32]
   86: Branch(#85)[B23, B24, None]

BLOCK B23 <- B22
   88: Goto()[B31, 0]

BLOCK B24 <- B22
   89: Load *(#4) [tagged base, TaggedPointer, Tagged]
   90: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
   91: Comparison(#89, #90)[Equal, Tagged]
   92: Branch(#91)[B25, B26, False]

BLOCK B25 <- B24
   94: Load *(#4 + 4) [tagged base, Float64, Float64, offset: 4]
   95: FloatUnary(#94)[Abs, Float64]
   96: Constant()[float64: 0]
   97: Comparison(#96, #95)[SignedLessThan, Float64]
   98: Goto()[B31, 0]

BLOCK B26 <- B24
   99: Goto()[B27, 0]

MERGE B27 <- B26
  100: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  101: Comparison(#89, #100)[Equal, Tagged]
  102: Branch(#101)[B28, B29, False]

BLOCK B28 <- B27
  104: Load *(#4 + 4) [tagged base, Uint32, Word32, offset: 4]
  105: Constant()[word32: -256]
  106: WordBinop(#104, #105)[BitwiseAnd, Word32]
  107: Comparison(#106, #11)[Equal, Word32]
  108: Comparison(#107, #11)[Equal, Word32]
  109: Goto()[B31, 0]

BLOCK B29 <- B27
  110: Goto()[B30, 0]

MERGE B30 <- B29
  111: Goto()[B31, 0]

MERGE B31 <- B18, B21, B23, B25, B28, B30
  112: Phi(#75, #11, #9, #97, #108, #9)[Word32]
  114: Branch(#112)[B39, B32, None]

BLOCK B32 <- B31
  116: FrameState(#56, #1, #3, #4, #6, #7, #0, #68)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #56(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #68(kRepTagged|kTypeAny)]
  119: Constant()[word32: 1074794496]
  120: WordBinop(#68, #9)[BitwiseAnd, Word32]
  121: Comparison(#120, #11)[Equal, Word32]
  122: Branch(#120)[B34, B33, False]

BLOCK B33 <- B32
  124: TaggedBitcast(#68)[Tagged, Word32, Smi]
  125: Shift(#124, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  126: Goto()[B35, 0]

BLOCK B34 <- B32
  127: Load *(#68 + 4) [tagged base, Float64, Float64, offset: 4]
  128: Change(#127)[JSFloatTruncate, NoAssumption, Float64, Word32]
  129: Goto()[B35, 0]

MERGE B35 <- B33, B34
  130: Phi(#125, #128)[Word32]
  131: Constant()[word32: 8]
  132: WordBinop(#130, #119)[Add, Word32]
  133: Constant()[word32: 4095]
  134: WordBinop(#7, #9)[BitwiseAnd, Word32]
  135: Comparison(#134, #11)[Equal, Word32]
  136: DeoptimizeIf(#134, #116)[NotASmi, FeedbackSource(INVALID)]
  137: TaggedBitcast(#7)[Tagged, Word32, Smi]
  138: Shift(#137, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  139: Constant()[word32: 65535]
  140: Shift(#132, #131)[ShiftRightLogical, Word32]
  141: WordBinop(#138, #133)[BitwiseAnd, Word32]
  142: WordBinop(#140, #139)[BitwiseAnd, Word32]
  143: WordBinop(#6, #9)[BitwiseAnd, Word32]
  144: Comparison(#143, #11)[Equal, Word32]
  145: DeoptimizeIf(#143, #116)[negated, Smi, FeedbackSource(INVALID)]
  147: Constant()[word32: -4112]
  148: WordBinop(#142, #141)[Add, Word32]
  149: Load *(#6) [tagged base, TaggedPointer, Tagged]
  150: TaggedBitcast(#149)[Tagged, Word64, HeapObject]
  151: Change(#150)[Truncate, NoAssumption, Word64, Word32]
  152: Constant()[word32: 1061]
  153: Comparison(#151, #152)[UnsignedLessThanOrEqual, Word32]
  154: Goto()[B36, 0]

MERGE B36 <- B35
  155: DeoptimizeIf(#153, #116)[negated, NotAString, FeedbackSource(INVALID)]
  156: WordBinop(#148, #147)[Add, Word32]
  157: Load *(#6 + 8) [tagged base, immutable, Uint32, Word32, offset: 8]
  158: Constant()[word32: -4097]
  159: WordBinop(#157, #156)[Add, Word32]
  160: WordBinop(#148, #158)[Add, Word32]
  161: Comparison(#159, #11)[SignedLessThan, Word32]
  162: WordBinop(#157, #160)[Add, Word32]
  163: Select(#161, #11, #159)[Word32, None, CMove]
  165: Comparison(#162, #11)[SignedLessThan, Word32]
  166: Select(#165, #11, #162)[Word32, None, CMove]
  167: Comparison(#163, #166)[UnsignedLessThan, Word32]
  168: Branch(#167)[B38, B37, True]

BLOCK B37 <- B36
  170: Constant()[heap object: 0x24f700000049 <String[0]: #>]
  171: Return(#11, #170)[0]

BLOCK B38 <- B36
  172: Change(#163)[SignExtend, NoAssumption, Word32, Word64]
  173: Change(#166)[SignExtend, NoAssumption, Word32, Word64]
  174: Constant()[heap object: 0x24f7003b6d09 <Code BUILTIN StringSubstring>]
  175: Call(#174, #6, #172, #173)[Code:StringSubstring Descriptor:r1s0i4f0]
  178: DidntThrow(#175)[🁤🁤 🁪🁪 🁤🁪 🁪 _ a, 0]
  180: Return(#11, #178)[0]

BLOCK B39 <- B31
  181: Constant()[word64: 0]
  182: Return(#11, #181)[0]

----- V8.TFTurboshaftLoopUnrolling -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: Constant()[word32: 1]
   10: WordBinop(#3, #9)[BitwiseAnd, Word32]
   11: Constant()[word32: 0]
   12: Comparison(#10, #11)[Equal, Word32]
   13: Branch(#10)[B2, B1, True]

BLOCK B1 <- B0
   15: Constant()[smi: 0]
   16: Comparison(#3, #15)[Equal, Tagged]
   17: Comparison(#16, #11)[Equal, Word32]
   18: Goto()[B14, 0]

BLOCK B2 <- B0
   19: Goto()[B3, 0]

MERGE B3 <- B2
   20: TaggedBitcast(#3)[Tagged, Word64, HeapObject]
   21: Change(#20)[Truncate, NoAssumption, Word64, Word32]
   22: Constant()[word32: 113]
   23: Comparison(#21, #22)[UnsignedLessThan, Word32]
   24: Branch(#23)[B4, B5, None]

BLOCK B4 <- B3
   26: Goto()[B14, 0]

BLOCK B5 <- B3
   27: Comparison(#21, #22)[Equal, Word32]
   28: Branch(#27)[B6, B7, None]

BLOCK B6 <- B5
   30: Goto()[B14, 0]

BLOCK B7 <- B5
   31: Load *(#3) [tagged base, TaggedPointer, Tagged]
   32: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
   33: Comparison(#31, #32)[Equal, Tagged]
   34: Branch(#33)[B8, B9, False]

BLOCK B8 <- B7
   36: Load *(#3 + 4) [tagged base, Float64, Float64, offset: 4]
   37: FloatUnary(#36)[Abs, Float64]
   38: Constant()[float64: 0]
   39: Comparison(#38, #37)[SignedLessThan, Float64]
   40: Goto()[B14, 0]

BLOCK B9 <- B7
   41: Goto()[B10, 0]

MERGE B10 <- B9
   42: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
   43: Comparison(#31, #42)[Equal, Tagged]
   44: Branch(#43)[B11, B12, False]

BLOCK B11 <- B10
   46: Load *(#3 + 4) [tagged base, Uint32, Word32, offset: 4]
   47: Constant()[word32: -256]
   48: WordBinop(#46, #47)[BitwiseAnd, Word32]
   49: Comparison(#48, #11)[Equal, Word32]
   50: Comparison(#49, #11)[Equal, Word32]
   51: Goto()[B14, 0]

BLOCK B12 <- B10
   52: Goto()[B13, 0]

MERGE B13 <- B12
   53: Goto()[B14, 0]

MERGE B14 <- B1, B4, B6, B8, B11, B13
   54: Phi(#17, #11, #9, #39, #50, #9)[Word32]
   56: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   57: FrameState(#56, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #56(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   60: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   61: JSStackCheck(#60, #57)[function-entry]
   62: Branch(#54)[B16, B15, None]

BLOCK B15 <- B14
   64: Constant()[heap object: 0x24f700000011 <undefined>]
   65: Goto()[B17, 0]

BLOCK B16 <- B14
   66: Constant()[number: -1.07479e+09]
   67: Goto()[B17, 0]

MERGE B17 <- B15, B16
   68: Phi(#64, #66)[Tagged]
   69: WordBinop(#4, #9)[BitwiseAnd, Word32]
   70: Comparison(#69, #11)[Equal, Word32]
   71: Branch(#69)[B19, B18, True]

BLOCK B18 <- B17
   73: Constant()[smi: 0]
   74: Comparison(#4, #73)[Equal, Tagged]
   75: Comparison(#74, #11)[Equal, Word32]
   76: Goto()[B31, 0]

BLOCK B19 <- B17
   77: Goto()[B20, 0]

MERGE B20 <- B19
   78: TaggedBitcast(#4)[Tagged, Word64, HeapObject]
   79: Change(#78)[Truncate, NoAssumption, Word64, Word32]
   80: Constant()[word32: 113]
   81: Comparison(#79, #80)[UnsignedLessThan, Word32]
   82: Branch(#81)[B21, B22, None]

BLOCK B21 <- B20
   84: Goto()[B31, 0]

BLOCK B22 <- B20
   85: Comparison(#79, #80)[Equal, Word32]
   86: Branch(#85)[B23, B24, None]

BLOCK B23 <- B22
   88: Goto()[B31, 0]

BLOCK B24 <- B22
   89: Load *(#4) [tagged base, TaggedPointer, Tagged]
   90: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
   91: Comparison(#89, #90)[Equal, Tagged]
   92: Branch(#91)[B25, B26, False]

BLOCK B25 <- B24
   94: Load *(#4 + 4) [tagged base, Float64, Float64, offset: 4]
   95: FloatUnary(#94)[Abs, Float64]
   96: Constant()[float64: 0]
   97: Comparison(#96, #95)[SignedLessThan, Float64]
   98: Goto()[B31, 0]

BLOCK B26 <- B24
   99: Goto()[B27, 0]

MERGE B27 <- B26
  100: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  101: Comparison(#89, #100)[Equal, Tagged]
  102: Branch(#101)[B28, B29, False]

BLOCK B28 <- B27
  104: Load *(#4 + 4) [tagged base, Uint32, Word32, offset: 4]
  105: Constant()[word32: -256]
  106: WordBinop(#104, #105)[BitwiseAnd, Word32]
  107: Comparison(#106, #11)[Equal, Word32]
  108: Comparison(#107, #11)[Equal, Word32]
  109: Goto()[B31, 0]

BLOCK B29 <- B27
  110: Goto()[B30, 0]

MERGE B30 <- B29
  111: Goto()[B31, 0]

MERGE B31 <- B18, B21, B23, B25, B28, B30
  112: Phi(#75, #11, #9, #97, #108, #9)[Word32]
  114: Branch(#112)[B39, B32, None]

BLOCK B32 <- B31
  116: FrameState(#56, #1, #3, #4, #6, #7, #0, #68)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #56(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #68(kRepTagged|kTypeAny)]
  119: Constant()[word32: 1074794496]
  120: WordBinop(#68, #9)[BitwiseAnd, Word32]
  121: Comparison(#120, #11)[Equal, Word32]
  122: Branch(#120)[B34, B33, False]

BLOCK B33 <- B32
  124: TaggedBitcast(#68)[Tagged, Word32, Smi]
  125: Shift(#124, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  126: Goto()[B35, 0]

BLOCK B34 <- B32
  127: Load *(#68 + 4) [tagged base, Float64, Float64, offset: 4]
  128: Change(#127)[JSFloatTruncate, NoAssumption, Float64, Word32]
  129: Goto()[B35, 0]

MERGE B35 <- B33, B34
  130: Phi(#125, #128)[Word32]
  131: Constant()[word32: 8]
  132: WordBinop(#130, #119)[Add, Word32]
  133: Constant()[word32: 4095]
  134: WordBinop(#7, #9)[BitwiseAnd, Word32]
  135: Comparison(#134, #11)[Equal, Word32]
  136: DeoptimizeIf(#134, #116)[NotASmi, FeedbackSource(INVALID)]
  137: TaggedBitcast(#7)[Tagged, Word32, Smi]
  138: Shift(#137, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  139: Constant()[word32: 65535]
  140: Shift(#132, #131)[ShiftRightLogical, Word32]
  141: WordBinop(#138, #133)[BitwiseAnd, Word32]
  142: WordBinop(#140, #139)[BitwiseAnd, Word32]
  143: WordBinop(#6, #9)[BitwiseAnd, Word32]
  144: Comparison(#143, #11)[Equal, Word32]
  145: DeoptimizeIf(#143, #116)[negated, Smi, FeedbackSource(INVALID)]
  147: Constant()[word32: -4112]
  148: WordBinop(#142, #141)[Add, Word32]
  149: Load *(#6) [tagged base, TaggedPointer, Tagged]
  150: TaggedBitcast(#149)[Tagged, Word64, HeapObject]
  151: Change(#150)[Truncate, NoAssumption, Word64, Word32]
  152: Constant()[word32: 1061]
  153: Comparison(#151, #152)[UnsignedLessThanOrEqual, Word32]
  154: Goto()[B36, 0]

MERGE B36 <- B35
  155: DeoptimizeIf(#153, #116)[negated, NotAString, FeedbackSource(INVALID)]
  156: WordBinop(#148, #147)[Add, Word32]
  157: Load *(#6 + 8) [tagged base, immutable, Uint32, Word32, offset: 8]
  158: Constant()[word32: -4097]
  159: WordBinop(#157, #156)[Add, Word32]
  160: WordBinop(#148, #158)[Add, Word32]
  161: Comparison(#159, #11)[SignedLessThan, Word32]
  162: WordBinop(#157, #160)[Add, Word32]
  163: Select(#161, #11, #159)[Word32, None, CMove]
  165: Comparison(#162, #11)[SignedLessThan, Word32]
  166: Select(#165, #11, #162)[Word32, None, CMove]
  167: Comparison(#163, #166)[UnsignedLessThan, Word32]
  168: Branch(#167)[B38, B37, True]

BLOCK B37 <- B36
  170: Constant()[heap object: 0x24f700000049 <String[0]: #>]
  171: Return(#11, #170)[0]

BLOCK B38 <- B36
  172: Change(#163)[SignExtend, NoAssumption, Word32, Word64]
  173: Change(#166)[SignExtend, NoAssumption, Word32, Word64]
  174: Constant()[heap object: 0x24f7003b6d09 <Code BUILTIN StringSubstring>]
  175: Call(#174, #6, #172, #173)[Code:StringSubstring Descriptor:r1s0i4f0]
  178: DidntThrow(#175)[🁤🁤 🁪🁪 🁤🁪 🁪 _ a, 0]
  180: Return(#11, #178)[0]

BLOCK B39 <- B31
  181: Constant()[word64: 0]
  182: Return(#11, #181)[0]

----- V8.TFTurboshaftLoadElimination -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: Constant()[word32: 1]
   10: WordBinop(#3, #9)[BitwiseAnd, Word32]
   11: Constant()[word32: 0]
   12: Branch(#10)[B3, B1, True]

BLOCK B1 <- B0
   14: Constant()[smi: 0]
   15: Comparison(#3, #14)[Equal, Tagged]
   16: Comparison(#15, #11)[Equal, Word32]
   17: Goto()[B2, 0]

MERGE B2 <- B1
   18: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   19: FrameState(#18, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #18(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   22: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   23: JSStackCheck(#22, #19)[function-entry]
   24: Branch(#15)[B6, B10, None]

BLOCK B3 <- B0
   26: TaggedBitcast(#3)[Tagged, Word64, HeapObject]
   27: Change(#26)[Truncate, NoAssumption, Word64, Word32]
   28: Constant()[word32: 113]
   29: Comparison(#27, #28)[UnsignedLessThan, Word32]
   30: Branch(#29)[B4, B7, None]

BLOCK B4 <- B3
   32: Goto()[B5, 0]

MERGE B5 <- B4
   33: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   34: FrameState(#33, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #33(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   37: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   38: JSStackCheck(#37, #34)[function-entry]
   39: Goto()[B23, 0]

BLOCK B6 <- B2
   40: Goto()[B23, 0]

BLOCK B7 <- B3
   41: Comparison(#27, #28)[Equal, Word32]
   42: Branch(#41)[B8, B11, None]

BLOCK B8 <- B7
   44: Goto()[B9, 0]

MERGE B9 <- B8
   45: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   46: FrameState(#45, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #45(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   49: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   50: JSStackCheck(#49, #46)[function-entry]
   51: Goto()[B24, 0]

BLOCK B10 <- B2
   52: Goto()[B24, 0]

BLOCK B11 <- B7
   53: Load *(#3) [tagged base, TaggedPointer, Tagged]
   54: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
   55: Comparison(#53, #54)[Equal, Tagged]
   56: Branch(#55)[B12, B16, False]

BLOCK B12 <- B11
   58: Load *(#3 + 4) [tagged base, Float64, Float64, offset: 4]
   59: FloatUnary(#58)[Abs, Float64]
   60: Constant()[float64: 0]
   61: Comparison(#60, #59)[SignedLessThan, Float64]
   62: Goto()[B13, 0]

MERGE B13 <- B12
   63: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   64: FrameState(#63, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #63(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   67: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   68: JSStackCheck(#67, #64)[function-entry]
   69: Branch(#61)[B14, B15, None]

BLOCK B14 <- B13
   71: Goto()[B24, 0]

BLOCK B15 <- B13
   72: Goto()[B23, 0]

BLOCK B16 <- B11
   73: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
   74: Comparison(#53, #73)[Equal, Tagged]
   75: Branch(#74)[B17, B21, False]

BLOCK B17 <- B16
   77: Load *(#3 + 4) [tagged base, Uint32, Word32, offset: 4]
   78: Constant()[word32: -256]
   79: WordBinop(#77, #78)[BitwiseAnd, Word32]
   80: Comparison(#79, #11)[Equal, Word32]
   81: Comparison(#80, #11)[Equal, Word32]
   82: Goto()[B18, 0]

MERGE B18 <- B17
   83: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   84: FrameState(#83, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #83(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   87: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   88: JSStackCheck(#87, #84)[function-entry]
   89: Branch(#79)[B19, B20, None]

BLOCK B19 <- B18
   91: Goto()[B24, 0]

BLOCK B20 <- B18
   92: Goto()[B23, 0]

BLOCK B21 <- B16
   93: Goto()[B22, 0]

MERGE B22 <- B21
   94: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   95: FrameState(#94, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #94(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   98: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   99: JSStackCheck(#98, #95)[function-entry]
  100: Goto()[B24, 0]

MERGE B23 <- B6, B5, B15, B20
  101: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  102: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  103: FrameState(#102, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #102(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  106: Phi(#16, #11, #61, #81)[Word32]
  107: Constant()[heap object: 0x24f700000011 <undefined>]
  108: Goto()[B25, 0]

MERGE B24 <- B10, B9, B14, B19, B22
  109: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  110: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  111: FrameState(#110, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #110(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  114: Phi(#16, #9, #61, #81, #9)[Word32]
  116: Constant()[number: -1.07479e+09]
  117: Goto()[B25, 0]

MERGE B25 <- B23, B24
  118: Phi(#106, #114)[Word32]
  119: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  120: FrameState(#119, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #119(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  123: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  124: Phi(#107, #116)[Tagged]
  125: WordBinop(#4, #9)[BitwiseAnd, Word32]
  126: Branch(#125)[B28, B26, True]

BLOCK B26 <- B25
  128: Constant()[smi: 0]
  129: Comparison(#4, #128)[Equal, Tagged]
  130: Comparison(#129, #11)[Equal, Word32]
  131: Goto()[B27, 0]

MERGE B27 <- B26
  132: Branch(#129)[B31, B35, None]

BLOCK B28 <- B25
  134: TaggedBitcast(#4)[Tagged, Word64, HeapObject]
  135: Change(#134)[Truncate, NoAssumption, Word64, Word32]
  136: Constant()[word32: 113]
  137: Comparison(#135, #136)[UnsignedLessThan, Word32]
  138: Branch(#137)[B29, B32, None]

BLOCK B29 <- B28
  140: Goto()[B30, 0]

MERGE B30 <- B29
  141: Goto()[B48, 0]

BLOCK B31 <- B27
  142: Goto()[B48, 0]

BLOCK B32 <- B28
  143: Comparison(#135, #136)[Equal, Word32]
  144: Branch(#143)[B33, B36, None]

BLOCK B33 <- B32
  146: Goto()[B34, 0]

MERGE B34 <- B33
  147: Goto()[B54, 0]

BLOCK B35 <- B27
  148: Goto()[B54, 0]

BLOCK B36 <- B32
  149: Load *(#4) [tagged base, TaggedPointer, Tagged]
  150: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  151: Comparison(#149, #150)[Equal, Tagged]
  152: Branch(#151)[B37, B41, False]

BLOCK B37 <- B36
  154: Load *(#4 + 4) [tagged base, Float64, Float64, offset: 4]
  155: FloatUnary(#154)[Abs, Float64]
  156: Constant()[float64: 0]
  157: Comparison(#156, #155)[SignedLessThan, Float64]
  158: Goto()[B38, 0]

MERGE B38 <- B37
  159: Branch(#157)[B39, B40, None]

BLOCK B39 <- B38
  161: Goto()[B54, 0]

BLOCK B40 <- B38
  162: Goto()[B48, 0]

BLOCK B41 <- B36
  163: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  164: Comparison(#149, #163)[Equal, Tagged]
  165: Branch(#164)[B42, B46, False]

BLOCK B42 <- B41
  167: Load *(#4 + 4) [tagged base, Uint32, Word32, offset: 4]
  168: Constant()[word32: -256]
  169: WordBinop(#167, #168)[BitwiseAnd, Word32]
  170: Comparison(#169, #11)[Equal, Word32]
  171: Comparison(#170, #11)[Equal, Word32]
  172: Goto()[B43, 0]

MERGE B43 <- B42
  173: Branch(#169)[B44, B45, None]

BLOCK B44 <- B43
  175: Goto()[B54, 0]

BLOCK B45 <- B43
  176: Goto()[B48, 0]

BLOCK B46 <- B41
  177: Goto()[B47, 0]

MERGE B47 <- B46
  178: Goto()[B54, 0]

MERGE B48 <- B31, B30, B40, B45
  179: Phi(#130, #11, #157, #171)[Word32]
  181: FrameState(#119, #1, #3, #4, #6, #7, #0, #124)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #119(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #124(kRepTagged|kTypeAny)]
  184: Constant()[word32: 1074794496]
  185: WordBinop(#124, #9)[BitwiseAnd, Word32]
  186: Branch(#185)[B50, B49, False]

BLOCK B49 <- B48
  188: TaggedBitcast(#124)[Tagged, Word32, Smi]
  189: Shift(#188, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  190: Goto()[B51, 0]

BLOCK B50 <- B48
  191: Load *(#124 + 4) [tagged base, Float64, Float64, offset: 4]
  192: Change(#191)[JSFloatTruncate, NoAssumption, Float64, Word32]
  193: Goto()[B51, 0]

MERGE B51 <- B49, B50
  194: Phi(#189, #192)[Word32]
  195: Constant()[word32: 8]
  196: WordBinop(#194, #184)[Add, Word32]
  197: Constant()[word32: 4095]
  198: WordBinop(#7, #9)[BitwiseAnd, Word32]
  199: DeoptimizeIf(#198, #181)[NotASmi, FeedbackSource(INVALID)]
  200: TaggedBitcast(#7)[Tagged, Word32, Smi]
  201: Shift(#200, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  202: Constant()[word32: 65535]
  203: Shift(#196, #195)[ShiftRightLogical, Word32]
  204: WordBinop(#201, #197)[BitwiseAnd, Word32]
  205: WordBinop(#203, #202)[BitwiseAnd, Word32]
  206: WordBinop(#6, #9)[BitwiseAnd, Word32]
  207: DeoptimizeIf(#206, #181)[negated, Smi, FeedbackSource(INVALID)]
  209: Constant()[word32: -4112]
  210: WordBinop(#205, #204)[Add, Word32]
  211: Load *(#6) [tagged base, TaggedPointer, Tagged]
  212: TaggedBitcast(#211)[Tagged, Word64, HeapObject]
  213: Change(#212)[Truncate, NoAssumption, Word64, Word32]
  214: Constant()[word32: 1061]
  215: Comparison(#213, #214)[UnsignedLessThanOrEqual, Word32]
  216: DeoptimizeIf(#215, #181)[negated, NotAString, FeedbackSource(INVALID)]
  217: WordBinop(#210, #209)[Add, Word32]
  218: Load *(#6 + 8) [tagged base, immutable, Uint32, Word32, offset: 8]
  219: Constant()[word32: -4097]
  220: WordBinop(#218, #217)[Add, Word32]
  221: WordBinop(#210, #219)[Add, Word32]
  222: Comparison(#220, #11)[SignedLessThan, Word32]
  223: WordBinop(#218, #221)[Add, Word32]
  224: Select(#222, #11, #220)[Word32, None, CMove]
  226: Comparison(#223, #11)[SignedLessThan, Word32]
  227: Select(#226, #11, #223)[Word32, None, CMove]
  228: Comparison(#224, #227)[UnsignedLessThan, Word32]
  229: Branch(#228)[B53, B52, True]

BLOCK B52 <- B51
  231: Constant()[heap object: 0x24f700000049 <String[0]: #>]
  232: Return(#11, #231)[0]

BLOCK B53 <- B51
  233: Change(#224)[SignExtend, NoAssumption, Word32, Word64]
  234: Change(#227)[SignExtend, NoAssumption, Word32, Word64]
  235: Constant()[heap object: 0x24f7003b6d09 <Code BUILTIN StringSubstring>]
  236: Call(#235, #6, #233, #234)[Code:StringSubstring Descriptor:r1s0i4f0]
  239: DidntThrow(#236)[🁤🁤 🁪🁪 🁤🁪 🁪 _ a, 0]
  241: Return(#11, #239)[0]

MERGE B54 <- B35, B34, B39, B44, B47
  242: Phi(#130, #9, #157, #171, #9)[Word32]
  244: Constant()[word64: 0]
  245: Return(#11, #244)[0]

----- V8.TFTurboshaftMemoryOptimization -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: Constant()[word32: 1]
   10: WordBinop(#3, #9)[BitwiseAnd, Word32]
   11: Constant()[word32: 0]
   12: Branch(#10)[B4, B1, True]

BLOCK B1 <- B0
   14: Constant()[smi: 0]
   15: Comparison(#3, #14)[Equal, Tagged]
   16: Comparison(#15, #11)[Equal, Word32]
   17: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   18: FrameState(#17, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #17(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   21: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   22: JSStackCheck(#21, #18)[function-entry]
   23: Branch(#15)[B2, B3, None]

BLOCK B2 <- B1
   25: Goto()[B17, 0]

BLOCK B3 <- B1
   26: Goto()[B18, 0]

BLOCK B4 <- B0
   27: TaggedBitcast(#3)[Tagged, Word64, HeapObject]
   28: Change(#27)[Truncate, NoAssumption, Word64, Word32]
   29: Constant()[word32: 113]
   30: Comparison(#28, #29)[UnsignedLessThan, Word32]
   31: Branch(#30)[B5, B6, None]

BLOCK B5 <- B4
   33: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   34: FrameState(#33, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #33(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   37: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   38: JSStackCheck(#37, #34)[function-entry]
   39: Goto()[B17, 0]

BLOCK B6 <- B4
   40: Comparison(#28, #29)[Equal, Word32]
   41: Branch(#40)[B7, B8, None]

BLOCK B7 <- B6
   43: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   44: FrameState(#43, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #43(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   47: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   48: JSStackCheck(#47, #44)[function-entry]
   49: Goto()[B18, 0]

BLOCK B8 <- B6
   50: Load *(#3) [tagged base, TaggedPointer, Tagged]
   51: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
   52: Comparison(#50, #51)[Equal, Tagged]
   53: Branch(#52)[B9, B12, False]

BLOCK B9 <- B8
   55: Load *(#3 + 4) [tagged base, Float64, Float64, offset: 4]
   56: FloatUnary(#55)[Abs, Float64]
   57: Constant()[float64: 0]
   58: Comparison(#57, #56)[SignedLessThan, Float64]
   59: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   60: FrameState(#59, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #59(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   63: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   64: JSStackCheck(#63, #60)[function-entry]
   65: Branch(#58)[B10, B11, None]

BLOCK B10 <- B9
   67: Goto()[B18, 0]

BLOCK B11 <- B9
   68: Goto()[B17, 0]

BLOCK B12 <- B8
   69: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
   70: Comparison(#50, #69)[Equal, Tagged]
   71: Branch(#70)[B13, B16, False]

BLOCK B13 <- B12
   73: Load *(#3 + 4) [tagged base, Uint32, Word32, offset: 4]
   74: Constant()[word32: -256]
   75: WordBinop(#73, #74)[BitwiseAnd, Word32]
   76: Comparison(#75, #11)[Equal, Word32]
   77: Comparison(#76, #11)[Equal, Word32]
   78: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   79: FrameState(#78, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #78(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   82: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   83: JSStackCheck(#82, #79)[function-entry]
   84: Branch(#75)[B14, B15, None]

BLOCK B14 <- B13
   86: Goto()[B18, 0]

BLOCK B15 <- B13
   87: Goto()[B17, 0]

BLOCK B16 <- B12
   88: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   89: FrameState(#88, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #88(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   92: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   93: JSStackCheck(#92, #89)[function-entry]
   94: Goto()[B18, 0]

MERGE B17 <- B2, B5, B11, B15
   95: Phi(#16, #11, #58, #77)[Word32]
   96: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   97: Constant()[heap object: 0x24f700000011 <undefined>]
   98: Goto()[B19, 0]

MERGE B18 <- B3, B7, B10, B14, B16
   99: Phi(#16, #9, #58, #77, #9)[Word32]
  101: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  102: Constant()[number: -1.07479e+09]
  103: Goto()[B19, 0]

MERGE B19 <- B17, B18
  104: Phi(#97, #102)[Tagged]
  105: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  106: WordBinop(#4, #9)[BitwiseAnd, Word32]
  107: Branch(#106)[B23, B20, True]

BLOCK B20 <- B19
  109: Constant()[smi: 0]
  110: Comparison(#4, #109)[Equal, Tagged]
  111: Comparison(#110, #11)[Equal, Word32]
  112: Branch(#110)[B21, B22, None]

BLOCK B21 <- B20
  114: Goto()[B36, 0]

BLOCK B22 <- B20
  115: Goto()[B42, 0]

BLOCK B23 <- B19
  116: TaggedBitcast(#4)[Tagged, Word64, HeapObject]
  117: Change(#116)[Truncate, NoAssumption, Word64, Word32]
  118: Constant()[word32: 113]
  119: Comparison(#117, #118)[UnsignedLessThan, Word32]
  120: Branch(#119)[B24, B25, None]

BLOCK B24 <- B23
  122: Goto()[B36, 0]

BLOCK B25 <- B23
  123: Comparison(#117, #118)[Equal, Word32]
  124: Branch(#123)[B26, B27, None]

BLOCK B26 <- B25
  126: Goto()[B42, 0]

BLOCK B27 <- B25
  127: Load *(#4) [tagged base, TaggedPointer, Tagged]
  128: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  129: Comparison(#127, #128)[Equal, Tagged]
  130: Branch(#129)[B28, B31, False]

BLOCK B28 <- B27
  132: Load *(#4 + 4) [tagged base, Float64, Float64, offset: 4]
  133: FloatUnary(#132)[Abs, Float64]
  134: Constant()[float64: 0]
  135: Comparison(#134, #133)[SignedLessThan, Float64]
  136: Branch(#135)[B29, B30, None]

BLOCK B29 <- B28
  138: Goto()[B42, 0]

BLOCK B30 <- B28
  139: Goto()[B36, 0]

BLOCK B31 <- B27
  140: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  141: Comparison(#127, #140)[Equal, Tagged]
  142: Branch(#141)[B32, B35, False]

BLOCK B32 <- B31
  144: Load *(#4 + 4) [tagged base, Uint32, Word32, offset: 4]
  145: Constant()[word32: -256]
  146: WordBinop(#144, #145)[BitwiseAnd, Word32]
  147: Comparison(#146, #11)[Equal, Word32]
  148: Comparison(#147, #11)[Equal, Word32]
  149: Branch(#146)[B33, B34, None]

BLOCK B33 <- B32
  151: Goto()[B42, 0]

BLOCK B34 <- B32
  152: Goto()[B36, 0]

BLOCK B35 <- B31
  153: Goto()[B42, 0]

MERGE B36 <- B21, B24, B30, B34
  154: FrameState(#105, #1, #3, #4, #6, #7, #0, #104)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #105(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #104(kRepTagged|kTypeAny)]
  157: Constant()[word32: 1074794496]
  158: WordBinop(#104, #9)[BitwiseAnd, Word32]
  159: Branch(#158)[B38, B37, False]

BLOCK B37 <- B36
  161: TaggedBitcast(#104)[Tagged, Word32, Smi]
  162: Shift(#161, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  163: Goto()[B39, 0]

BLOCK B38 <- B36
  164: Load *(#104 + 4) [tagged base, Float64, Float64, offset: 4]
  165: Change(#164)[JSFloatTruncate, NoAssumption, Float64, Word32]
  166: Goto()[B39, 0]

MERGE B39 <- B37, B38
  167: Phi(#162, #165)[Word32]
  168: Constant()[word32: 8]
  169: WordBinop(#167, #157)[Add, Word32]
  170: Constant()[word32: 4095]
  171: WordBinop(#7, #9)[BitwiseAnd, Word32]
  172: DeoptimizeIf(#171, #154)[NotASmi, FeedbackSource(INVALID)]
  174: TaggedBitcast(#7)[Tagged, Word32, Smi]
  175: Shift(#174, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  176: Constant()[word32: 65535]
  177: Shift(#169, #168)[ShiftRightLogical, Word32]
  178: WordBinop(#175, #170)[BitwiseAnd, Word32]
  179: WordBinop(#177, #176)[BitwiseAnd, Word32]
  180: WordBinop(#6, #9)[BitwiseAnd, Word32]
  181: DeoptimizeIf(#180, #154)[negated, Smi, FeedbackSource(INVALID)]
  182: Constant()[word32: -4112]
  183: WordBinop(#179, #178)[Add, Word32]
  184: Load *(#6) [tagged base, TaggedPointer, Tagged]
  185: TaggedBitcast(#184)[Tagged, Word64, HeapObject]
  186: Change(#185)[Truncate, NoAssumption, Word64, Word32]
  187: Constant()[word32: 1061]
  188: Comparison(#186, #187)[UnsignedLessThanOrEqual, Word32]
  189: DeoptimizeIf(#188, #154)[negated, NotAString, FeedbackSource(INVALID)]
  191: WordBinop(#183, #182)[Add, Word32]
  192: Load *(#6 + 8) [tagged base, immutable, Uint32, Word32, offset: 8]
  193: Constant()[word32: -4097]
  194: WordBinop(#192, #191)[Add, Word32]
  195: WordBinop(#183, #193)[Add, Word32]
  196: Comparison(#194, #11)[SignedLessThan, Word32]
  197: WordBinop(#192, #195)[Add, Word32]
  198: Select(#196, #11, #194)[Word32, None, CMove]
  199: Comparison(#197, #11)[SignedLessThan, Word32]
  200: Select(#199, #11, #197)[Word32, None, CMove]
  202: Comparison(#198, #200)[UnsignedLessThan, Word32]
  203: Branch(#202)[B41, B40, True]

BLOCK B40 <- B39
  205: Constant()[heap object: 0x24f700000049 <String[0]: #>]
  206: Return(#11, #205)[0]

BLOCK B41 <- B39
  207: Change(#198)[SignExtend, NoAssumption, Word32, Word64]
  208: Change(#200)[SignExtend, NoAssumption, Word32, Word64]
  209: Constant()[heap object: 0x24f7003b6d09 <Code BUILTIN StringSubstring>]
  210: Call(#209, #6, #207, #208)[Code:StringSubstring Descriptor:r1s0i4f0]
  212: DidntThrow(#210)[🁤🁤 🁪🁪 🁤🁪 🁪 _ a, 0]
  214: Return(#11, #212)[0]

MERGE B42 <- B22, B26, B29, B33, B35
  215: Constant()[word64: 0]
  216: Return(#11, #215)[0]

----- V8.TFTurboshaftCodeEliminationAndSimplification -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: Constant()[word32: 1]
   10: WordBinop(#3, #9)[BitwiseAnd, Word32]
   11: Constant()[word32: 0]
   12: Branch(#10)[B7, B1, True]

BLOCK B1 <- B0
   14: Constant()[smi: 0]
   15: Comparison(#3, #14)[Equal, Tagged]
   16: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   17: FrameState(#16, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #16(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   20: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   21: Constant()[external: 0x11 <last_young_allocation>]
   22: Constant()[word64: 0]
   23: Store *(#21) = #22 [raw, Uint64, NoWriteBarrier]
   24: Constant()[external: 0x1dcc0014c020]
   25: Load *(#24) [raw, Uint64, Word64]
   26: StackPointerGreaterThan(#25)[JSFunctionEntry]
   27: Branch(#26)[B3, B2, True]

BLOCK B2 <- B1
   29: FrameConstant()[stack check offset]
   30: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   31: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   32: Call(#31, #17, #29, #30, #9, #20)[Code:StackGuardWithGap:r1s1i5f1]
   35: DidntThrow(#32)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   37: Goto()[B4, 0]

BLOCK B3 <- B1
   38: Goto()[B4, 0]

MERGE B4 <- B2, B3
   39: Branch(#15)[B5, B6, None]

BLOCK B5 <- B4
   41: Goto()[B35, 0]

BLOCK B6 <- B4
   42: Goto()[B36, 0]

BLOCK B7 <- B0
   43: TaggedBitcast(#3)[Tagged, Word64, HeapObject]
   44: Change(#43)[Truncate, NoAssumption, Word64, Word32]
   45: Constant()[word32: 113]
   46: Comparison(#44, #45)[UnsignedLessThan, Word32]
   47: Branch(#46)[B8, B12, None]

BLOCK B8 <- B7
   49: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   50: FrameState(#49, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #49(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   53: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   54: Constant()[external: 0x11 <last_young_allocation>]
   55: Constant()[word64: 0]
   56: Store *(#54) = #55 [raw, Uint64, NoWriteBarrier]
   58: Constant()[external: 0x1dcc0014c020]
   59: Load *(#58) [raw, Uint64, Word64]
   60: StackPointerGreaterThan(#59)[JSFunctionEntry]
   61: Branch(#60)[B10, B9, True]

BLOCK B9 <- B8
   63: FrameConstant()[stack check offset]
   64: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   65: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   66: Call(#65, #50, #63, #64, #9, #53)[Code:StackGuardWithGap:r1s1i5f1]
   69: DidntThrow(#66)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   71: Goto()[B11, 0]

BLOCK B10 <- B8
   72: Goto()[B11, 0]

MERGE B11 <- B9, B10
   73: Goto()[B35, 0]

BLOCK B12 <- B7
   74: Comparison(#44, #45)[Equal, Word32]
   75: Branch(#74)[B13, B17, None]

BLOCK B13 <- B12
   77: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   78: FrameState(#77, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #77(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   81: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   82: Constant()[external: 0x11 <last_young_allocation>]
   83: Constant()[word64: 0]
   84: Store *(#82) = #83 [raw, Uint64, NoWriteBarrier]
   85: Constant()[external: 0x1dcc0014c020]
   86: Load *(#85) [raw, Uint64, Word64]
   87: StackPointerGreaterThan(#86)[JSFunctionEntry]
   88: Branch(#87)[B15, B14, True]

BLOCK B14 <- B13
   90: FrameConstant()[stack check offset]
   91: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   92: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   93: Call(#92, #78, #90, #91, #9, #81)[Code:StackGuardWithGap:r1s1i5f1]
   96: DidntThrow(#93)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   98: Goto()[B16, 0]

BLOCK B15 <- B13
   99: Goto()[B16, 0]

MERGE B16 <- B14, B15
  100: Goto()[B36, 0]

BLOCK B17 <- B12
  101: Load *(#3) [tagged base, TaggedPointer, Tagged]
  102: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  103: Comparison(#101, #102)[Equal, Tagged]
  104: Branch(#103)[B18, B24, False]

BLOCK B18 <- B17
  106: Load *(#3 + 4) [tagged base, Float64, Float64, offset: 4]
  107: FloatUnary(#106)[Abs, Float64]
  108: Constant()[float64: 0]
  109: Comparison(#108, #107)[SignedLessThan, Float64]
  110: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  111: FrameState(#110, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #110(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  114: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  115: Constant()[external: 0x11 <last_young_allocation>]
  116: Constant()[word64: 0]
  117: Store *(#115) = #116 [raw, Uint64, NoWriteBarrier]
  119: Constant()[external: 0x1dcc0014c020]
  120: Load *(#119) [raw, Uint64, Word64]
  121: StackPointerGreaterThan(#120)[JSFunctionEntry]
  122: Branch(#121)[B20, B19, True]

BLOCK B19 <- B18
  124: FrameConstant()[stack check offset]
  125: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  126: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  127: Call(#126, #111, #124, #125, #9, #114)[Code:StackGuardWithGap:r1s1i5f1]
  130: DidntThrow(#127)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  132: Goto()[B21, 0]

BLOCK B20 <- B18
  133: Goto()[B21, 0]

MERGE B21 <- B19, B20
  134: Branch(#109)[B22, B23, None]

BLOCK B22 <- B21
  136: Goto()[B36, 0]

BLOCK B23 <- B21
  137: Goto()[B35, 0]

BLOCK B24 <- B17
  138: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  139: Comparison(#101, #138)[Equal, Tagged]
  140: Branch(#139)[B25, B31, False]

BLOCK B25 <- B24
  142: Load *(#3 + 4) [tagged base, Uint32, Word32, offset: 4]
  143: Constant()[word32: -256]
  144: WordBinop(#142, #143)[BitwiseAnd, Word32]
  145: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  146: FrameState(#145, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #145(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  149: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  150: Constant()[external: 0x11 <last_young_allocation>]
  151: Constant()[word64: 0]
  152: Store *(#150) = #151 [raw, Uint64, NoWriteBarrier]
  153: Constant()[external: 0x1dcc0014c020]
  154: Load *(#153) [raw, Uint64, Word64]
  155: StackPointerGreaterThan(#154)[JSFunctionEntry]
  156: Branch(#155)[B27, B26, True]

BLOCK B26 <- B25
  158: FrameConstant()[stack check offset]
  159: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  160: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  161: Call(#160, #146, #158, #159, #9, #149)[Code:StackGuardWithGap:r1s1i5f1]
  164: DidntThrow(#161)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  166: Goto()[B28, 0]

BLOCK B27 <- B25
  167: Goto()[B28, 0]

MERGE B28 <- B26, B27
  168: Branch(#144)[B29, B30, None]

BLOCK B29 <- B28
  170: Goto()[B36, 0]

BLOCK B30 <- B28
  171: Goto()[B35, 0]

BLOCK B31 <- B24
  172: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  173: FrameState(#172, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #172(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  176: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  177: Constant()[external: 0x11 <last_young_allocation>]
  178: Constant()[word64: 0]
  179: Store *(#177) = #178 [raw, Uint64, NoWriteBarrier]
  181: Constant()[external: 0x1dcc0014c020]
  182: Load *(#181) [raw, Uint64, Word64]
  183: StackPointerGreaterThan(#182)[JSFunctionEntry]
  184: Branch(#183)[B33, B32, True]

BLOCK B32 <- B31
  186: FrameConstant()[stack check offset]
  187: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  188: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  189: Call(#188, #173, #186, #187, #9, #176)[Code:StackGuardWithGap:r1s1i5f1]
  192: DidntThrow(#189)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  194: Goto()[B34, 0]

BLOCK B33 <- B31
  195: Goto()[B34, 0]

MERGE B34 <- B32, B33
  196: Goto()[B36, 0]

MERGE B35 <- B5, B11, B23, B30
  197: Constant()[heap object: 0x24f700000011 <undefined>]
  198: Goto()[B37, 0]

MERGE B36 <- B6, B16, B22, B29, B34
  199: Constant()[number: -1.07479e+09]
  200: Goto()[B37, 0]

MERGE B37 <- B35, B36
  201: Phi(#197, #199)[Tagged]
  202: Constant()[heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  203: WordBinop(#4, #9)[BitwiseAnd, Word32]
  204: Branch(#203)[B41, B38, True]

BLOCK B38 <- B37
  206: Constant()[smi: 0]
  207: Comparison(#4, #206)[Equal, Tagged]
  208: Branch(#207)[B39, B40, None]

BLOCK B39 <- B38
  210: Goto()[B54, 0]

BLOCK B40 <- B38
  211: Goto()[B60, 0]

BLOCK B41 <- B37
  212: TaggedBitcast(#4)[Tagged, Word64, HeapObject]
  213: Change(#212)[Truncate, NoAssumption, Word64, Word32]
  214: Constant()[word32: 113]
  215: Comparison(#213, #214)[UnsignedLessThan, Word32]
  216: Branch(#215)[B42, B43, None]

BLOCK B42 <- B41
  218: Goto()[B54, 0]

BLOCK B43 <- B41
  219: Comparison(#213, #214)[Equal, Word32]
  220: Branch(#219)[B44, B45, None]

BLOCK B44 <- B43
  222: Goto()[B60, 0]

BLOCK B45 <- B43
  223: Load *(#4) [tagged base, TaggedPointer, Tagged]
  224: Constant()[heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  225: Comparison(#223, #224)[Equal, Tagged]
  226: Branch(#225)[B46, B49, False]

BLOCK B46 <- B45
  228: Load *(#4 + 4) [tagged base, Float64, Float64, offset: 4]
  229: FloatUnary(#228)[Abs, Float64]
  230: Constant()[float64: 0]
  231: Comparison(#230, #229)[SignedLessThan, Float64]
  232: Branch(#231)[B47, B48, None]

BLOCK B47 <- B46
  234: Goto()[B60, 0]

BLOCK B48 <- B46
  235: Goto()[B54, 0]

BLOCK B49 <- B45
  236: Constant()[heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  237: Comparison(#223, #236)[Equal, Tagged]
  238: Branch(#237)[B50, B53, False]

BLOCK B50 <- B49
  240: Load *(#4 + 4) [tagged base, Uint32, Word32, offset: 4]
  241: Constant()[word32: -256]
  242: WordBinop(#240, #241)[BitwiseAnd, Word32]
  243: Branch(#242)[B51, B52, None]

BLOCK B51 <- B50
  245: Goto()[B60, 0]

BLOCK B52 <- B50
  246: Goto()[B54, 0]

BLOCK B53 <- B49
  247: Goto()[B60, 0]

MERGE B54 <- B39, B42, B48, B52
  248: FrameState(#202, #1, #3, #4, #6, #7, #0, #201)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #202(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #201(kRepTagged|kTypeAny)]
  251: Constant()[word32: 1074794496]
  252: WordBinop(#201, #9)[BitwiseAnd, Word32]
  253: Branch(#252)[B56, B55, False]

BLOCK B55 <- B54
  255: TaggedBitcast(#201)[Tagged, Word32, Smi]
  256: Shift(#255, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  257: Goto()[B57, 0]

BLOCK B56 <- B54
  258: Load *(#201 + 4) [tagged base, Float64, Float64, offset: 4]
  259: Change(#258)[JSFloatTruncate, NoAssumption, Float64, Word32]
  260: Goto()[B57, 0]

MERGE B57 <- B55, B56
  261: Phi(#256, #259)[Word32]
  262: Constant()[word32: 8]
  263: WordBinop(#261, #251)[Add, Word32]
  264: Constant()[word32: 4095]
  265: WordBinop(#7, #9)[BitwiseAnd, Word32]
  266: DeoptimizeIf(#265, #248)[NotASmi, FeedbackSource(INVALID)]
  267: TaggedBitcast(#7)[Tagged, Word32, Smi]
  268: Shift(#267, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  269: Constant()[word32: 65535]
  270: Shift(#263, #262)[ShiftRightLogical, Word32]
  271: WordBinop(#268, #264)[BitwiseAnd, Word32]
  272: WordBinop(#270, #269)[BitwiseAnd, Word32]
  273: WordBinop(#6, #9)[BitwiseAnd, Word32]
  274: DeoptimizeIf(#273, #248)[negated, Smi, FeedbackSource(INVALID)]
  276: Constant()[word32: -4112]
  277: WordBinop(#272, #271)[Add, Word32]
  278: Load *(#6) [tagged base, TaggedPointer, Tagged]
  279: TaggedBitcast(#278)[Tagged, Word64, HeapObject]
  280: Change(#279)[Truncate, NoAssumption, Word64, Word32]
  281: Constant()[word32: 1061]
  282: Comparison(#280, #281)[UnsignedLessThanOrEqual, Word32]
  283: DeoptimizeIf(#282, #248)[negated, NotAString, FeedbackSource(INVALID)]
  284: WordBinop(#277, #276)[Add, Word32]
  285: Load *(#6 + 8) [tagged base, immutable, Uint32, Word32, offset: 8]
  286: Constant()[word32: -4097]
  287: WordBinop(#285, #284)[Add, Word32]
  288: WordBinop(#277, #286)[Add, Word32]
  289: Comparison(#287, #11)[SignedLessThan, Word32]
  290: WordBinop(#285, #288)[Add, Word32]
  291: Select(#289, #11, #287)[Word32, None, CMove]
  293: Comparison(#290, #11)[SignedLessThan, Word32]
  294: Select(#293, #11, #290)[Word32, None, CMove]
  295: Comparison(#291, #294)[UnsignedLessThan, Word32]
  296: Branch(#295)[B59, B58, True]

BLOCK B58 <- B57
  298: Constant()[heap object: 0x24f700000049 <String[0]: #>]
  299: Return(#11, #298)[0]

BLOCK B59 <- B57
  300: Change(#291)[SignExtend, NoAssumption, Word32, Word64]
  301: Change(#294)[SignExtend, NoAssumption, Word32, Word64]
  302: Constant()[heap object: 0x24f7003b6d09 <Code BUILTIN StringSubstring>]
  303: Call(#302, #6, #300, #301)[Code:StringSubstring Descriptor:r1s0i4f0]
  306: DidntThrow(#303)[🁤🁤 🁪🁪 🁤🁪 🁪 _ a, 0]
  308: Return(#11, #306)[0]

MERGE B60 <- B40, B44, B47, B51, B53
  309: Constant()[word64: 0]
  310: Return(#11, #309)[0]

----- V8.TFTurboshaftDecompressionOptimization -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: Constant()[word32: 1]
   10: WordBinop(#3, #9)[BitwiseAnd, Word32]
   11: Constant()[word32: 0]
   12: Branch(#10)[B7, B1, True]

BLOCK B1 <- B0
   14: Constant()[smi: 0]
   15: Comparison(#3, #14)[Equal, Tagged]
   16: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   17: FrameState(#16, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #16(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   20: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   21: Constant()[external: 0x11 <last_young_allocation>]
   22: Constant()[word64: 0]
   23: Store *(#21) = #22 [raw, Uint64, NoWriteBarrier]
   24: Constant()[external: 0x1dcc0014c020]
   25: Load *(#24) [raw, Uint64, Word64]
   26: StackPointerGreaterThan(#25)[JSFunctionEntry]
   27: Branch(#26)[B3, B2, True]

BLOCK B2 <- B1
   29: FrameConstant()[stack check offset]
   30: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   31: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   32: Call(#31, #17, #29, #30, #9, #20)[Code:StackGuardWithGap:r1s1i5f1]
   35: DidntThrow(#32)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   37: Goto()[B4, 0]

BLOCK B3 <- B1
   38: Goto()[B4, 0]

MERGE B4 <- B2, B3
   39: Branch(#15)[B5, B6, None]

BLOCK B5 <- B4
   41: Goto()[B35, 0]

BLOCK B6 <- B4
   42: Goto()[B36, 0]

BLOCK B7 <- B0
   43: TaggedBitcast(#3)[Compressed, Word32, HeapObject]
   44: Change(#43)[Truncate, NoAssumption, Word64, Word32]
   45: Constant()[word32: 113]
   46: Comparison(#44, #45)[UnsignedLessThan, Word32]
   47: Branch(#46)[B8, B12, None]

BLOCK B8 <- B7
   49: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   50: FrameState(#49, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #49(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   53: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   54: Constant()[external: 0x11 <last_young_allocation>]
   55: Constant()[word64: 0]
   56: Store *(#54) = #55 [raw, Uint64, NoWriteBarrier]
   58: Constant()[external: 0x1dcc0014c020]
   59: Load *(#58) [raw, Uint64, Word64]
   60: StackPointerGreaterThan(#59)[JSFunctionEntry]
   61: Branch(#60)[B10, B9, True]

BLOCK B9 <- B8
   63: FrameConstant()[stack check offset]
   64: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   65: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   66: Call(#65, #50, #63, #64, #9, #53)[Code:StackGuardWithGap:r1s1i5f1]
   69: DidntThrow(#66)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   71: Goto()[B11, 0]

BLOCK B10 <- B8
   72: Goto()[B11, 0]

MERGE B11 <- B9, B10
   73: Goto()[B35, 0]

BLOCK B12 <- B7
   74: Comparison(#44, #45)[Equal, Word32]
   75: Branch(#74)[B13, B17, None]

BLOCK B13 <- B12
   77: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   78: FrameState(#77, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #77(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   81: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   82: Constant()[external: 0x11 <last_young_allocation>]
   83: Constant()[word64: 0]
   84: Store *(#82) = #83 [raw, Uint64, NoWriteBarrier]
   85: Constant()[external: 0x1dcc0014c020]
   86: Load *(#85) [raw, Uint64, Word64]
   87: StackPointerGreaterThan(#86)[JSFunctionEntry]
   88: Branch(#87)[B15, B14, True]

BLOCK B14 <- B13
   90: FrameConstant()[stack check offset]
   91: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   92: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   93: Call(#92, #78, #90, #91, #9, #81)[Code:StackGuardWithGap:r1s1i5f1]
   96: DidntThrow(#93)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   98: Goto()[B16, 0]

BLOCK B15 <- B13
   99: Goto()[B16, 0]

MERGE B16 <- B14, B15
  100: Goto()[B36, 0]

BLOCK B17 <- B12
  101: Load *(#3) [tagged base, TaggedPointer, Compressed]
  102: Constant()[compressed heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  103: Comparison(#101, #102)[Equal, Tagged]
  104: Branch(#103)[B18, B24, False]

BLOCK B18 <- B17
  106: Load *(#3 + 4) [tagged base, Float64, Float64, offset: 4]
  107: FloatUnary(#106)[Abs, Float64]
  108: Constant()[float64: 0]
  109: Comparison(#108, #107)[SignedLessThan, Float64]
  110: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  111: FrameState(#110, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #110(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  114: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  115: Constant()[external: 0x11 <last_young_allocation>]
  116: Constant()[word64: 0]
  117: Store *(#115) = #116 [raw, Uint64, NoWriteBarrier]
  119: Constant()[external: 0x1dcc0014c020]
  120: Load *(#119) [raw, Uint64, Word64]
  121: StackPointerGreaterThan(#120)[JSFunctionEntry]
  122: Branch(#121)[B20, B19, True]

BLOCK B19 <- B18
  124: FrameConstant()[stack check offset]
  125: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  126: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  127: Call(#126, #111, #124, #125, #9, #114)[Code:StackGuardWithGap:r1s1i5f1]
  130: DidntThrow(#127)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  132: Goto()[B21, 0]

BLOCK B20 <- B18
  133: Goto()[B21, 0]

MERGE B21 <- B19, B20
  134: Branch(#109)[B22, B23, None]

BLOCK B22 <- B21
  136: Goto()[B36, 0]

BLOCK B23 <- B21
  137: Goto()[B35, 0]

BLOCK B24 <- B17
  138: Constant()[compressed heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  139: Comparison(#101, #138)[Equal, Tagged]
  140: Branch(#139)[B25, B31, False]

BLOCK B25 <- B24
  142: Load *(#3 + 4) [tagged base, Uint32, Word32, offset: 4]
  143: Constant()[word32: -256]
  144: WordBinop(#142, #143)[BitwiseAnd, Word32]
  145: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  146: FrameState(#145, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #145(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  149: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  150: Constant()[external: 0x11 <last_young_allocation>]
  151: Constant()[word64: 0]
  152: Store *(#150) = #151 [raw, Uint64, NoWriteBarrier]
  153: Constant()[external: 0x1dcc0014c020]
  154: Load *(#153) [raw, Uint64, Word64]
  155: StackPointerGreaterThan(#154)[JSFunctionEntry]
  156: Branch(#155)[B27, B26, True]

BLOCK B26 <- B25
  158: FrameConstant()[stack check offset]
  159: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  160: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  161: Call(#160, #146, #158, #159, #9, #149)[Code:StackGuardWithGap:r1s1i5f1]
  164: DidntThrow(#161)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  166: Goto()[B28, 0]

BLOCK B27 <- B25
  167: Goto()[B28, 0]

MERGE B28 <- B26, B27
  168: Branch(#144)[B29, B30, None]

BLOCK B29 <- B28
  170: Goto()[B36, 0]

BLOCK B30 <- B28
  171: Goto()[B35, 0]

BLOCK B31 <- B24
  172: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  173: FrameState(#172, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #172(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  176: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  177: Constant()[external: 0x11 <last_young_allocation>]
  178: Constant()[word64: 0]
  179: Store *(#177) = #178 [raw, Uint64, NoWriteBarrier]
  181: Constant()[external: 0x1dcc0014c020]
  182: Load *(#181) [raw, Uint64, Word64]
  183: StackPointerGreaterThan(#182)[JSFunctionEntry]
  184: Branch(#183)[B33, B32, True]

BLOCK B32 <- B31
  186: FrameConstant()[stack check offset]
  187: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  188: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  189: Call(#188, #173, #186, #187, #9, #176)[Code:StackGuardWithGap:r1s1i5f1]
  192: DidntThrow(#189)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  194: Goto()[B34, 0]

BLOCK B33 <- B31
  195: Goto()[B34, 0]

MERGE B34 <- B32, B33
  196: Goto()[B36, 0]

MERGE B35 <- B5, B11, B23, B30
  197: Constant()[heap object: 0x24f700000011 <undefined>]
  198: Goto()[B37, 0]

MERGE B36 <- B6, B16, B22, B29, B34
  199: Constant()[number: -1.07479e+09]
  200: Goto()[B37, 0]

MERGE B37 <- B35, B36
  201: Phi(#197, #199)[Tagged]
  202: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  203: WordBinop(#4, #9)[BitwiseAnd, Word32]
  204: Branch(#203)[B41, B38, True]

BLOCK B38 <- B37
  206: Constant()[smi: 0]
  207: Comparison(#4, #206)[Equal, Tagged]
  208: Branch(#207)[B39, B40, None]

BLOCK B39 <- B38
  210: Goto()[B54, 0]

BLOCK B40 <- B38
  211: Goto()[B60, 0]

BLOCK B41 <- B37
  212: TaggedBitcast(#4)[Compressed, Word32, HeapObject]
  213: Change(#212)[Truncate, NoAssumption, Word64, Word32]
  214: Constant()[word32: 113]
  215: Comparison(#213, #214)[UnsignedLessThan, Word32]
  216: Branch(#215)[B42, B43, None]

BLOCK B42 <- B41
  218: Goto()[B54, 0]

BLOCK B43 <- B41
  219: Comparison(#213, #214)[Equal, Word32]
  220: Branch(#219)[B44, B45, None]

BLOCK B44 <- B43
  222: Goto()[B60, 0]

BLOCK B45 <- B43
  223: Load *(#4) [tagged base, TaggedPointer, Compressed]
  224: Constant()[compressed heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  225: Comparison(#223, #224)[Equal, Tagged]
  226: Branch(#225)[B46, B49, False]

BLOCK B46 <- B45
  228: Load *(#4 + 4) [tagged base, Float64, Float64, offset: 4]
  229: FloatUnary(#228)[Abs, Float64]
  230: Constant()[float64: 0]
  231: Comparison(#230, #229)[SignedLessThan, Float64]
  232: Branch(#231)[B47, B48, None]

BLOCK B47 <- B46
  234: Goto()[B60, 0]

BLOCK B48 <- B46
  235: Goto()[B54, 0]

BLOCK B49 <- B45
  236: Constant()[compressed heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  237: Comparison(#223, #236)[Equal, Tagged]
  238: Branch(#237)[B50, B53, False]

BLOCK B50 <- B49
  240: Load *(#4 + 4) [tagged base, Uint32, Word32, offset: 4]
  241: Constant()[word32: -256]
  242: WordBinop(#240, #241)[BitwiseAnd, Word32]
  243: Branch(#242)[B51, B52, None]

BLOCK B51 <- B50
  245: Goto()[B60, 0]

BLOCK B52 <- B50
  246: Goto()[B54, 0]

BLOCK B53 <- B49
  247: Goto()[B60, 0]

MERGE B54 <- B39, B42, B48, B52
  248: FrameState(#202, #1, #3, #4, #6, #7, #0, #201)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #202(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #201(kRepTagged|kTypeAny)]
  251: Constant()[word32: 1074794496]
  252: WordBinop(#201, #9)[BitwiseAnd, Word32]
  253: Branch(#252)[B56, B55, False]

BLOCK B55 <- B54
  255: TaggedBitcast(#201)[Compressed, Word32, Smi]
  256: Shift(#255, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  257: Goto()[B57, 0]

BLOCK B56 <- B54
  258: Load *(#201 + 4) [tagged base, Float64, Float64, offset: 4]
  259: Change(#258)[JSFloatTruncate, NoAssumption, Float64, Word32]
  260: Goto()[B57, 0]

MERGE B57 <- B55, B56
  261: Phi(#256, #259)[Word32]
  262: Constant()[word32: 8]
  263: WordBinop(#261, #251)[Add, Word32]
  264: Constant()[word32: 4095]
  265: WordBinop(#7, #9)[BitwiseAnd, Word32]
  266: DeoptimizeIf(#265, #248)[NotASmi, FeedbackSource(INVALID)]
  267: TaggedBitcast(#7)[Compressed, Word32, Smi]
  268: Shift(#267, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  269: Constant()[word32: 65535]
  270: Shift(#263, #262)[ShiftRightLogical, Word32]
  271: WordBinop(#268, #264)[BitwiseAnd, Word32]
  272: WordBinop(#270, #269)[BitwiseAnd, Word32]
  273: WordBinop(#6, #9)[BitwiseAnd, Word32]
  274: DeoptimizeIf(#273, #248)[negated, Smi, FeedbackSource(INVALID)]
  276: Constant()[word32: -4112]
  277: WordBinop(#272, #271)[Add, Word32]
  278: Load *(#6) [tagged base, TaggedPointer, Compressed]
  279: TaggedBitcast(#278)[Compressed, Word32, HeapObject]
  280: Change(#279)[Truncate, NoAssumption, Word64, Word32]
  281: Constant()[word32: 1061]
  282: Comparison(#280, #281)[UnsignedLessThanOrEqual, Word32]
  283: DeoptimizeIf(#282, #248)[negated, NotAString, FeedbackSource(INVALID)]
  284: WordBinop(#277, #276)[Add, Word32]
  285: Load *(#6 + 8) [tagged base, immutable, Uint32, Word32, offset: 8]
  286: Constant()[word32: -4097]
  287: WordBinop(#285, #284)[Add, Word32]
  288: WordBinop(#277, #286)[Add, Word32]
  289: Comparison(#287, #11)[SignedLessThan, Word32]
  290: WordBinop(#285, #288)[Add, Word32]
  291: Select(#289, #11, #287)[Word32, None, CMove]
  293: Comparison(#290, #11)[SignedLessThan, Word32]
  294: Select(#293, #11, #290)[Word32, None, CMove]
  295: Comparison(#291, #294)[UnsignedLessThan, Word32]
  296: Branch(#295)[B59, B58, True]

BLOCK B58 <- B57
  298: Constant()[heap object: 0x24f700000049 <String[0]: #>]
  299: Return(#11, #298)[0]

BLOCK B59 <- B57
  300: Change(#291)[SignExtend, NoAssumption, Word32, Word64]
  301: Change(#294)[SignExtend, NoAssumption, Word32, Word64]
  302: Constant()[heap object: 0x24f7003b6d09 <Code BUILTIN StringSubstring>]
  303: Call(#302, #6, #300, #301)[Code:StringSubstring Descriptor:r1s0i4f0]
  306: DidntThrow(#303)[🁤🁤 🁪🁪 🁤🁪 🁪 _ a, 0]
  308: Return(#11, #306)[0]

MERGE B60 <- B40, B44, B47, B51, B53
  309: Constant()[word64: 0]
  310: Return(#11, #309)[0]

----- V8.TFTurboshaftSpecialRPOScheduling -----

MERGE B0
    0: Parameter()[8, %context]
    1: Parameter()[0, %this]
    3: Parameter()[1]
    4: Parameter()[2]
    6: Parameter()[3]
    7: Parameter()[4]
    9: Constant()[word32: 1]
   10: WordBinop(#3, #9)[BitwiseAnd, Word32]
   11: Constant()[word32: 0]
   12: Branch(#10)[B7, B1, True]

BLOCK B1 <- B0
   14: Constant()[smi: 0]
   15: Comparison(#3, #14)[Equal, Tagged]
   16: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   17: FrameState(#16, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #16(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   20: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   21: Constant()[external: 0x11 <last_young_allocation>]
   22: Constant()[word64: 0]
   23: Store *(#21) = #22 [raw, Uint64, NoWriteBarrier]
   24: Constant()[external: 0x1dcc0014c020]
   25: Load *(#24) [raw, Uint64, Word64]
   26: StackPointerGreaterThan(#25)[JSFunctionEntry]
   27: Branch(#26)[B3, B2, True]

BLOCK B2 <- B1
   29: FrameConstant()[stack check offset]
   30: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   31: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   32: Call(#31, #17, #29, #30, #9, #20)[Code:StackGuardWithGap:r1s1i5f1]
   35: DidntThrow(#32)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   37: Goto()[B4, 0]

BLOCK B3 <- B1
   38: Goto()[B4, 0]

MERGE B4 <- B2, B3
   39: Branch(#15)[B6, B5, None]

BLOCK B5 <- B4
   42: Goto()[B31, 0]

BLOCK B6 <- B4
   41: Goto()[B36, 0]

BLOCK B7 <- B0
   43: TaggedBitcast(#3)[Compressed, Word32, HeapObject]
   44: Change(#43)[Truncate, NoAssumption, Word64, Word32]
   45: Constant()[word32: 113]
   46: Comparison(#44, #45)[UnsignedLessThan, Word32]
   47: Branch(#46)[B32, B8, None]

BLOCK B8 <- B7
   74: Comparison(#44, #45)[Equal, Word32]
   75: Branch(#74)[B27, B9, None]

BLOCK B9 <- B8
  101: Load *(#3) [tagged base, TaggedPointer, Compressed]
  102: Constant()[compressed heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  103: Comparison(#101, #102)[Equal, Tagged]
  104: Branch(#103)[B21, B10, False]

BLOCK B10 <- B9
  138: Constant()[compressed heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  139: Comparison(#101, #138)[Equal, Tagged]
  140: Branch(#139)[B15, B11, False]

BLOCK B11 <- B10
  172: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  173: FrameState(#172, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #172(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  176: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  177: Constant()[external: 0x11 <last_young_allocation>]
  178: Constant()[word64: 0]
  179: Store *(#177) = #178 [raw, Uint64, NoWriteBarrier]
  181: Constant()[external: 0x1dcc0014c020]
  182: Load *(#181) [raw, Uint64, Word64]
  183: StackPointerGreaterThan(#182)[JSFunctionEntry]
  184: Branch(#183)[B13, B12, True]

BLOCK B12 <- B11
  186: FrameConstant()[stack check offset]
  187: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  188: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  189: Call(#188, #173, #186, #187, #9, #176)[Code:StackGuardWithGap:r1s1i5f1]
  192: DidntThrow(#189)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  194: Goto()[B14, 0]

BLOCK B13 <- B11
  195: Goto()[B14, 0]

MERGE B14 <- B12, B13
  196: Goto()[B31, 0]

BLOCK B15 <- B10
  142: Load *(#3 + 4) [tagged base, Uint32, Word32, offset: 4]
  143: Constant()[word32: -256]
  144: WordBinop(#142, #143)[BitwiseAnd, Word32]
  145: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  146: FrameState(#145, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #145(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  149: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  150: Constant()[external: 0x11 <last_young_allocation>]
  151: Constant()[word64: 0]
  152: Store *(#150) = #151 [raw, Uint64, NoWriteBarrier]
  153: Constant()[external: 0x1dcc0014c020]
  154: Load *(#153) [raw, Uint64, Word64]
  155: StackPointerGreaterThan(#154)[JSFunctionEntry]
  156: Branch(#155)[B17, B16, True]

BLOCK B16 <- B15
  158: FrameConstant()[stack check offset]
  159: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  160: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  161: Call(#160, #146, #158, #159, #9, #149)[Code:StackGuardWithGap:r1s1i5f1]
  164: DidntThrow(#161)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  166: Goto()[B18, 0]

BLOCK B17 <- B15
  167: Goto()[B18, 0]

MERGE B18 <- B16, B17
  168: Branch(#144)[B20, B19, None]

BLOCK B19 <- B18
  171: Goto()[B36, 0]

BLOCK B20 <- B18
  170: Goto()[B31, 0]

BLOCK B21 <- B9
  106: Load *(#3 + 4) [tagged base, Float64, Float64, offset: 4]
  107: FloatUnary(#106)[Abs, Float64]
  108: Constant()[float64: 0]
  109: Comparison(#108, #107)[SignedLessThan, Float64]
  110: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  111: FrameState(#110, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #110(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
  114: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
  115: Constant()[external: 0x11 <last_young_allocation>]
  116: Constant()[word64: 0]
  117: Store *(#115) = #116 [raw, Uint64, NoWriteBarrier]
  119: Constant()[external: 0x1dcc0014c020]
  120: Load *(#119) [raw, Uint64, Word64]
  121: StackPointerGreaterThan(#120)[JSFunctionEntry]
  122: Branch(#121)[B23, B22, True]

BLOCK B22 <- B21
  124: FrameConstant()[stack check offset]
  125: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
  126: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
  127: Call(#126, #111, #124, #125, #9, #114)[Code:StackGuardWithGap:r1s1i5f1]
  130: DidntThrow(#127)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
  132: Goto()[B24, 0]

BLOCK B23 <- B21
  133: Goto()[B24, 0]

MERGE B24 <- B22, B23
  134: Branch(#109)[B26, B25, None]

BLOCK B25 <- B24
  137: Goto()[B36, 0]

BLOCK B26 <- B24
  136: Goto()[B31, 0]

BLOCK B27 <- B8
   77: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   78: FrameState(#77, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #77(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   81: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   82: Constant()[external: 0x11 <last_young_allocation>]
   83: Constant()[word64: 0]
   84: Store *(#82) = #83 [raw, Uint64, NoWriteBarrier]
   85: Constant()[external: 0x1dcc0014c020]
   86: Load *(#85) [raw, Uint64, Word64]
   87: StackPointerGreaterThan(#86)[JSFunctionEntry]
   88: Branch(#87)[B29, B28, True]

BLOCK B28 <- B27
   90: FrameConstant()[stack check offset]
   91: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   92: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   93: Call(#92, #78, #90, #91, #9, #81)[Code:StackGuardWithGap:r1s1i5f1]
   96: DidntThrow(#93)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   98: Goto()[B30, 0]

BLOCK B29 <- B27
   99: Goto()[B30, 0]

MERGE B30 <- B28, B29
  100: Goto()[B31, 0]

MERGE B31 <- B5, B30, B26, B20, B14
  199: Constant()[number: -1.07479e+09]
  200: Goto()[B37, 0]

BLOCK B32 <- B7
   49: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
   50: FrameState(#49, #1, #3, #4, #6, #7, #0)[not inlined, UNOPTIMIZED_FRAME, -1, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #49(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . .]
   53: Constant()[heap object: 0x24f70100c9b5 <NativeContext[309]>]
   54: Constant()[external: 0x11 <last_young_allocation>]
   55: Constant()[word64: 0]
   56: Store *(#54) = #55 [raw, Uint64, NoWriteBarrier]
   58: Constant()[external: 0x1dcc0014c020]
   59: Load *(#58) [raw, Uint64, Word64]
   60: StackPointerGreaterThan(#59)[JSFunctionEntry]
   61: Branch(#60)[B34, B33, True]

BLOCK B33 <- B32
   63: FrameConstant()[stack check offset]
   64: Constant()[external: 0x557ae7d14e50 <StackGuardWithGap.entry>]
   65: Constant()[heap object: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>]
   66: Call(#65, #50, #63, #64, #9, #53)[Code:StackGuardWithGap:r1s1i5f1]
   69: DidntThrow(#66)[🁫🁫 🁫🁫 🁤🁪 🁫 i a, 0]
   71: Goto()[B35, 0]

BLOCK B34 <- B32
   72: Goto()[B35, 0]

MERGE B35 <- B33, B34
   73: Goto()[B36, 0]

MERGE B36 <- B6, B35, B25, B19
  197: Constant()[heap object: 0x24f700000011 <undefined>]
  198: Goto()[B37, 0]

MERGE B37 <- B36, B31
  201: Phi(#197, #199)[Tagged]
  202: Constant()[compressed heap object: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>]
  203: WordBinop(#4, #9)[BitwiseAnd, Word32]
  204: Branch(#203)[B41, B38, True]

BLOCK B38 <- B37
  206: Constant()[smi: 0]
  207: Comparison(#4, #206)[Equal, Tagged]
  208: Branch(#207)[B40, B39, None]

BLOCK B39 <- B38
  211: Goto()[B53, 0]

BLOCK B40 <- B38
  210: Goto()[B55, 0]

BLOCK B41 <- B37
  212: TaggedBitcast(#4)[Compressed, Word32, HeapObject]
  213: Change(#212)[Truncate, NoAssumption, Word64, Word32]
  214: Constant()[word32: 113]
  215: Comparison(#213, #214)[UnsignedLessThan, Word32]
  216: Branch(#215)[B54, B42, None]

BLOCK B42 <- B41
  219: Comparison(#213, #214)[Equal, Word32]
  220: Branch(#219)[B52, B43, None]

BLOCK B43 <- B42
  223: Load *(#4) [tagged base, TaggedPointer, Compressed]
  224: Constant()[compressed heap object: 0x24f700000515 <Map[12](HEAP_NUMBER_TYPE)>]
  225: Comparison(#223, #224)[Equal, Tagged]
  226: Branch(#225)[B49, B44, False]

BLOCK B44 <- B43
  236: Constant()[compressed heap object: 0x24f70000053d <Map(BIG_INT_BASE_TYPE)>]
  237: Comparison(#223, #236)[Equal, Tagged]
  238: Branch(#237)[B46, B45, False]

BLOCK B45 <- B44
  247: Goto()[B53, 0]

BLOCK B46 <- B44
  240: Load *(#4 + 4) [tagged base, Uint32, Word32, offset: 4]
  241: Constant()[word32: -256]
  242: WordBinop(#240, #241)[BitwiseAnd, Word32]
  243: Branch(#242)[B48, B47, None]

BLOCK B47 <- B46
  246: Goto()[B55, 0]

BLOCK B48 <- B46
  245: Goto()[B53, 0]

BLOCK B49 <- B43
  228: Load *(#4 + 4) [tagged base, Float64, Float64, offset: 4]
  229: FloatUnary(#228)[Abs, Float64]
  230: Constant()[float64: 0]
  231: Comparison(#230, #229)[SignedLessThan, Float64]
  232: Branch(#231)[B51, B50, None]

BLOCK B50 <- B49
  235: Goto()[B55, 0]

BLOCK B51 <- B49
  234: Goto()[B53, 0]

BLOCK B52 <- B42
  222: Goto()[B53, 0]

MERGE B53 <- B39, B52, B51, B48, B45
  309: Constant()[word64: 0]
  310: Return(#11, #309)[0]

BLOCK B54 <- B41
  218: Goto()[B55, 0]

MERGE B55 <- B40, B54, B50, B47
  248: FrameState(#202, #1, #3, #4, #6, #7, #0, #201)[not inlined, UNOPTIMIZED_FRAME, 11, Ignore, 0x24f70102654d <SharedFunctionInfo trigger>, state values: #202(kRepTagged|kTypeAny) #1(kRepTagged|kTypeAny) #3(kRepTagged|kTypeAny) #4(kRepTagged|kTypeAny) #6(kRepTagged|kTypeAny) #7(kRepTagged|kTypeAny) #0(kRepTagged|kTypeAny) . . . . . . #201(kRepTagged|kTypeAny)]
  251: Constant()[word32: 1074794496]
  252: WordBinop(#201, #9)[BitwiseAnd, Word32]
  253: Branch(#252)[B57, B56, False]

BLOCK B56 <- B55
  255: TaggedBitcast(#201)[Compressed, Word32, Smi]
  256: Shift(#255, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  257: Goto()[B58, 0]

BLOCK B57 <- B55
  258: Load *(#201 + 4) [tagged base, Float64, Float64, offset: 4]
  259: Change(#258)[JSFloatTruncate, NoAssumption, Float64, Word32]
  260: Goto()[B58, 0]

MERGE B58 <- B56, B57
  261: Phi(#256, #259)[Word32]
  262: Constant()[word32: 8]
  263: WordBinop(#261, #251)[Add, Word32]
  264: Constant()[word32: 4095]
  265: WordBinop(#7, #9)[BitwiseAnd, Word32]
  266: DeoptimizeIf(#265, #248)[NotASmi, FeedbackSource(INVALID)]
  267: TaggedBitcast(#7)[Compressed, Word32, Smi]
  268: Shift(#267, #9)[ShiftRightArithmeticShiftOutZeros, Word32]
  269: Constant()[word32: 65535]
  270: Shift(#263, #262)[ShiftRightLogical, Word32]
  271: WordBinop(#268, #264)[BitwiseAnd, Word32]
  272: WordBinop(#270, #269)[BitwiseAnd, Word32]
  273: WordBinop(#6, #9)[BitwiseAnd, Word32]
  274: DeoptimizeIf(#273, #248)[negated, Smi, FeedbackSource(INVALID)]
  276: Constant()[word32: -4112]
  277: WordBinop(#272, #271)[Add, Word32]
  278: Load *(#6) [tagged base, TaggedPointer, Compressed]
  279: TaggedBitcast(#278)[Compressed, Word32, HeapObject]
  280: Change(#279)[Truncate, NoAssumption, Word64, Word32]
  281: Constant()[word32: 1061]
  282: Comparison(#280, #281)[UnsignedLessThanOrEqual, Word32]
  283: DeoptimizeIf(#282, #248)[negated, NotAString, FeedbackSource(INVALID)]
  284: WordBinop(#277, #276)[Add, Word32]
  285: Load *(#6 + 8) [tagged base, immutable, Uint32, Word32, offset: 8]
  286: Constant()[word32: -4097]
  287: WordBinop(#285, #284)[Add, Word32]
  288: WordBinop(#277, #286)[Add, Word32]
  289: Comparison(#287, #11)[SignedLessThan, Word32]
  290: WordBinop(#285, #288)[Add, Word32]
  291: Select(#289, #11, #287)[Word32, None, CMove]
  293: Comparison(#290, #11)[SignedLessThan, Word32]
  294: Select(#293, #11, #290)[Word32, None, CMove]
  295: Comparison(#291, #294)[UnsignedLessThan, Word32]
  296: Branch(#295)[B60, B59, True]

BLOCK B59 <- B58
  298: Constant()[heap object: 0x24f700000049 <String[0]: #>]
  299: Return(#11, #298)[0]

BLOCK B60 <- B58
  300: Change(#291)[SignExtend, NoAssumption, Word32, Word64]
  301: Change(#294)[SignExtend, NoAssumption, Word32, Word64]
  302: Constant()[heap object: 0x24f7003b6d09 <Code BUILTIN StringSubstring>]
  303: Call(#302, #6, #300, #301)[Code:StringSubstring Descriptor:r1s0i4f0]
  306: DidntThrow(#303)[🁤🁤 🁪🁪 🁤🁪 🁪 _ a, 0]
  308: Return(#11, #306)[0]
----- Instruction sequence after instruction selection -----
IMM#0: 0x24f7003b6d09 <Code BUILTIN StringSubstring>
IMM#1: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#2: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#3: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#4: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#5: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#6: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#7: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#8: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#9: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#10: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#11: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#12: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#13: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#14: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#15: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
CST#0: v44 = 1
CST#1: v9 = 0
CST#2: v78 = 0x24f70100c9b5 <NativeContext[309]>
CST#3: v77 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#4: v70 = 0x24f70100c9b5 <NativeContext[309]>
CST#5: v69 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#6: v64 = 0x24f70100c9b5 <NativeContext[309]>
CST#7: v63 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#8: v58 = 0
CST#9: v56 = 0x24f70100c9b5 <NativeContext[309]>
CST#10: v55 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#11: v50 = 0x24f70100c9b5 <NativeContext[309]>
CST#12: v49 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#13: v40 = -1.07479e+09
CST#14: v45 = 0x24f70100c9b5 <NativeContext[309]>
CST#15: v43 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#16: v39 = 0x24f700000011 <undefined>
CST#17: v35 = 0
CST#18: v34 = 0l
CST#19: v7 = 0x24f700000049 <String[0]: #>
B0: AO#0  instructions: [0, 9)
 predecessors:
       0: gap () () 
          v20(=rsi) = ArchNop
       1: gap () () 
          v16(=-1S) = ArchNop
       2: gap () () 
          v17(=-2S) = ArchNop
       3: gap () () 
          v18(=-3S) = ArchNop
       4: gap () () 
          v2(=-4S) = ArchNop
       5: gap () () 
          v19(=-5S) = ArchNop
       6: gap () () 
          [constant:v44] = ArchNop
       7: gap () () 
          [constant:v9] = ArchNop
       8: gap () () 
          X64Test32 && branch if not equal v17 #1 [rpo_immediate:7] [rpo_immediate:1]
 successors: B7 B1
B1: AO#29 (deferred) (no frame)  instructions: [9, 13)
 predecessors: B0
       9: gap () () 
          v74(R) = X64Cmp32 && set if equal v17 #0
      10: gap () () 
          [constant:v78] = ArchNop
      11: gap () () 
          X64Movq : Root #120 #0
      12: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:3] [rpo_immediate:2]
 successors: B3 B2
B2: AO#30 (deferred) (no frame)  instructions: [13, 18)
 predecessors: B1
      13: gap () () 
          v76(R) = ArchStackCheckOffset
      14: gap () () 
          [constant:v77] = ArchNop
      15: gap () () 
          X64Push #8 v76(-)
      16: gap () () 
          v75(=rax) = ArchCallCodeObject [immediate:14] #8 [immediate:15] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) v77(=rbx) v44(=rax) v78(=rsi) #7
      17: gap () () 
          ArchJmp [rpo_immediate:4]
 successors: B4
B3: AO#31 (deferred) (no frame)  instructions: [18, 19)
 predecessors: B1
      18: gap () () 
          ArchJmp [rpo_immediate:4]
 successors: B4
B4: AO#32 (deferred) (no frame)  instructions: [19, 20)
 predecessors: B2 B3
      19: gap () () 
          X64Cmp32 && branch if not equal v74 #0 [rpo_immediate:6] [rpo_immediate:5]
 successors: B6 B5
B5: AO#33 (deferred) (no frame)  instructions: [20, 21)
 predecessors: B4
      20: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B6: AO#34 (deferred) (no frame)  instructions: [21, 22)
 predecessors: B4
      21: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B7: AO#1 (no frame)  instructions: [22, 23)
 predecessors: B0
      22: gap () () 
          X64Cmp32 && branch if unsigned less than v17 #113 [rpo_immediate:32] [rpo_immediate:8]
 successors: B32 B8
B8: AO#2 (no frame)  instructions: [23, 24)
 predecessors: B7
      23: gap () () 
          X64Cmp32 && branch if equal v17 #113 [rpo_immediate:27] [rpo_immediate:9]
 successors: B27 B9
B9: AO#3 (no frame)  instructions: [24, 26)
 predecessors: B8
      24: gap () () 
          v72(R) = X64Movl : MRI v17(R) #-1
      25: gap () () 
          X64Cmp32 && branch if equal v72(R) #1301 [rpo_immediate:21] [rpo_immediate:10]
 successors: B21 B10
B10: AO#4 (no frame)  instructions: [26, 27)
 predecessors: B9
      26: gap () () 
          X64Cmp32 && branch if equal v72(R) #1341 [rpo_immediate:15] [rpo_immediate:11]
 successors: B15 B11
B11: AO#5 (no frame)  instructions: [27, 30)
 predecessors: B10
      27: gap () () 
          [constant:v70] = ArchNop
      28: gap () () 
          X64Movq : Root #120 #0
      29: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:13] [rpo_immediate:12]
 successors: B13 B12
B12: AO#35 (deferred) (no frame)  instructions: [30, 35)
 predecessors: B11
      30: gap () () 
          v68(R) = ArchStackCheckOffset
      31: gap () () 
          [constant:v69] = ArchNop
      32: gap () () 
          X64Push #8 v68(-)
      33: gap () () 
          v67(=rax) = ArchCallCodeObject [immediate:12] #7 [immediate:13] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) v69(=rbx) v44(=rax) v70(=rsi) #7
      34: gap () () 
          ArchJmp [rpo_immediate:14]
 successors: B14
B13: AO#6 (no frame)  instructions: [35, 36)
 predecessors: B11
      35: gap () () 
          ArchJmp [rpo_immediate:14]
 successors: B14
B14: AO#7 (no frame)  instructions: [36, 37)
 predecessors: B12 B13
      36: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B15: AO#36 (deferred) (no frame)  instructions: [37, 42)
 predecessors: B10
      37: gap () () 
          v66(R) = X64Movl : MRI v17(R) #3
      38: gap () () 
          v60(0) = X64And32 v66(R) #-256
      39: gap () () 
          [constant:v64] = ArchNop
      40: gap () () 
          X64Movq : Root #120 #0
      41: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:17] [rpo_immediate:16]
 successors: B17 B16
B16: AO#37 (deferred) (no frame)  instructions: [42, 47)
 predecessors: B15
      42: gap () () 
          v62(R) = ArchStackCheckOffset
      43: gap () () 
          [constant:v63] = ArchNop
      44: gap () () 
          X64Push #8 v62(-)
      45: gap () () 
          v61(=rax) = ArchCallCodeObject [immediate:10] #6 [immediate:11] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) v63(=rbx) v44(=rax) v64(=rsi) #7
      46: gap () () 
          ArchJmp [rpo_immediate:18]
 successors: B18
B17: AO#38 (deferred) (no frame)  instructions: [47, 48)
 predecessors: B15
      47: gap () () 
          ArchJmp [rpo_immediate:18]
 successors: B18
B18: AO#39 (deferred) (no frame)  instructions: [48, 49)
 predecessors: B16 B17
      48: gap () () 
          X64Cmp32 && branch if not equal v60 #0 [rpo_immediate:20] [rpo_immediate:19]
 successors: B20 B19
B19: AO#40 (deferred) (no frame)  instructions: [49, 50)
 predecessors: B18
      49: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B20: AO#41 (deferred) (no frame)  instructions: [50, 51)
 predecessors: B18
      50: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B21: AO#42 (deferred) (no frame)  instructions: [51, 57)
 predecessors: B9
      51: gap () () 
          v59(R) = X64Movsd : MRI v17(R) #3
      52: gap () () 
          [constant:v58] = ArchNop
      53: gap () () 
          v52(R) = AVXFloat64Cmp && set if not equal v58(R) v59
      54: gap () () 
          [constant:v56] = ArchNop
      55: gap () () 
          X64Movq : Root #120 #0
      56: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:23] [rpo_immediate:22]
 successors: B23 B22
B22: AO#43 (deferred) (no frame)  instructions: [57, 62)
 predecessors: B21
      57: gap () () 
          v54(R) = ArchStackCheckOffset
      58: gap () () 
          [constant:v55] = ArchNop
      59: gap () () 
          X64Push #8 v54(-)
      60: gap () () 
          v53(=rax) = ArchCallCodeObject [immediate:8] #5 [immediate:9] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) v55(=rbx) v44(=rax) v56(=rsi) #7
      61: gap () () 
          ArchJmp [rpo_immediate:24]
 successors: B24
B23: AO#44 (deferred) (no frame)  instructions: [62, 63)
 predecessors: B21
      62: gap () () 
          ArchJmp [rpo_immediate:24]
 successors: B24
B24: AO#45 (deferred) (no frame)  instructions: [63, 64)
 predecessors: B22 B23
      63: gap () () 
          X64Cmp32 && branch if not equal v52 #0 [rpo_immediate:26] [rpo_immediate:25]
 successors: B26 B25
B25: AO#46 (deferred) (no frame)  instructions: [64, 65)
 predecessors: B24
      64: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B26: AO#47 (deferred) (no frame)  instructions: [65, 66)
 predecessors: B24
      65: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B27: AO#8 (no frame)  instructions: [66, 69)
 predecessors: B8
      66: gap () () 
          [constant:v50] = ArchNop
      67: gap () () 
          X64Movq : Root #120 #0
      68: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:29] [rpo_immediate:28]
 successors: B29 B28
B28: AO#48 (deferred) (no frame)  instructions: [69, 74)
 predecessors: B27
      69: gap () () 
          v48(R) = ArchStackCheckOffset
      70: gap () () 
          [constant:v49] = ArchNop
      71: gap () () 
          X64Push #8 v48(-)
      72: gap () () 
          v47(=rax) = ArchCallCodeObject [immediate:6] #4 [immediate:7] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) v49(=rbx) v44(=rax) v50(=rsi) #7
      73: gap () () 
          ArchJmp [rpo_immediate:30]
 successors: B30
B29: AO#9 (no frame)  instructions: [74, 75)
 predecessors: B27
      74: gap () () 
          ArchJmp [rpo_immediate:30]
 successors: B30
B30: AO#10 (no frame)  instructions: [75, 76)
 predecessors: B28 B29
      75: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B31: AO#11 (no frame)  instructions: [76, 78)
 predecessors: B5 B30 B26 B20 B14
      76: gap () () 
          [constant:v40] = ArchNop
      77: gap () () 
          ArchJmp [rpo_immediate:37]
 successors: B37
B32: AO#12 (no frame)  instructions: [78, 81)
 predecessors: B7
      78: gap () () 
          [constant:v45] = ArchNop
      79: gap () () 
          X64Movq : Root #120 #0
      80: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:34] [rpo_immediate:33]
 successors: B34 B33
B33: AO#49 (deferred) (no frame)  instructions: [81, 86)
 predecessors: B32
      81: gap () () 
          v42(R) = ArchStackCheckOffset
      82: gap () () 
          [constant:v43] = ArchNop
      83: gap () () 
          X64Push #8 v42(-)
      84: gap () () 
          v41(=rax) = ArchCallCodeObject [immediate:4] #3 [immediate:5] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) v43(=rbx) v44(=rax) v45(=rsi) #7
      85: gap () () 
          ArchJmp [rpo_immediate:35]
 successors: B35
B34: AO#13 (no frame)  instructions: [86, 87)
 predecessors: B32
      86: gap () () 
          ArchJmp [rpo_immediate:35]
 successors: B35
B35: AO#14 (no frame)  instructions: [87, 88)
 predecessors: B33 B34
      87: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B36: AO#15 (no frame)  instructions: [88, 90)
 predecessors: B6 B35 B25 B19
      88: gap () () 
          [constant:v39] = ArchNop
      89: gap () () 
          ArchJmp [rpo_immediate:37]
 successors: B37
B37: AO#16 (no frame)  instructions: [90, 91)
 predecessors: B36 B31
     phi: v21 = v39 v40
      90: gap () () 
          X64Test32 && branch if not equal v18 #1 [rpo_immediate:41] [rpo_immediate:38]
 successors: B41 B38
B38: AO#50 (deferred) (no frame)  instructions: [91, 92)
 predecessors: B37
      91: gap () () 
          X64Cmp32 && branch if equal v18 #0 [rpo_immediate:40] [rpo_immediate:39]
 successors: B40 B39
B39: AO#51 (deferred) (no frame)  instructions: [92, 93)
 predecessors: B38
      92: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B40: AO#52 (deferred) (no frame)  instructions: [93, 94)
 predecessors: B38
      93: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B41: AO#17 (no frame)  instructions: [94, 95)
 predecessors: B37
      94: gap () () 
          X64Cmp32 && branch if unsigned less than v18 #113 [rpo_immediate:54] [rpo_immediate:42]
 successors: B54 B42
B42: AO#18 (no frame)  instructions: [95, 96)
 predecessors: B41
      95: gap () () 
          X64Cmp32 && branch if equal v18 #113 [rpo_immediate:52] [rpo_immediate:43]
 successors: B52 B43
B43: AO#19 (no frame)  instructions: [96, 98)
 predecessors: B42
      96: gap () () 
          v37(R) = X64Movl : MRI v18(R) #-1
      97: gap () () 
          X64Cmp32 && branch if equal v37(R) #1301 [rpo_immediate:49] [rpo_immediate:44]
 successors: B49 B44
B44: AO#20 (no frame)  instructions: [98, 99)
 predecessors: B43
      98: gap () () 
          X64Cmp32 && branch if equal v37(R) #1341 [rpo_immediate:46] [rpo_immediate:45]
 successors: B46 B45
B45: AO#21 (no frame)  instructions: [99, 100)
 predecessors: B44
      99: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B46: AO#53 (deferred) (no frame)  instructions: [100, 101)
 predecessors: B44
     100: gap () () 
          X64Test32 : MRI && branch if not equal v18(R) #3 #-256 [rpo_immediate:48] [rpo_immediate:47]
 successors: B48 B47
B47: AO#54 (deferred) (no frame)  instructions: [101, 102)
 predecessors: B46
     101: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B48: AO#55 (deferred) (no frame)  instructions: [102, 103)
 predecessors: B46
     102: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B49: AO#56 (deferred) (no frame)  instructions: [103, 106)
 predecessors: B43
     103: gap () () 
          v36(R) = X64Movsd : MRI v18(R) #3
     104: gap () () 
          [constant:v35] = ArchNop
     105: gap () () 
          AVXFloat64Cmp && branch if not equal v35(R) v36 [rpo_immediate:51] [rpo_immediate:50]
 successors: B51 B50
B50: AO#57 (deferred) (no frame)  instructions: [106, 107)
 predecessors: B49
     106: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B51: AO#58 (deferred) (no frame)  instructions: [107, 108)
 predecessors: B49
     107: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B52: AO#22 (no frame)  instructions: [108, 109)
 predecessors: B42
     108: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B53: AO#23 (no frame)  instructions: [109, 111)
 predecessors: B39 B52 B51 B48 B45
     109: gap () () 
          [constant:v34] = ArchNop
     110: gap () () 
          ArchRet #0 v34(=rax)
 successors:
B54: AO#24 (no frame)  instructions: [111, 112)
 predecessors: B41
     111: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B55: AO#25 (no frame)  instructions: [112, 113)
 predecessors: B40 B54 B50 B47
     112: gap () () 
          X64Test32 && branch if not equal v21 #1 [rpo_immediate:57] [rpo_immediate:56]
 successors: B57 B56
B56: AO#26 (no frame)  instructions: [113, 116)
 predecessors: B55
     113: gap () () 
          v33(0) = ArchNop v21
     114: gap () () 
          v30(0) = X64Sar32 v33(R) #1
     115: gap () () 
          ArchJmp [rpo_immediate:58]
 successors: B58
B57: AO#59 (deferred) (no frame)  instructions: [116, 119)
 predecessors: B55
     116: gap () () 
          v32(R) = X64Movsd : MRI v21(R) #3
     117: gap () () 
          v31(R) = ArchTruncateDoubleToI v32(R)
     118: gap () () 
          ArchJmp [rpo_immediate:58]
 successors: B58
B58: AO#27 (no frame)  instructions: [119, 138)
 predecessors: B56 B57
     phi: v29 = v30 v31
     119: gap () () 
          v27(R) = X64Lea32 : MRI v29(R) #1074794496
     120: gap () () 
          X64Test32 && deoptimize if not equal v19 #1 #2 [immediate:3] v16(-) v17(-) v18(-) v2(-) v19(-) v20(S) v21(-)
     121: gap () () 
          v28(0) = ArchNop v19
     122: gap () () 
          v26(0) = X64Sar32 v28(R) #1
     123: gap () () 
          v25(0) = X64Shr32 v27(R) #8
     124: gap () () 
          v23(0) = X64And32 v26(R) #4095
     125: gap () () 
          v24(R) = X64Movzxwl v25
     126: gap () () 
          X64Test32 && deoptimize if equal v2 #1 #1 [immediate:2] v16(-) v17(-) v18(-) v2(-) v19(-) v20(S) v21(-)
     127: gap () () 
          v13(R) = X64Lea32 : MR1 v23(R) v24(R)
     128: gap () () 
          v22(R) = X64Movl : MRI v2(R) #-1
     129: gap () () 
          X64Cmp32 && deoptimize if unsigned greater than v22 #1061 #0 [immediate:1] v16(-) v17(-) v18(-) v2(-) v19(-) v20(S) v21(-)
     130: gap () () 
          v14(R) = X64Lea32 : MRI v13(R) #-4112
     131: gap () () 
          v12(R) = X64Movl : MRI v2(R) #7
     132: gap () () 
          v10(R) = X64Lea32 : MR1 v14(R) v12(R)
     133: gap () () 
          v11(R) = X64Lea32 : MRI v13(R) #-4097
     134: gap () () 
          v8(R) = X64Lea32 : MR1 v11(R) v12(R)
     135: gap () () 
          v6(2) = X64Cmp32 && select if signed less than v10 #0 v10(R) v9
     136: gap () () 
          v5(2) = X64Cmp32 && select if signed less than v8 #0 v8(R) v9
     137: gap () () 
          X64Cmp32 && branch if unsigned less than v6(R) v5 [rpo_immediate:60] [rpo_immediate:59]
 successors: B60 B59
B59: AO#60 (deferred) (no frame)  instructions: [138, 140)
 predecessors: B58
     138: gap () () 
          [constant:v7] = ArchNop
     139: gap () () 
          ArchRet #0 v7(=rax)
 successors:
B60: AO#28 (no frame)  instructions: [140, 144)
 predecessors: B58
     140: gap () () 
          v3(R) = X64Movsxlq v6
     141: gap () () 
          v4(R) = X64Movsxlq v5
     142: gap () () 
          v1(=rax) = ArchCallCodeObject [immediate:0] v2(=rax) v3(=rbx) v4(=rcx) #255
     143: gap () () 
          ArchRet #0 v1(=rax)
 successors:
----- Instruction sequence before register allocation -----
IMM#0: 0x24f7003b6d09 <Code BUILTIN StringSubstring>
IMM#1: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#2: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#3: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#4: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#5: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#6: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#7: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#8: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#9: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#10: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#11: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#12: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#13: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#14: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#15: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
CST#0: v44 = 1
CST#1: v9 = 0
CST#2: v78 = 0x24f70100c9b5 <NativeContext[309]>
CST#3: v77 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#4: v70 = 0x24f70100c9b5 <NativeContext[309]>
CST#5: v69 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#6: v64 = 0x24f70100c9b5 <NativeContext[309]>
CST#7: v63 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#8: v58 = 0
CST#9: v56 = 0x24f70100c9b5 <NativeContext[309]>
CST#10: v55 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#11: v50 = 0x24f70100c9b5 <NativeContext[309]>
CST#12: v49 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#13: v40 = -1.07479e+09
CST#14: v45 = 0x24f70100c9b5 <NativeContext[309]>
CST#15: v43 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#16: v39 = 0x24f700000011 <undefined>
CST#17: v35 = 0
CST#18: v34 = 0l
CST#19: v7 = 0x24f700000049 <String[0]: #>
B0: AO#0  instructions: [0, 9)
 predecessors:
       0: gap () () 
          [rsi|R|t] = ArchNop
       1: gap (v20(-) = [rsi|R|t]) () 
          [stack:-1|t] = ArchNop
       2: gap (v16(-) = [stack:-1|t]) () 
          [stack:-2|t] = ArchNop
       3: gap (v17(-) = [stack:-2|t]) () 
          [stack:-3|t] = ArchNop
       4: gap (v18(-) = [stack:-3|t]) () 
          [stack:-4|t] = ArchNop
       5: gap (v2(-) = [stack:-4|t]) () 
          [stack:-5|t] = ArchNop
       6: gap (v19(-) = [stack:-5|t]) () 
          [constant:v44] = ArchNop
       7: gap () () 
          [constant:v9] = ArchNop
       8: gap () () 
          X64Test32 && branch if not equal v17 #1 [rpo_immediate:7] [rpo_immediate:1]
 successors: B7 B1
B1: AO#29 (deferred) (no frame)  instructions: [9, 13)
 predecessors: B0
       9: gap () () 
          v74(R) = X64Cmp32 && set if equal v17 #0
      10: gap () () 
          [constant:v78] = ArchNop
      11: gap () () 
          X64Movq : Root #120 #0
      12: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:3] [rpo_immediate:2]
 successors: B3 B2
B2: AO#30 (deferred) (no frame)  instructions: [13, 18)
 predecessors: B1
      13: gap () () 
          v76(R) = ArchStackCheckOffset
      14: gap () () 
          [constant:v77] = ArchNop
      15: gap () () 
          X64Push #8 v76(-)
      16: gap () ([rbx|R|w64] = v77(-); [rax|R|w64] = v44(-); [rsi|R|t] = v78(-)) 
          [rax|R|t] = ArchCallCodeObject [immediate:14] #8 [immediate:15] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      17: gap () () 
          ArchJmp [rpo_immediate:4]
 successors: B4
B3: AO#31 (deferred) (no frame)  instructions: [18, 19)
 predecessors: B1
      18: gap () () 
          ArchJmp [rpo_immediate:4]
 successors: B4
B4: AO#32 (deferred) (no frame)  instructions: [19, 20)
 predecessors: B2 B3
      19: gap () () 
          X64Cmp32 && branch if not equal v74 #0 [rpo_immediate:6] [rpo_immediate:5]
 successors: B6 B5
B5: AO#33 (deferred) (no frame)  instructions: [20, 21)
 predecessors: B4
      20: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B6: AO#34 (deferred) (no frame)  instructions: [21, 22)
 predecessors: B4
      21: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B7: AO#1 (no frame)  instructions: [22, 23)
 predecessors: B0
      22: gap () () 
          X64Cmp32 && branch if unsigned less than v17 #113 [rpo_immediate:32] [rpo_immediate:8]
 successors: B32 B8
B8: AO#2 (no frame)  instructions: [23, 24)
 predecessors: B7
      23: gap () () 
          X64Cmp32 && branch if equal v17 #113 [rpo_immediate:27] [rpo_immediate:9]
 successors: B27 B9
B9: AO#3 (no frame)  instructions: [24, 26)
 predecessors: B8
      24: gap () () 
          v72(R) = X64Movl : MRI v17(R) #-1
      25: gap () () 
          X64Cmp32 && branch if equal v72(R) #1301 [rpo_immediate:21] [rpo_immediate:10]
 successors: B21 B10
B10: AO#4 (no frame)  instructions: [26, 27)
 predecessors: B9
      26: gap () () 
          X64Cmp32 && branch if equal v72(R) #1341 [rpo_immediate:15] [rpo_immediate:11]
 successors: B15 B11
B11: AO#5 (no frame)  instructions: [27, 30)
 predecessors: B10
      27: gap () () 
          [constant:v70] = ArchNop
      28: gap () () 
          X64Movq : Root #120 #0
      29: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:13] [rpo_immediate:12]
 successors: B13 B12
B12: AO#35 (deferred) (no frame)  instructions: [30, 35)
 predecessors: B11
      30: gap () () 
          v68(R) = ArchStackCheckOffset
      31: gap () () 
          [constant:v69] = ArchNop
      32: gap () () 
          X64Push #8 v68(-)
      33: gap () ([rbx|R|w64] = v69(-); [rax|R|w64] = v44(-); [rsi|R|t] = v70(-)) 
          [rax|R|t] = ArchCallCodeObject [immediate:12] #7 [immediate:13] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      34: gap () () 
          ArchJmp [rpo_immediate:14]
 successors: B14
B13: AO#6 (no frame)  instructions: [35, 36)
 predecessors: B11
      35: gap () () 
          ArchJmp [rpo_immediate:14]
 successors: B14
B14: AO#7 (no frame)  instructions: [36, 37)
 predecessors: B12 B13
      36: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B15: AO#36 (deferred) (no frame)  instructions: [37, 42)
 predecessors: B10
      37: gap () () 
          v66(R) = X64Movl : MRI v17(R) #3
      38: gap () (v60(R) = v66(-)) 
          v60(0) = X64And32 v60(R) #-256
      39: gap () () 
          [constant:v64] = ArchNop
      40: gap () () 
          X64Movq : Root #120 #0
      41: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:17] [rpo_immediate:16]
 successors: B17 B16
B16: AO#37 (deferred) (no frame)  instructions: [42, 47)
 predecessors: B15
      42: gap () () 
          v62(R) = ArchStackCheckOffset
      43: gap () () 
          [constant:v63] = ArchNop
      44: gap () () 
          X64Push #8 v62(-)
      45: gap () ([rbx|R|w64] = v63(-); [rax|R|w64] = v44(-); [rsi|R|t] = v64(-)) 
          [rax|R|t] = ArchCallCodeObject [immediate:10] #6 [immediate:11] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      46: gap () () 
          ArchJmp [rpo_immediate:18]
 successors: B18
B17: AO#38 (deferred) (no frame)  instructions: [47, 48)
 predecessors: B15
      47: gap () () 
          ArchJmp [rpo_immediate:18]
 successors: B18
B18: AO#39 (deferred) (no frame)  instructions: [48, 49)
 predecessors: B16 B17
      48: gap () () 
          X64Cmp32 && branch if not equal v60 #0 [rpo_immediate:20] [rpo_immediate:19]
 successors: B20 B19
B19: AO#40 (deferred) (no frame)  instructions: [49, 50)
 predecessors: B18
      49: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B20: AO#41 (deferred) (no frame)  instructions: [50, 51)
 predecessors: B18
      50: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B21: AO#42 (deferred) (no frame)  instructions: [51, 57)
 predecessors: B9
      51: gap () () 
          v59(R) = X64Movsd : MRI v17(R) #3
      52: gap () () 
          [constant:v58] = ArchNop
      53: gap () () 
          v52(R) = AVXFloat64Cmp && set if not equal v58(R) v59
      54: gap () () 
          [constant:v56] = ArchNop
      55: gap () () 
          X64Movq : Root #120 #0
      56: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:23] [rpo_immediate:22]
 successors: B23 B22
B22: AO#43 (deferred) (no frame)  instructions: [57, 62)
 predecessors: B21
      57: gap () () 
          v54(R) = ArchStackCheckOffset
      58: gap () () 
          [constant:v55] = ArchNop
      59: gap () () 
          X64Push #8 v54(-)
      60: gap () ([rbx|R|w64] = v55(-); [rax|R|w64] = v44(-); [rsi|R|t] = v56(-)) 
          [rax|R|t] = ArchCallCodeObject [immediate:8] #5 [immediate:9] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      61: gap () () 
          ArchJmp [rpo_immediate:24]
 successors: B24
B23: AO#44 (deferred) (no frame)  instructions: [62, 63)
 predecessors: B21
      62: gap () () 
          ArchJmp [rpo_immediate:24]
 successors: B24
B24: AO#45 (deferred) (no frame)  instructions: [63, 64)
 predecessors: B22 B23
      63: gap () () 
          X64Cmp32 && branch if not equal v52 #0 [rpo_immediate:26] [rpo_immediate:25]
 successors: B26 B25
B25: AO#46 (deferred) (no frame)  instructions: [64, 65)
 predecessors: B24
      64: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B26: AO#47 (deferred) (no frame)  instructions: [65, 66)
 predecessors: B24
      65: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B27: AO#8 (no frame)  instructions: [66, 69)
 predecessors: B8
      66: gap () () 
          [constant:v50] = ArchNop
      67: gap () () 
          X64Movq : Root #120 #0
      68: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:29] [rpo_immediate:28]
 successors: B29 B28
B28: AO#48 (deferred) (no frame)  instructions: [69, 74)
 predecessors: B27
      69: gap () () 
          v48(R) = ArchStackCheckOffset
      70: gap () () 
          [constant:v49] = ArchNop
      71: gap () () 
          X64Push #8 v48(-)
      72: gap () ([rbx|R|w64] = v49(-); [rax|R|w64] = v44(-); [rsi|R|t] = v50(-)) 
          [rax|R|t] = ArchCallCodeObject [immediate:6] #4 [immediate:7] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      73: gap () () 
          ArchJmp [rpo_immediate:30]
 successors: B30
B29: AO#9 (no frame)  instructions: [74, 75)
 predecessors: B27
      74: gap () () 
          ArchJmp [rpo_immediate:30]
 successors: B30
B30: AO#10 (no frame)  instructions: [75, 76)
 predecessors: B28 B29
      75: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B31: AO#11 (no frame)  instructions: [76, 78)
 predecessors: B5 B30 B26 B20 B14
      76: gap () () 
          [constant:v40] = ArchNop
      77: gap () (v21 = v40(-)) 
          ArchJmp [rpo_immediate:37]
 successors: B37
B32: AO#12 (no frame)  instructions: [78, 81)
 predecessors: B7
      78: gap () () 
          [constant:v45] = ArchNop
      79: gap () () 
          X64Movq : Root #120 #0
      80: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:34] [rpo_immediate:33]
 successors: B34 B33
B33: AO#49 (deferred) (no frame)  instructions: [81, 86)
 predecessors: B32
      81: gap () () 
          v42(R) = ArchStackCheckOffset
      82: gap () () 
          [constant:v43] = ArchNop
      83: gap () () 
          X64Push #8 v42(-)
      84: gap () ([rbx|R|w64] = v43(-); [rax|R|w64] = v44(-); [rsi|R|t] = v45(-)) 
          [rax|R|t] = ArchCallCodeObject [immediate:4] #3 [immediate:5] v16(S) v17(S) v18(S) v2(S) v19(S) v20(S) [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      85: gap () () 
          ArchJmp [rpo_immediate:35]
 successors: B35
B34: AO#13 (no frame)  instructions: [86, 87)
 predecessors: B32
      86: gap () () 
          ArchJmp [rpo_immediate:35]
 successors: B35
B35: AO#14 (no frame)  instructions: [87, 88)
 predecessors: B33 B34
      87: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B36: AO#15 (no frame)  instructions: [88, 90)
 predecessors: B6 B35 B25 B19
      88: gap () () 
          [constant:v39] = ArchNop
      89: gap () (v21 = v39(-)) 
          ArchJmp [rpo_immediate:37]
 successors: B37
B37: AO#16 (no frame)  instructions: [90, 91)
 predecessors: B36 B31
     phi: v21 = v39 v40
      90: gap () () 
          X64Test32 && branch if not equal v18 #1 [rpo_immediate:41] [rpo_immediate:38]
 successors: B41 B38
B38: AO#50 (deferred) (no frame)  instructions: [91, 92)
 predecessors: B37
      91: gap () () 
          X64Cmp32 && branch if equal v18 #0 [rpo_immediate:40] [rpo_immediate:39]
 successors: B40 B39
B39: AO#51 (deferred) (no frame)  instructions: [92, 93)
 predecessors: B38
      92: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B40: AO#52 (deferred) (no frame)  instructions: [93, 94)
 predecessors: B38
      93: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B41: AO#17 (no frame)  instructions: [94, 95)
 predecessors: B37
      94: gap () () 
          X64Cmp32 && branch if unsigned less than v18 #113 [rpo_immediate:54] [rpo_immediate:42]
 successors: B54 B42
B42: AO#18 (no frame)  instructions: [95, 96)
 predecessors: B41
      95: gap () () 
          X64Cmp32 && branch if equal v18 #113 [rpo_immediate:52] [rpo_immediate:43]
 successors: B52 B43
B43: AO#19 (no frame)  instructions: [96, 98)
 predecessors: B42
      96: gap () () 
          v37(R) = X64Movl : MRI v18(R) #-1
      97: gap () () 
          X64Cmp32 && branch if equal v37(R) #1301 [rpo_immediate:49] [rpo_immediate:44]
 successors: B49 B44
B44: AO#20 (no frame)  instructions: [98, 99)
 predecessors: B43
      98: gap () () 
          X64Cmp32 && branch if equal v37(R) #1341 [rpo_immediate:46] [rpo_immediate:45]
 successors: B46 B45
B45: AO#21 (no frame)  instructions: [99, 100)
 predecessors: B44
      99: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B46: AO#53 (deferred) (no frame)  instructions: [100, 101)
 predecessors: B44
     100: gap () () 
          X64Test32 : MRI && branch if not equal v18(R) #3 #-256 [rpo_immediate:48] [rpo_immediate:47]
 successors: B48 B47
B47: AO#54 (deferred) (no frame)  instructions: [101, 102)
 predecessors: B46
     101: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B48: AO#55 (deferred) (no frame)  instructions: [102, 103)
 predecessors: B46
     102: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B49: AO#56 (deferred) (no frame)  instructions: [103, 106)
 predecessors: B43
     103: gap () () 
          v36(R) = X64Movsd : MRI v18(R) #3
     104: gap () () 
          [constant:v35] = ArchNop
     105: gap () () 
          AVXFloat64Cmp && branch if not equal v35(R) v36 [rpo_immediate:51] [rpo_immediate:50]
 successors: B51 B50
B50: AO#57 (deferred) (no frame)  instructions: [106, 107)
 predecessors: B49
     106: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B51: AO#58 (deferred) (no frame)  instructions: [107, 108)
 predecessors: B49
     107: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B52: AO#22 (no frame)  instructions: [108, 109)
 predecessors: B42
     108: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B53: AO#23 (no frame)  instructions: [109, 111)
 predecessors: B39 B52 B51 B48 B45
     109: gap () () 
          [constant:v34] = ArchNop
     110: gap () ([rax|R|w64] = v34(-)) 
          ArchRet #0 [rax|R|w64]
 successors:
B54: AO#24 (no frame)  instructions: [111, 112)
 predecessors: B41
     111: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B55: AO#25 (no frame)  instructions: [112, 113)
 predecessors: B40 B54 B50 B47
     112: gap () () 
          X64Test32 && branch if not equal v21 #1 [rpo_immediate:57] [rpo_immediate:56]
 successors: B57 B56
B56: AO#26 (no frame)  instructions: [113, 116)
 predecessors: B55
     113: gap () (v33 = v21(-)) 
          v33(0) = ArchNop v33
     114: gap () (v30(R) = v33(-)) 
          v30(0) = X64Sar32 v30(R) #1
     115: gap () (v29 = v30(-)) 
          ArchJmp [rpo_immediate:58]
 successors: B58
B57: AO#59 (deferred) (no frame)  instructions: [116, 119)
 predecessors: B55
     116: gap () () 
          v32(R) = X64Movsd : MRI v21(R) #3
     117: gap () () 
          v31(R) = ArchTruncateDoubleToI v32(R)
     118: gap () (v29 = v31(-)) 
          ArchJmp [rpo_immediate:58]
 successors: B58
B58: AO#27 (no frame)  instructions: [119, 138)
 predecessors: B56 B57
     phi: v29 = v30 v31
     119: gap () () 
          v27(R) = X64Lea32 : MRI v29(R) #1074794496
     120: gap () () 
          X64Test32 && deoptimize if not equal v19 #1 #2 [immediate:3] v16(-) v17(-) v18(-) v2(-) v19(-) v20(S) v21(-)
     121: gap () (v28 = v19(-)) 
          v28(0) = ArchNop v28
     122: gap () (v26(R) = v28(-)) 
          v26(0) = X64Sar32 v26(R) #1
     123: gap () (v25(R) = v27(-)) 
          v25(0) = X64Shr32 v25(R) #8
     124: gap () (v23(R) = v26(-)) 
          v23(0) = X64And32 v23(R) #4095
     125: gap () () 
          v24(R) = X64Movzxwl v25
     126: gap () () 
          X64Test32 && deoptimize if equal v2 #1 #1 [immediate:2] v16(-) v17(-) v18(-) v2(-) v19(-) v20(S) v21(-)
     127: gap () () 
          v13(R) = X64Lea32 : MR1 v23(R) v24(R)
     128: gap () () 
          v22(R) = X64Movl : MRI v2(R) #-1
     129: gap () () 
          X64Cmp32 && deoptimize if unsigned greater than v22 #1061 #0 [immediate:1] v16(-) v17(-) v18(-) v2(-) v19(-) v20(S) v21(-)
     130: gap () () 
          v14(R) = X64Lea32 : MRI v13(R) #-4112
     131: gap () () 
          v12(R) = X64Movl : MRI v2(R) #7
     132: gap () () 
          v10(R) = X64Lea32 : MR1 v14(R) v12(R)
     133: gap () () 
          v11(R) = X64Lea32 : MRI v13(R) #-4097
     134: gap () () 
          v8(R) = X64Lea32 : MR1 v11(R) v12(R)
     135: gap () (v6(R) = v10(-)) 
          v6(2) = X64Cmp32 && select if signed less than v10 #0 v6(R) v9
     136: gap () (v5(R) = v8(-)) 
          v5(2) = X64Cmp32 && select if signed less than v8 #0 v5(R) v9
     137: gap () () 
          X64Cmp32 && branch if unsigned less than v6(R) v5 [rpo_immediate:60] [rpo_immediate:59]
 successors: B60 B59
B59: AO#60 (deferred) (no frame)  instructions: [138, 140)
 predecessors: B58
     138: gap () () 
          [constant:v7] = ArchNop
     139: gap () ([rax|R|t] = v7(-)) 
          ArchRet #0 [rax|R|t]
 successors:
B60: AO#28 (no frame)  instructions: [140, 144)
 predecessors: B58
     140: gap () () 
          v3(R) = X64Movsxlq v6
     141: gap () () 
          v4(R) = X64Movsxlq v5
     142: gap () ([rax|R|t] = v2(-); [rbx|R|w64] = v3(-); [rcx|R|w64] = v4(-)) 
          [rax|R|t] = ArchCallCodeObject [immediate:0] [rax|R|t] [rbx|R|w64] [rcx|R|w64] #255
     143: gap (v1(-) = [rax|R|t]) ([rax|R|t] = v1(-)) 
          ArchRet #0 [rax|R|t]
 successors:
----- Instruction sequence after register allocation -----
IMM#0: 0x24f7003b6d09 <Code BUILTIN StringSubstring>
IMM#1: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#2: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#3: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#4: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#5: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#6: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#7: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#8: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#9: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#10: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#11: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#12: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#13: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
IMM#14: 0x24f7003c657d <Code BUILTIN CEntry_Return1_ArgvOnStack_NoBuiltinExit>
IMM#15: 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)>
CST#0: v44 = 1
CST#1: v9 = 0
CST#2: v78 = 0x24f70100c9b5 <NativeContext[309]>
CST#3: v77 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#4: v70 = 0x24f70100c9b5 <NativeContext[309]>
CST#5: v69 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#6: v64 = 0x24f70100c9b5 <NativeContext[309]>
CST#7: v63 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#8: v58 = 0
CST#9: v56 = 0x24f70100c9b5 <NativeContext[309]>
CST#10: v55 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#11: v50 = 0x24f70100c9b5 <NativeContext[309]>
CST#12: v49 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#13: v40 = -1.07479e+09
CST#14: v45 = 0x24f70100c9b5 <NativeContext[309]>
CST#15: v43 = 0x557ae7d14e50 <StackGuardWithGap.entry>
CST#16: v39 = 0x24f700000011 <undefined>
CST#17: v35 = 0
CST#18: v34 = 0l
CST#19: v7 = 0x24f700000049 <String[0]: #>
B0: AO#0  instructions: [0, 9)
 predecessors:
       0: gap () () 
          [rsi|R|t] = ArchNop
       1: gap () () 
          [stack:-1|t] = ArchNop
       2: gap () () 
          [stack:-2|t] = ArchNop
       3: gap () () 
          [stack:-3|t] = ArchNop
       4: gap () () 
          [stack:-4|t] = ArchNop
       5: gap () () 
          [stack:-5|t] = ArchNop
       6: gap () () 
          [constant:v44] = ArchNop
       7: gap () () 
          [constant:v9] = ArchNop
       8: gap ([stack:5|t] = [rsi|R|t]; [rdx|R|t] = [stack:-2|t]) () 
          X64Test32 && branch if not equal [rdx|R|t] #1 [rpo_immediate:7] [rpo_immediate:1]
 successors: B7 B1
B1: AO#29 (deferred)  instructions: [9, 13)
 predecessors: B0
       9: gap () () 
          [rdi|R|w64] = X64Cmp32 && set if equal [rdx|R|t] #0
      10: gap () () 
          [constant:v78] = ArchNop
      11: gap () () 
          X64Movq : Root #120 #0
      12: gap ([stack:7|w64] = [rdi|R|w64]) () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:3] [rpo_immediate:2]
 successors: B3 B2
B2: AO#30 (deferred) (no frame)  instructions: [13, 18)
 predecessors: B1
      13: gap () () 
          [r8|R|w64] = ArchStackCheckOffset
      14: gap () () 
          [constant:v77] = ArchNop
      15: gap () () 
          X64Push #8 [r8|R|w64]
      16: gap ([rax|R|w64] = [constant:v44]; [rbx|R|w64] = [constant:v77]; [rsi|R|t] = [constant:v78]) () 
          [rax|R|t] = ArchCallCodeObject [immediate:14] #8 [immediate:15] [stack:-1|t] [stack:-2|t] [stack:-3|t] [stack:-4|t] [stack:-5|t] [stack:5|t] [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      17: gap ([rdx|R|t] = [stack:-2|t]; [rdi|R|w64] = [stack:7|w64]) () 
          ArchJmp [rpo_immediate:4]
 successors: B4
B3: AO#31 (deferred) (no frame)  instructions: [18, 19)
 predecessors: B1
      18: gap () () 
          ArchJmp [rpo_immediate:4]
 successors: B4
B4: AO#32 (deferred) (no frame)  instructions: [19, 20)
 predecessors: B2 B3
      19: gap () () 
          X64Cmp32 && branch if not equal [rdi|R|w64] #0 [rpo_immediate:6] [rpo_immediate:5]
 successors: B6 B5
B5: AO#33 (deferred) (no frame)  instructions: [20, 21)
 predecessors: B4
      20: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B6: AO#34 (deferred) (no frame)  instructions: [21, 22)
 predecessors: B4
      21: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B7: AO#1 (no frame)  instructions: [22, 23)
 predecessors: B0
      22: gap () () 
          X64Cmp32 && branch if unsigned less than [rdx|R|t] #113 [rpo_immediate:32] [rpo_immediate:8]
 successors: B32 B8
B8: AO#2 (no frame)  instructions: [23, 24)
 predecessors: B7
      23: gap () () 
          X64Cmp32 && branch if equal [rdx|R|t] #113 [rpo_immediate:27] [rpo_immediate:9]
 successors: B27 B9
B9: AO#3 (no frame)  instructions: [24, 26)
 predecessors: B8
      24: gap () () 
          [rdi|R|cp] = X64Movl : MRI [rdx|R|t] #-1
      25: gap () () 
          X64Cmp32 && branch if equal [rdi|R|cp] #1301 [rpo_immediate:21] [rpo_immediate:10]
 successors: B21 B10
B10: AO#4 (no frame)  instructions: [26, 27)
 predecessors: B9
      26: gap () () 
          X64Cmp32 && branch if equal [rdi|R|cp] #1341 [rpo_immediate:15] [rpo_immediate:11]
 successors: B15 B11
B11: AO#5 (no frame)  instructions: [27, 30)
 predecessors: B10
      27: gap () () 
          [constant:v70] = ArchNop
      28: gap () () 
          X64Movq : Root #120 #0
      29: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:13] [rpo_immediate:12]
 successors: B13 B12
B12: AO#35 (deferred) (no frame)  instructions: [30, 35)
 predecessors: B11
      30: gap () () 
          [rdi|R|w64] = ArchStackCheckOffset
      31: gap () () 
          [constant:v69] = ArchNop
      32: gap () () 
          X64Push #8 [rdi|R|w64]
      33: gap ([rbx|R|w64] = [constant:v69]; [rsi|R|t] = [constant:v70]; [rax|R|w64] = [constant:v44]) () 
          [rax|R|t] = ArchCallCodeObject [immediate:12] #7 [immediate:13] [stack:-1|t] [stack:-2|t] [stack:-3|t] [stack:-4|t] [stack:-5|t] [stack:5|t] [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      34: gap ([rdx|R|t] = [stack:-2|t]) () 
          ArchJmp [rpo_immediate:14]
 successors: B14
B13: AO#6 (no frame)  instructions: [35, 36)
 predecessors: B11
      35: gap () () 
          ArchJmp [rpo_immediate:14]
 successors: B14
B14: AO#7 (no frame)  instructions: [36, 37)
 predecessors: B12 B13
      36: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B15: AO#36 (deferred)  instructions: [37, 42)
 predecessors: B10
      37: gap () () 
          [rdi|R|w32] = X64Movl : MRI [rdx|R|t] #3
      38: gap () () 
          [rdi|R|w32] = X64And32 [rdi|R|w32] #-256
      39: gap () () 
          [constant:v64] = ArchNop
      40: gap () () 
          X64Movq : Root #120 #0
      41: gap ([stack:6|w32] = [rdi|R|w32]) () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:17] [rpo_immediate:16]
 successors: B17 B16
B16: AO#37 (deferred) (no frame)  instructions: [42, 47)
 predecessors: B15
      42: gap () () 
          [r8|R|w64] = ArchStackCheckOffset
      43: gap () () 
          [constant:v63] = ArchNop
      44: gap () () 
          X64Push #8 [r8|R|w64]
      45: gap ([rbx|R|w64] = [constant:v63]; [rsi|R|t] = [constant:v64]; [rax|R|w64] = [constant:v44]) () 
          [rax|R|t] = ArchCallCodeObject [immediate:10] #6 [immediate:11] [stack:-1|t] [stack:-2|t] [stack:-3|t] [stack:-4|t] [stack:-5|t] [stack:5|t] [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      46: gap ([rdx|R|t] = [stack:-2|t]; [rdi|R|w32] = [stack:6|w32]) () 
          ArchJmp [rpo_immediate:18]
 successors: B18
B17: AO#38 (deferred) (no frame)  instructions: [47, 48)
 predecessors: B15
      47: gap () () 
          ArchJmp [rpo_immediate:18]
 successors: B18
B18: AO#39 (deferred) (no frame)  instructions: [48, 49)
 predecessors: B16 B17
      48: gap () () 
          X64Cmp32 && branch if not equal [rdi|R|w32] #0 [rpo_immediate:20] [rpo_immediate:19]
 successors: B20 B19
B19: AO#40 (deferred) (no frame)  instructions: [49, 50)
 predecessors: B18
      49: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B20: AO#41 (deferred) (no frame)  instructions: [50, 51)
 predecessors: B18
      50: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B21: AO#42 (deferred)  instructions: [51, 57)
 predecessors: B9
      51: gap () () 
          [xmm0|R|f64] = X64Movsd : MRI [rdx|R|t] #3
      52: gap () () 
          [constant:v58] = ArchNop
      53: gap ([xmm1|R|f64] = [constant:v58]) () 
          [rdi|R|w64] = AVXFloat64Cmp && set if not equal [xmm1|R|f64] [xmm0|R|f64]
      54: gap () () 
          [constant:v56] = ArchNop
      55: gap () () 
          X64Movq : Root #120 #0
      56: gap ([stack:6|w64] = [rdi|R|w64]) () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:23] [rpo_immediate:22]
 successors: B23 B22
B22: AO#43 (deferred) (no frame)  instructions: [57, 62)
 predecessors: B21
      57: gap () () 
          [r8|R|w64] = ArchStackCheckOffset
      58: gap () () 
          [constant:v55] = ArchNop
      59: gap () () 
          X64Push #8 [r8|R|w64]
      60: gap ([rbx|R|w64] = [constant:v55]; [rsi|R|t] = [constant:v56]; [rax|R|w64] = [constant:v44]) () 
          [rax|R|t] = ArchCallCodeObject [immediate:8] #5 [immediate:9] [stack:-1|t] [stack:-2|t] [stack:-3|t] [stack:-4|t] [stack:-5|t] [stack:5|t] [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      61: gap ([rdx|R|t] = [stack:-2|t]; [rdi|R|w64] = [stack:6|w64]) () 
          ArchJmp [rpo_immediate:24]
 successors: B24
B23: AO#44 (deferred) (no frame)  instructions: [62, 63)
 predecessors: B21
      62: gap () () 
          ArchJmp [rpo_immediate:24]
 successors: B24
B24: AO#45 (deferred) (no frame)  instructions: [63, 64)
 predecessors: B22 B23
      63: gap () () 
          X64Cmp32 && branch if not equal [rdi|R|w64] #0 [rpo_immediate:26] [rpo_immediate:25]
 successors: B26 B25
B25: AO#46 (deferred) (no frame)  instructions: [64, 65)
 predecessors: B24
      64: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B26: AO#47 (deferred) (no frame)  instructions: [65, 66)
 predecessors: B24
      65: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B27: AO#8 (no frame)  instructions: [66, 69)
 predecessors: B8
      66: gap () () 
          [constant:v50] = ArchNop
      67: gap () () 
          X64Movq : Root #120 #0
      68: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:29] [rpo_immediate:28]
 successors: B29 B28
B28: AO#48 (deferred) (no frame)  instructions: [69, 74)
 predecessors: B27
      69: gap () () 
          [rdi|R|w64] = ArchStackCheckOffset
      70: gap () () 
          [constant:v49] = ArchNop
      71: gap () () 
          X64Push #8 [rdi|R|w64]
      72: gap ([rbx|R|w64] = [constant:v49]; [rsi|R|t] = [constant:v50]; [rax|R|w64] = [constant:v44]) () 
          [rax|R|t] = ArchCallCodeObject [immediate:6] #4 [immediate:7] [stack:-1|t] [stack:-2|t] [stack:-3|t] [stack:-4|t] [stack:-5|t] [stack:5|t] [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      73: gap ([rdx|R|t] = [stack:-2|t]) () 
          ArchJmp [rpo_immediate:30]
 successors: B30
B29: AO#9 (no frame)  instructions: [74, 75)
 predecessors: B27
      74: gap () () 
          ArchJmp [rpo_immediate:30]
 successors: B30
B30: AO#10 (no frame)  instructions: [75, 76)
 predecessors: B28 B29
      75: gap () () 
          ArchJmp [rpo_immediate:31]
 successors: B31
B31: AO#11 (no frame)  instructions: [76, 78)
 predecessors: B5 B30 B26 B20 B14
      76: gap () () 
          [constant:v40] = ArchNop
      77: gap ([rdi|R|t] = [constant:v40]) () 
          ArchJmp [rpo_immediate:37]
 successors: B37
B32: AO#12 (no frame)  instructions: [78, 81)
 predecessors: B7
      78: gap () () 
          [constant:v45] = ArchNop
      79: gap () () 
          X64Movq : Root #120 #0
      80: gap () () 
          ArchStackPointerGreaterThan : Root && branch if unsigned greater than #-96 [rpo_immediate:34] [rpo_immediate:33]
 successors: B34 B33
B33: AO#49 (deferred) (no frame)  instructions: [81, 86)
 predecessors: B32
      81: gap () () 
          [rdi|R|w64] = ArchStackCheckOffset
      82: gap () () 
          [constant:v43] = ArchNop
      83: gap () () 
          X64Push #8 [rdi|R|w64]
      84: gap ([rbx|R|w64] = [constant:v43]; [rsi|R|t] = [constant:v45]; [rax|R|w64] = [constant:v44]) () 
          [rax|R|t] = ArchCallCodeObject [immediate:4] #3 [immediate:5] [stack:-1|t] [stack:-2|t] [stack:-3|t] [stack:-4|t] [stack:-5|t] [stack:5|t] [rbx|R|w64] [rax|R|w64] [rsi|R|t] #7
      85: gap ([rdx|R|t] = [stack:-2|t]) () 
          ArchJmp [rpo_immediate:35]
 successors: B35
B34: AO#13 (no frame)  instructions: [86, 87)
 predecessors: B32
      86: gap () () 
          ArchJmp [rpo_immediate:35]
 successors: B35
B35: AO#14 (no frame)  instructions: [87, 88)
 predecessors: B33 B34
      87: gap () () 
          ArchJmp [rpo_immediate:36]
 successors: B36
B36: AO#15 (no frame)  instructions: [88, 90)
 predecessors: B6 B35 B25 B19
      88: gap () () 
          [constant:v39] = ArchNop
      89: gap ([rdi|R|t] = [constant:v39]) () 
          ArchJmp [rpo_immediate:37]
 successors: B37
B37: AO#16 (no frame)  instructions: [90, 91)
 predecessors: B36 B31
     phi: [rdi|R|t] = v39 v40
      90: gap ([r8|R|t] = [stack:-3|t]) () 
          X64Test32 && branch if not equal [r8|R|t] #1 [rpo_immediate:41] [rpo_immediate:38]
 successors: B41 B38
B38: AO#50 (deferred) (no frame)  instructions: [91, 92)
 predecessors: B37
      91: gap () () 
          X64Cmp32 && branch if equal [r8|R|t] #0 [rpo_immediate:40] [rpo_immediate:39]
 successors: B40 B39
B39: AO#51 (deferred) (no frame)  instructions: [92, 93)
 predecessors: B38
      92: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B40: AO#52 (deferred) (no frame)  instructions: [93, 94)
 predecessors: B38
      93: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B41: AO#17 (no frame)  instructions: [94, 95)
 predecessors: B37
      94: gap () () 
          X64Cmp32 && branch if unsigned less than [r8|R|t] #113 [rpo_immediate:54] [rpo_immediate:42]
 successors: B54 B42
B42: AO#18 (no frame)  instructions: [95, 96)
 predecessors: B41
      95: gap () () 
          X64Cmp32 && branch if equal [r8|R|t] #113 [rpo_immediate:52] [rpo_immediate:43]
 successors: B52 B43
B43: AO#19 (no frame)  instructions: [96, 98)
 predecessors: B42
      96: gap () () 
          [r9|R|cp] = X64Movl : MRI [r8|R|t] #-1
      97: gap () () 
          X64Cmp32 && branch if equal [r9|R|cp] #1301 [rpo_immediate:49] [rpo_immediate:44]
 successors: B49 B44
B44: AO#20 (no frame)  instructions: [98, 99)
 predecessors: B43
      98: gap () () 
          X64Cmp32 && branch if equal [r9|R|cp] #1341 [rpo_immediate:46] [rpo_immediate:45]
 successors: B46 B45
B45: AO#21 (no frame)  instructions: [99, 100)
 predecessors: B44
      99: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B46: AO#53 (deferred) (no frame)  instructions: [100, 101)
 predecessors: B44
     100: gap () () 
          X64Test32 : MRI && branch if not equal [r8|R|t] #3 #-256 [rpo_immediate:48] [rpo_immediate:47]
 successors: B48 B47
B47: AO#54 (deferred) (no frame)  instructions: [101, 102)
 predecessors: B46
     101: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B48: AO#55 (deferred) (no frame)  instructions: [102, 103)
 predecessors: B46
     102: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B49: AO#56 (deferred) (no frame)  instructions: [103, 106)
 predecessors: B43
     103: gap () () 
          [xmm0|R|f64] = X64Movsd : MRI [r8|R|t] #3
     104: gap () () 
          [constant:v35] = ArchNop
     105: gap ([xmm1|R|f64] = [constant:v35]) () 
          AVXFloat64Cmp && branch if not equal [xmm1|R|f64] [xmm0|R|f64] [rpo_immediate:51] [rpo_immediate:50]
 successors: B51 B50
B50: AO#57 (deferred) (no frame)  instructions: [106, 107)
 predecessors: B49
     106: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B51: AO#58 (deferred) (no frame)  instructions: [107, 108)
 predecessors: B49
     107: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B52: AO#22 (no frame)  instructions: [108, 109)
 predecessors: B42
     108: gap () () 
          ArchJmp [rpo_immediate:53]
 successors: B53
B53: AO#23 (no frame)  instructions: [109, 111)
 predecessors: B39 B52 B51 B48 B45
     109: gap () () 
          [constant:v34] = ArchNop
     110: gap ([rax|R|w64] = [constant:v34]) () 
          ArchRet #0 [rax|R|w64]
 successors:
B54: AO#24 (no frame)  instructions: [111, 112)
 predecessors: B41
     111: gap () () 
          ArchJmp [rpo_immediate:55]
 successors: B55
B55: AO#25 (no frame)  instructions: [112, 113)
 predecessors: B40 B54 B50 B47
     112: gap () () 
          X64Test32 && branch if not equal [rdi|R|t] #1 [rpo_immediate:57] [rpo_immediate:56]
 successors: B57 B56
B56: AO#26 (no frame)  instructions: [113, 116)
 predecessors: B55
     113: gap ([r9|R|w32] = [rdi|R|t]) () 
          [r9|R|w32] = ArchNop [r9|R|w32]
     114: gap () () 
          [r9|R|w32] = X64Sar32 [r9|R|w32] #1
     115: gap () () 
          ArchJmp [rpo_immediate:58]
 successors: B58
B57: AO#59 (deferred) (no frame)  instructions: [116, 119)
 predecessors: B55
     116: gap () () 
          [xmm0|R|f64] = X64Movsd : MRI [rdi|R|t] #3
     117: gap () () 
          [r9|R|w32] = ArchTruncateDoubleToI [xmm0|R|f64]
     118: gap () () 
          ArchJmp [rpo_immediate:58]
 successors: B58
B58: AO#27 (no frame)  instructions: [119, 138)
 predecessors: B56 B57
     phi: [r9|R|w32] = v30 v31
     119: gap () () 
          [r9|R|w32] = X64Lea32 : MRI [r9|R|w32] #1074794496
     120: gap ([r11|R|t] = [stack:-5|t]) () 
          X64Test32 && deoptimize if not equal [r11|R|t] #1 #2 [immediate:3] [stack:-1|t] [rdx|R|t] [r8|R|t] [stack:-4|t] [r11|R|t] [stack:5|t] [rdi|R|t]
     121: gap ([r12|R|w32] = [r11|R|t]) () 
          [r12|R|w32] = ArchNop [r12|R|w32]
     122: gap () () 
          [r12|R|w32] = X64Sar32 [r12|R|w32] #1
     123: gap () () 
          [r9|R|w32] = X64Shr32 [r9|R|w32] #8
     124: gap () () 
          [r12|R|w32] = X64And32 [r12|R|w32] #4095
     125: gap () () 
          [r9|R|w32] = X64Movzxwl [r9|R|w32]
     126: gap ([rax|R|t] = [stack:-4|t]) () 
          X64Test32 && deoptimize if equal [rax|R|t] #1 #1 [immediate:2] [stack:-1|t] [rdx|R|t] [r8|R|t] [rax|R|t] [r11|R|t] [stack:5|t] [rdi|R|t]
     127: gap () () 
          [r9|R|w32] = X64Lea32 : MR1 [r12|R|w32] [r9|R|w32]
     128: gap () () 
          [r12|R|cp] = X64Movl : MRI [rax|R|t] #-1
     129: gap () () 
          X64Cmp32 && deoptimize if unsigned greater than [r12|R|cp] #1061 #0 [immediate:1] [stack:-1|t] [rdx|R|t] [r8|R|t] [rax|R|t] [r11|R|t] [stack:5|t] [rdi|R|t]
     130: gap () () 
          [rdx|R|w32] = X64Lea32 : MRI [r9|R|w32] #-4112
     131: gap () () 
          [rdi|R|w32] = X64Movl : MRI [rax|R|t] #7
     132: gap () () 
          [rdx|R|w32] = X64Lea32 : MR1 [rdx|R|w32] [rdi|R|w32]
     133: gap () () 
          [r8|R|w32] = X64Lea32 : MRI [r9|R|w32] #-4097
     134: gap () () 
          [rdi|R|w32] = X64Lea32 : MR1 [r8|R|w32] [rdi|R|w32]
     135: gap ([r8|R|w64] = [constant:v9]; [r9|R|w32] = [rdx|R|w32]) () 
          [r9|R|w32] = X64Cmp32 && select if signed less than [rdx|R|w32] #0 [r9|R|w32] [r8|R|w64]
     136: gap ([rdx|R|w32] = [rdi|R|w32]) () 
          [rdx|R|w32] = X64Cmp32 && select if signed less than [rdi|R|w32] #0 [rdx|R|w32] [r8|R|w64]
     137: gap () () 
          X64Cmp32 && branch if unsigned less than [r9|R|w32] [rdx|R|w32] [rpo_immediate:60] [rpo_immediate:59]
 successors: B60 B59
B59: AO#60 (deferred) (no frame)  instructions: [138, 140)
 predecessors: B58
     138: gap () () 
          [constant:v7] = ArchNop
     139: gap ([rax|R|t] = [constant:v7]) () 
          ArchRet #0 [rax|R|t]
 successors:
B60: AO#28 (no frame)  instructions: [140, 144)
 predecessors: B58
     140: gap () () 
          [rbx|R|w64] = X64Movsxlq [r9|R|w32]
     141: gap () () 
          [rcx|R|w64] = X64Movsxlq [rdx|R|w32]
     142: gap () () 
          [rax|R|t] = ArchCallCodeObject [immediate:0] [rax|R|t] [rbx|R|w64] [rcx|R|w64] #255
     143: gap () () 
          ArchRet #0 [rax|R|t]
 successors:
---------------------------------------------------
Finished compiling method trigger using TurboFan
[completed compiling 0x24f70102661d <JSFunction trigger (sfi = 0x24f70102654d)> (target TURBOFAN_JS) - took 0.399, 123.914, 6.518 ms]
