Numerical Reproducibility in ML Systems

scikit-learn 1.9.1 l2-normalisation kernel, arm64 disassembly

Supporting file for the numerical reproducibility article · the whole function and the command that produced it

 scikit-learn 1.9.1, wheel cp312-cp312-macosx_12_0_arm64, extension sklearn/utils/sparsefuncs_fast.cpython-312-darwin.so
Function: ___pyx_fuse_1_1__pyx_pw_7sklearn_5utils_16sparsefuncs_fast_85_inplace_csr_row_normalize_l2
  (the float64 specialisation of _inplace_csr_row_normalize_l2; Cython source: for j in range(indptr[i], indptr[i+1]): sum_ += data[j] * data[j])
Command:  otool -tv sparsefuncs_fast.cpython-312-darwin.so   (macOS, 2026-10-11)
Whole function: 561 instructions; fmadd 1, fmul 0, fadd 0, fsqrt 1, fdiv 1.
Excerpt around the fused multiply-add (the accumulation loop), then the whole function below.
=== excerpt ===
000000000006244c	ldr	x10, [x27, x10]
0000000000062450	ldr	x11, [x27, x9]
0000000000062454	cmp	x11, x10
0000000000062458	b.ge	0x62438
000000000006245c	madd	x9, x26, x11, x25
0000000000062460	movi	d0, #0000000000000000
0000000000062464	mov	x12, x9
0000000000062468	mov	x13, x11
000000000006246c	ldr	d1, [x12]
0000000000062470	fmadd	d0, d1, d1, d0
0000000000062474	add	x13, x13, #0x1
0000000000062478	add	x12, x12, x26
000000000006247c	cmp	x10, x13
0000000000062480	b.ne	0x6246c
0000000000062484	fcmp	d0, #0.0
0000000000062488	b.eq	0x62438
000000000006248c	sub	x10, x10, x11
=== whole function ===
___pyx_fuse_1_1__pyx_pw_7sklearn_5utils_16sparsefuncs_fast_85_inplace_csr_row_normalize_l2:
0000000000062008	sub	sp, sp, #0x1d0
000000000006200c	stp	x28, x27, [sp, #0x170]
0000000000062010	stp	x26, x25, [sp, #0x180]
0000000000062014	stp	x24, x23, [sp, #0x190]
0000000000062018	stp	x22, x21, [sp, #0x1a0]
000000000006201c	stp	x20, x19, [sp, #0x1b0]
0000000000062020	stp	x29, x30, [sp, #0x1c0]
0000000000062024	add	x29, sp, #0x1c0
0000000000062028	mov	x21, x1
000000000006202c	adrp	x8, 22 ; 0x78000
0000000000062030	ldr	x8, [x8, #0xe0] ; literal pool symbol address: ___stack_chk_guard
0000000000062034	ldr	x8, [x8]
0000000000062038	stur	x8, [x29, #-0x60]
000000000006203c	movi.2d	v0, #0000000000000000
0000000000062040	stp	q0, q0, [x29, #-0x90]
0000000000062044	ldr	x19, [x1, #0x10]
0000000000062048	adrp	x8, 27 ; 0x7d000
000000000006204c	add	x8, x8, #0x7c8
0000000000062050	add	x9, x8, #0x418
0000000000062054	stp	x8, x9, [x29, #-0xb8]
0000000000062058	add	x9, x8, #0x18
000000000006205c	add	x8, x8, #0x20
0000000000062060	stur	x9, [x29, #-0xa8]
0000000000062064	stp	x8, xzr, [x29, #-0xa0]
0000000000062068	adrp	x24, 22 ; 0x78000
000000000006206c	ldr	x24, [x24, #0xd0] ; literal pool symbol address: __Py_NoneStruct
0000000000062070	cbz	x2, 0x621a8
0000000000062074	mov	x20, x2
0000000000062078	mov	x0, x2
000000000006207c	bl	0x72d98 ; symbol stub for: _PyDict_Size
0000000000062080	tbnz	x0, #0x3f, 0x62730
0000000000062084	mov	x6, x0
0000000000062088	cbz	x0, 0x621a8
000000000006208c	cmp	x19, #0x4
0000000000062090	b.hi	0x625cc
0000000000062094	adrp	x8, 17 ; 0x73000
0000000000062098	add	x8, x8, #0x93b
000000000006209c	adr	x9, #16
00000000000620a0	ldrb	w10, [x8, x19]
00000000000620a4	add	x9, x9, x10, lsl #2
00000000000620a8	br	x9
00000000000620ac	ldr	x8, [x21, #0x30]
00000000000620b0	ldr	w9, [x8]
00000000000620b4	adds	w9, w9, #0x1
00000000000620b8	b.hs	0x620c0
00000000000620bc	str	w9, [x8]
00000000000620c0	stur	x8, [x29, #-0x78]
00000000000620c4	ldr	x8, [x21, #0x28]
00000000000620c8	ldr	w9, [x8]
00000000000620cc	adds	w9, w9, #0x1
00000000000620d0	b.hs	0x620d8
00000000000620d4	str	w9, [x8]
00000000000620d8	stur	x8, [x29, #-0x80]
00000000000620dc	ldr	x8, [x21, #0x20]
00000000000620e0	ldr	w9, [x8]
00000000000620e4	adds	w9, w9, #0x1
00000000000620e8	b.hs	0x620f0
00000000000620ec	str	w9, [x8]
00000000000620f0	stur	x8, [x29, #-0x88]
00000000000620f4	ldr	x8, [x21, #0x18]
00000000000620f8	ldr	w9, [x8]
00000000000620fc	adds	w9, w9, #0x1
0000000000062100	b.hs	0x62108
0000000000062104	str	w9, [x8]
0000000000062108	stur	x8, [x29, #-0x90]
000000000006210c	ldr	x8, [x20, #0x8]
0000000000062110	ldrb	w8, [x8, #0xab]
0000000000062114	tbz	w8, #0x2, 0x626b8
0000000000062118	adrp	x8, 27 ; 0x7d000
000000000006211c	ldr	x8, [x8, #0x430]
0000000000062120	str	wzr, [sp]
0000000000062124	adrp	x7, 21 ; 0x77000
0000000000062128	add	x7, x7, #0xaaa ; literal pool for: "_inplace_csr_row_normalize_l2"
000000000006212c	sub	x2, x29, #0xb8
0000000000062130	sub	x4, x29, #0x90
0000000000062134	mov	x0, x20
0000000000062138	mov	x1, #0x0
000000000006213c	mov	x3, #0x0
0000000000062140	mov	x5, x19
0000000000062144	blr	x8
0000000000062148	tbnz	w0, #0x1f, 0x62730
000000000006214c	cmp	x19, #0x3
0000000000062150	b.hi	0x62204
0000000000062154	sub	x8, x29, #0x90
0000000000062158	ldr	x8, [x8, x19, lsl #3]
000000000006215c	cbz	x8, 0x626f0
0000000000062160	add	x9, x19, #0x1
0000000000062164	cmp	x9, #0x4
0000000000062168	b.eq	0x62204
000000000006216c	sub	x8, x29, #0x90
0000000000062170	add	x8, x8, x19, lsl #3
0000000000062174	ldr	x10, [x8, #0x8]
0000000000062178	cbz	x10, 0x626ec
000000000006217c	add	x9, x19, #0x2
0000000000062180	cmp	x9, #0x4
0000000000062184	b.eq	0x62204
0000000000062188	ldr	x10, [x8, #0x10]
000000000006218c	cbz	x10, 0x626ec
0000000000062190	add	x19, x19, #0x3
0000000000062194	cmp	x19, #0x4
0000000000062198	b.eq	0x62204
000000000006219c	ldr	x8, [x8, #0x18]
00000000000621a0	cbnz	x8, 0x62204
00000000000621a4	b	0x626f0
00000000000621a8	cmp	x19, #0x4
00000000000621ac	b.ne	0x625cc
00000000000621b0	ldr	x8, [x21, #0x18]
00000000000621b4	ldr	w9, [x8]
00000000000621b8	adds	w9, w9, #0x1
00000000000621bc	b.lo	0x62304
00000000000621c0	stur	x8, [x29, #-0x90]
00000000000621c4	ldr	x8, [x21, #0x20]
00000000000621c8	ldr	w9, [x8]
00000000000621cc	adds	w9, w9, #0x1
00000000000621d0	b.lo	0x6231c
00000000000621d4	stur	x8, [x29, #-0x88]
00000000000621d8	ldr	x8, [x21, #0x28]
00000000000621dc	ldr	w9, [x8]
00000000000621e0	adds	w9, w9, #0x1
00000000000621e4	b.lo	0x62334
00000000000621e8	stur	x8, [x29, #-0x80]
00000000000621ec	ldr	x8, [x21, #0x30]
00000000000621f0	ldr	w9, [x8]
00000000000621f4	adds	w9, w9, #0x1
00000000000621f8	b.hs	0x62200
00000000000621fc	str	w9, [x8]
0000000000062200	stur	x8, [x29, #-0x78]
0000000000062204	ldur	x7, [x29, #-0x90]
0000000000062208	movi.2d	v0, #0000000000000000
000000000006220c	stp	q0, q0, [sp, #0x30]
0000000000062210	stp	q0, q0, [sp, #0x50]
0000000000062214	stp	q0, q0, [sp, #0x70]
0000000000062218	stp	q0, q0, [sp, #0x90]
000000000006221c	stp	q0, q0, [sp, #0xb0]
0000000000062220	stp	q0, q0, [sp, #0xd0]
0000000000062224	mov	w8, #0x11
0000000000062228	stur	w8, [x29, #-0xbc]
000000000006222c	adrp	x21, 27 ; 0x7d000
0000000000062230	str	q0, [sp, #0xf0]
0000000000062234	cmp	x7, x24
0000000000062238	b.eq	0x62280
000000000006223c	ldr	x8, [x21, #0x448]
0000000000062240	adrp	x4, 22 ; 0x78000
0000000000062244	add	x4, x4, #0x440
0000000000062248	sub	x0, x29, #0xbc
000000000006224c	sub	x5, x29, #0x70
0000000000062250	add	x6, sp, #0x30
0000000000062254	mov	w1, #0x0
0000000000062258	mov	w2, #0x1d
000000000006225c	mov	w3, #0x1
0000000000062260	blr	x8
0000000000062264	cmn	w0, #0x1
0000000000062268	b.eq	0x62694
000000000006226c	ldr	x19, [sp, #0x30]
0000000000062270	cbz	x19, 0x626a0
0000000000062274	ldr	x25, [sp, #0x38]
0000000000062278	ldr	x26, [sp, #0x80]
000000000006227c	b	0x62290
0000000000062280	mov	x25, #0x0
0000000000062284	mov	x26, #0x0
0000000000062288	adrp	x19, 22 ; 0x78000
000000000006228c	ldr	x19, [x19, #0xd0] ; literal pool symbol address: __Py_NoneStruct
0000000000062290	ldp	x22, x7, [x29, #-0x88]
0000000000062294	movi.2d	v0, #0000000000000000
0000000000062298	stp	q0, q0, [sp, #0x30]
000000000006229c	stp	q0, q0, [sp, #0x50]
00000000000622a0	stp	q0, q0, [sp, #0x70]
00000000000622a4	stp	q0, q0, [sp, #0x90]
00000000000622a8	stp	q0, q0, [sp, #0xb0]
00000000000622ac	stp	q0, q0, [sp, #0xd0]
00000000000622b0	str	q0, [sp, #0xf0]
00000000000622b4	mov	w8, #0x11
00000000000622b8	stur	w8, [x29, #-0xbc]
00000000000622bc	cmp	x7, x24
00000000000622c0	b.eq	0x62350
00000000000622c4	ldr	x8, [x21, #0x448]
00000000000622c8	adrp	x4, 22 ; 0x78000
00000000000622cc	add	x4, x4, #0x370
00000000000622d0	sub	x0, x29, #0xbc
00000000000622d4	sub	x5, x29, #0x70
00000000000622d8	add	x6, sp, #0x30
00000000000622dc	mov	w1, #0x0
00000000000622e0	mov	w2, #0x1c
00000000000622e4	mov	w3, #0x1
00000000000622e8	blr	x8
00000000000622ec	cmn	w0, #0x1
00000000000622f0	b.eq	0x626ac
00000000000622f4	ldr	x20, [sp, #0x30]
00000000000622f8	cbnz	x20, 0x62358
00000000000622fc	mov	w21, #0x245
0000000000062300	b	0x6273c
0000000000062304	str	w9, [x8]
0000000000062308	stur	x8, [x29, #-0x90]
000000000006230c	ldr	x8, [x21, #0x20]
0000000000062310	ldr	w9, [x8]
0000000000062314	adds	w9, w9, #0x1
0000000000062318	b.hs	0x621d4
000000000006231c	str	w9, [x8]
0000000000062320	stur	x8, [x29, #-0x88]
0000000000062324	ldr	x8, [x21, #0x28]
0000000000062328	ldr	w9, [x8]
000000000006232c	adds	w9, w9, #0x1
0000000000062330	b.hs	0x621e8
0000000000062334	str	w9, [x8]
0000000000062338	stur	x8, [x29, #-0x80]
000000000006233c	ldr	x8, [x21, #0x30]
0000000000062340	ldr	w9, [x8]
0000000000062344	adds	w9, w9, #0x1
0000000000062348	b.lo	0x621fc
000000000006234c	b	0x62200
0000000000062350	adrp	x20, 22 ; 0x78000
0000000000062354	ldr	x20, [x20, #0xd0] ; literal pool symbol address: __Py_NoneStruct
0000000000062358	ldur	x7, [x29, #-0x78]
000000000006235c	movi.2d	v0, #0000000000000000
0000000000062360	stp	q0, q0, [sp, #0x30]
0000000000062364	stp	q0, q0, [sp, #0x50]
0000000000062368	stp	q0, q0, [sp, #0x70]
000000000006236c	stp	q0, q0, [sp, #0x90]
0000000000062370	stp	q0, q0, [sp, #0xb0]
0000000000062374	stp	q0, q0, [sp, #0xd0]
0000000000062378	str	q0, [sp, #0xf0]
000000000006237c	mov	w8, #0x11
0000000000062380	stur	w8, [x29, #-0xbc]
0000000000062384	cmp	x7, x24
0000000000062388	b.eq	0x623d0
000000000006238c	ldr	x8, [x21, #0x448]
0000000000062390	adrp	x4, 22 ; 0x78000
0000000000062394	add	x4, x4, #0x370
0000000000062398	sub	x0, x29, #0xbc
000000000006239c	sub	x5, x29, #0x70
00000000000623a0	add	x6, sp, #0x30
00000000000623a4	mov	w1, #0x0
00000000000623a8	mov	w2, #0x1c
00000000000623ac	mov	w3, #0x1
00000000000623b0	blr	x8
00000000000623b4	cmn	w0, #0x1
00000000000623b8	b.eq	0x625c4
00000000000623bc	ldr	x21, [sp, #0x30]
00000000000623c0	cbz	x21, 0x625c4
00000000000623c4	ldr	x27, [sp, #0x38]
00000000000623c8	ldr	x28, [sp, #0x80]
00000000000623cc	b	0x623e0
00000000000623d0	mov	x27, #0x0
00000000000623d4	mov	x28, #0x0
00000000000623d8	adrp	x21, 22 ; 0x78000
00000000000623dc	ldr	x21, [x21, #0xd0] ; literal pool symbol address: __Py_NoneStruct
00000000000623e0	mov	x0, x22
00000000000623e4	mov	x1, #0x0
00000000000623e8	bl	___Pyx_GetItemInt_Fast
00000000000623ec	mov	x23, x0
00000000000623f0	cbz	x0, 0x6261c
00000000000623f4	mov	x0, x23
00000000000623f8	bl	___Pyx_PyLong_As_unsigned_PY_LONG_LONG
00000000000623fc	mov	x22, x0
0000000000062400	cmn	x0, #0x1
0000000000062404	b.ne	0x62410
0000000000062408	bl	0x72de0 ; symbol stub for: _PyErr_Occurred
000000000006240c	cbnz	x0, 0x6261c
0000000000062410	ldr	x8, [x23]
0000000000062414	tbnz	w8, #0x1f, 0x6242c
0000000000062418	subs	x8, x8, #0x1
000000000006241c	str	x8, [x23]
0000000000062420	b.ne	0x6242c
0000000000062424	mov	x0, x23
0000000000062428	bl	0x7323c ; symbol stub for: __Py_Dealloc
000000000006242c	cbz	x22, 0x624b0
0000000000062430	mov	x8, #0x0
0000000000062434	b	0x62440
0000000000062438	cmp	x8, x22
000000000006243c	b.eq	0x624b0
0000000000062440	mul	x9, x8, x28
0000000000062444	add	x8, x8, #0x1
0000000000062448	mul	x10, x8, x28
000000000006244c	ldr	x10, [x27, x10]
0000000000062450	ldr	x11, [x27, x9]
0000000000062454	cmp	x11, x10
0000000000062458	b.ge	0x62438
000000000006245c	madd	x9, x26, x11, x25
0000000000062460	movi	d0, #0000000000000000
0000000000062464	mov	x12, x9
0000000000062468	mov	x13, x11
000000000006246c	ldr	d1, [x12]
0000000000062470	fmadd	d0, d1, d1, d0
0000000000062474	add	x13, x13, #0x1
0000000000062478	add	x12, x12, x26
000000000006247c	cmp	x10, x13
0000000000062480	b.ne	0x6246c
0000000000062484	fcmp	d0, #0.0
0000000000062488	b.eq	0x62438
000000000006248c	sub	x10, x10, x11
0000000000062490	fsqrt	d0, d0
0000000000062494	ldr	d1, [x9]
0000000000062498	fdiv	d1, d1, d0
000000000006249c	str	d1, [x9]
00000000000624a0	add	x9, x9, x26
00000000000624a4	subs	x10, x10, #0x1
00000000000624a8	b.ne	0x62494
00000000000624ac	b	0x62438
00000000000624b0	ldr	w8, [x24]
00000000000624b4	mov	x22, x24
00000000000624b8	adds	w8, w8, #0x1
00000000000624bc	b.hs	0x624c8
00000000000624c0	str	w8, [x24]
00000000000624c4	mov	x22, x24
00000000000624c8	ldur	x0, [x29, #-0x90]
00000000000624cc	cbz	x0, 0x624e8
00000000000624d0	ldr	x8, [x0]
00000000000624d4	tbnz	w8, #0x1f, 0x624e8
00000000000624d8	subs	x8, x8, #0x1
00000000000624dc	str	x8, [x0]
00000000000624e0	b.ne	0x624e8
00000000000624e4	bl	0x7323c ; symbol stub for: __Py_Dealloc
00000000000624e8	ldur	x0, [x29, #-0x88]
00000000000624ec	cbz	x0, 0x62508
00000000000624f0	ldr	x8, [x0]
00000000000624f4	tbnz	w8, #0x1f, 0x62508
00000000000624f8	subs	x8, x8, #0x1
00000000000624fc	str	x8, [x0]
0000000000062500	b.ne	0x62508
0000000000062504	bl	0x7323c ; symbol stub for: __Py_Dealloc
0000000000062508	ldur	x0, [x29, #-0x80]
000000000006250c	cbz	x0, 0x62528
0000000000062510	ldr	x8, [x0]
0000000000062514	tbnz	w8, #0x1f, 0x62528
0000000000062518	subs	x8, x8, #0x1
000000000006251c	str	x8, [x0]
0000000000062520	b.ne	0x62528
0000000000062524	bl	0x7323c ; symbol stub for: __Py_Dealloc
0000000000062528	ldur	x0, [x29, #-0x78]
000000000006252c	cbz	x0, 0x62548
0000000000062530	ldr	x8, [x0]
0000000000062534	tbnz	w8, #0x1f, 0x62548
0000000000062538	subs	x8, x8, #0x1
000000000006253c	str	x8, [x0]
0000000000062540	b.ne	0x62548
0000000000062544	bl	0x7323c ; symbol stub for: __Py_Dealloc
0000000000062548	cmp	x19, x24
000000000006254c	b.eq	0x62564
0000000000062550	add	x8, x19, #0x38
0000000000062554	mov	w9, #-0x1
0000000000062558	ldaddal	w9, w8, [x8]
000000000006255c	subs	w8, w8, #0x1
0000000000062560	b.le	0x6264c
0000000000062564	cbz	x20, 0x62584
0000000000062568	cmp	x20, x24
000000000006256c	b.eq	0x62584
0000000000062570	add	x8, x20, #0x38
0000000000062574	mov	w9, #-0x1
0000000000062578	ldaddal	w9, w8, [x8]
000000000006257c	subs	w8, w8, #0x1
0000000000062580	b.le	0x62670
0000000000062584	cmp	x21, x24
0000000000062588	b.eq	0x62818
000000000006258c	add	x8, x21, #0x38
0000000000062590	mov	w9, #-0x1
0000000000062594	ldaddal	w9, w8, [x8]
0000000000062598	subs	w8, w8, #0x1
000000000006259c	b.gt	0x62818
00000000000625a0	b.ne	0x628a0
00000000000625a4	ldr	x8, [x21]
00000000000625a8	tbnz	w8, #0x1f, 0x62818
00000000000625ac	subs	x8, x8, #0x1
00000000000625b0	str	x8, [x21]
00000000000625b4	b.ne	0x62818
00000000000625b8	mov	x0, x21
00000000000625bc	bl	0x7323c ; symbol stub for: __Py_Dealloc
00000000000625c0	b	0x62818
00000000000625c4	mov	w21, #0x246
00000000000625c8	b	0x6273c
00000000000625cc	adrp	x8, 22 ; 0x78000
00000000000625d0	ldr	x8, [x8, #0x70] ; literal pool symbol address: _PyExc_TypeError
00000000000625d4	ldr	x0, [x8]
00000000000625d8	adrp	x8, 20 ; 0x76000
00000000000625dc	add	x8, x8, #0xec3 ; literal pool for: "s"
00000000000625e0	mov	w10, #0x4
00000000000625e4	stp	x8, x19, [sp, #0x18]
00000000000625e8	adrp	x8, 20 ; 0x76000
00000000000625ec	add	x8, x8, #0xe7f ; literal pool for: "exactly"
00000000000625f0	adrp	x9, 21 ; 0x77000
00000000000625f4	add	x9, x9, #0xaaa ; literal pool for: "_inplace_csr_row_normalize_l2"
00000000000625f8	stp	x8, x10, [sp, #0x8]
00000000000625fc	str	x9, [sp]
0000000000062600	adrp	x1, 20 ; 0x76000
0000000000062604	add	x1, x1, #0xe87 ; literal pool for: "%.200s() takes %.8s %zd positional argument%.1s (%zd given)"
0000000000062608	bl	0x72dbc ; symbol stub for: _PyErr_Format
000000000006260c	mov	x20, #0x0
0000000000062610	mov	x19, #0x0
0000000000062614	mov	w21, #0x242
0000000000062618	b	0x6275c
000000000006261c	mov	x0, x23
0000000000062620	bl	_Py_XDECREF
0000000000062624	adrp	x0, 21 ; 0x77000
0000000000062628	add	x0, x0, #0xac8 ; literal pool for: "sklearn.utils.sparsefuncs_fast._inplace_csr_row_normalize_l2"
000000000006262c	adrp	x2, 20 ; 0x76000
0000000000062630	add	x2, x2, #0x555 ; literal pool for: "sklearn/utils/sparsefuncs_fast.pyx"
0000000000062634	mov	w1, #0x249
0000000000062638	bl	___Pyx_AddTraceback
000000000006263c	mov	x22, #0x0
0000000000062640	ldur	x0, [x29, #-0x90]
0000000000062644	cbnz	x0, 0x624d0
0000000000062648	b	0x624e8
000000000006264c	b.ne	0x628a8
0000000000062650	ldr	x8, [x19]
0000000000062654	tbnz	w8, #0x1f, 0x62564
0000000000062658	subs	x8, x8, #0x1
000000000006265c	str	x8, [x19]
0000000000062660	b.ne	0x62564
0000000000062664	mov	x0, x19
0000000000062668	bl	0x7323c ; symbol stub for: __Py_Dealloc
000000000006266c	b	0x62564
0000000000062670	b.ne	0x628b0
0000000000062674	ldr	x8, [x20]
0000000000062678	tbnz	w8, #0x1f, 0x62584
000000000006267c	subs	x8, x8, #0x1
0000000000062680	str	x8, [x20]
0000000000062684	b.ne	0x62584
0000000000062688	mov	x0, x20
000000000006268c	bl	0x7323c ; symbol stub for: __Py_Dealloc
0000000000062690	b	0x62584
0000000000062694	mov	x20, #0x0
0000000000062698	mov	x19, #0x0
000000000006269c	b	0x626a4
00000000000626a0	mov	x20, #0x0
00000000000626a4	mov	w21, #0x243
00000000000626a8	b	0x6273c
00000000000626ac	mov	x20, #0x0
00000000000626b0	mov	w21, #0x245
00000000000626b4	b	0x6273c
00000000000626b8	adrp	x8, 27 ; 0x7d000
00000000000626bc	ldr	x8, [x8, #0x438]
00000000000626c0	adrp	x5, 21 ; 0x77000
00000000000626c4	add	x5, x5, #0xaaa ; literal pool for: "_inplace_csr_row_normalize_l2"
00000000000626c8	sub	x1, x29, #0xb8
00000000000626cc	sub	x2, x29, #0x90
00000000000626d0	mov	x0, x20
00000000000626d4	mov	x3, x19
00000000000626d8	mov	x4, x6
00000000000626dc	mov	w6, #0x0
00000000000626e0	blr	x8
00000000000626e4	tbz	w0, #0x1f, 0x6214c
00000000000626e8	b	0x62730
00000000000626ec	mov	x19, x9
00000000000626f0	adrp	x8, 22 ; 0x78000
00000000000626f4	ldr	x8, [x8, #0x70] ; literal pool symbol address: _PyExc_TypeError
00000000000626f8	ldr	x0, [x8]
00000000000626fc	adrp	x8, 20 ; 0x76000
0000000000062700	add	x8, x8, #0xec3 ; literal pool for: "s"
0000000000062704	mov	w10, #0x4
0000000000062708	stp	x8, x19, [sp, #0x18]
000000000006270c	adrp	x8, 20 ; 0x76000
0000000000062710	add	x8, x8, #0xe7f ; literal pool for: "exactly"
0000000000062714	adrp	x9, 21 ; 0x77000
0000000000062718	add	x9, x9, #0xaaa ; literal pool for: "_inplace_csr_row_normalize_l2"
000000000006271c	stp	x8, x10, [sp, #0x8]
0000000000062720	str	x9, [sp]
0000000000062724	adrp	x1, 20 ; 0x76000
0000000000062728	add	x1, x1, #0xe87 ; literal pool for: "%.200s() takes %.8s %zd positional argument%.1s (%zd given)"
000000000006272c	bl	0x72dbc ; symbol stub for: _PyErr_Format
0000000000062730	mov	x20, #0x0
0000000000062734	mov	x19, #0x0
0000000000062738	mov	w21, #0x242
000000000006273c	ldur	x0, [x29, #-0x90]
0000000000062740	cbz	x0, 0x6275c
0000000000062744	ldr	x8, [x0]
0000000000062748	tbnz	w8, #0x1f, 0x6275c
000000000006274c	subs	x8, x8, #0x1
0000000000062750	str	x8, [x0]
0000000000062754	b.ne	0x6275c
0000000000062758	bl	0x7323c ; symbol stub for: __Py_Dealloc
000000000006275c	ldur	x0, [x29, #-0x88]
0000000000062760	cbz	x0, 0x6277c
0000000000062764	ldr	x8, [x0]
0000000000062768	tbnz	w8, #0x1f, 0x6277c
000000000006276c	subs	x8, x8, #0x1
0000000000062770	str	x8, [x0]
0000000000062774	b.ne	0x6277c
0000000000062778	bl	0x7323c ; symbol stub for: __Py_Dealloc
000000000006277c	ldur	x0, [x29, #-0x80]
0000000000062780	cbz	x0, 0x6279c
0000000000062784	ldr	x8, [x0]
0000000000062788	tbnz	w8, #0x1f, 0x6279c
000000000006278c	subs	x8, x8, #0x1
0000000000062790	str	x8, [x0]
0000000000062794	b.ne	0x6279c
0000000000062798	bl	0x7323c ; symbol stub for: __Py_Dealloc
000000000006279c	ldur	x0, [x29, #-0x78]
00000000000627a0	cbz	x0, 0x627bc
00000000000627a4	ldr	x8, [x0]
00000000000627a8	tbnz	w8, #0x1f, 0x627bc
00000000000627ac	subs	x8, x8, #0x1
00000000000627b0	str	x8, [x0]
00000000000627b4	b.ne	0x627bc
00000000000627b8	bl	0x7323c ; symbol stub for: __Py_Dealloc
00000000000627bc	cbz	x19, 0x627dc
00000000000627c0	cmp	x19, x24
00000000000627c4	b.eq	0x627dc
00000000000627c8	add	x8, x19, #0x38
00000000000627cc	mov	w9, #-0x1
00000000000627d0	ldaddal	w9, w8, [x8]
00000000000627d4	subs	w8, w8, #0x1
00000000000627d8	b.le	0x62854
00000000000627dc	cbz	x20, 0x627fc
00000000000627e0	cmp	x20, x24
00000000000627e4	b.eq	0x627fc
00000000000627e8	add	x8, x20, #0x38
00000000000627ec	mov	w9, #-0x1
00000000000627f0	ldaddal	w9, w8, [x8]
00000000000627f4	subs	w8, w8, #0x1
00000000000627f8	b.le	0x62878
00000000000627fc	adrp	x0, 21 ; 0x77000
0000000000062800	add	x0, x0, #0xac8 ; literal pool for: "sklearn.utils.sparsefuncs_fast._inplace_csr_row_normalize_l2"
0000000000062804	adrp	x2, 20 ; 0x76000
0000000000062808	add	x2, x2, #0x555 ; literal pool for: "sklearn/utils/sparsefuncs_fast.pyx"
000000000006280c	mov	x1, x21
0000000000062810	bl	___Pyx_AddTraceback
0000000000062814	mov	x22, #0x0
0000000000062818	ldur	x8, [x29, #-0x60]
000000000006281c	adrp	x9, 22 ; 0x78000
0000000000062820	ldr	x9, [x9, #0xe0] ; literal pool symbol address: ___stack_chk_guard
0000000000062824	ldr	x9, [x9]
0000000000062828	cmp	x9, x8
000000000006282c	b.ne	0x6289c
0000000000062830	mov	x0, x22
0000000000062834	ldp	x29, x30, [sp, #0x1c0]
0000000000062838	ldp	x20, x19, [sp, #0x1b0]
000000000006283c	ldp	x22, x21, [sp, #0x1a0]
0000000000062840	ldp	x24, x23, [sp, #0x190]
0000000000062844	ldp	x26, x25, [sp, #0x180]
0000000000062848	ldp	x28, x27, [sp, #0x170]
000000000006284c	add	sp, sp, #0x1d0
0000000000062850	ret
0000000000062854	b.ne	0x628b8
0000000000062858	ldr	x8, [x19]
000000000006285c	tbnz	w8, #0x1f, 0x627dc
0000000000062860	subs	x8, x8, #0x1
0000000000062864	str	x8, [x19]
0000000000062868	b.ne	0x627dc
000000000006286c	mov	x0, x19
0000000000062870	bl	0x7323c ; symbol stub for: __Py_Dealloc
0000000000062874	b	0x627dc
0000000000062878	b.ne	0x628c0
000000000006287c	ldr	x8, [x20]
0000000000062880	tbnz	w8, #0x1f, 0x627fc
0000000000062884	subs	x8, x8, #0x1
0000000000062888	str	x8, [x20]
000000000006288c	b.ne	0x627fc
0000000000062890	mov	x0, x20
0000000000062894	bl	0x7323c ; symbol stub for: __Py_Dealloc
0000000000062898	b	0x627fc
000000000006289c	bl	0x73254 ; symbol stub for: ___stack_chk_fail
00000000000628a0	mov	w9, #0x7a88
00000000000628a4	b	0x628c4
00000000000628a8	mov	w9, #0x7a86
00000000000628ac	b	0x628c4
00000000000628b0	mov	w9, #0x7a87
00000000000628b4	b	0x628c4
00000000000628b8	mov	w9, #0x7a79
00000000000628bc	b	0x628c4
00000000000628c0	mov	w9, #0x7a7a
00000000000628c4	stp	x8, x9, [sp]
00000000000628c8	bl	___pyx_fatalerror