62a548: 47fff9bf bnez $t1, -8(0x7ffff8) # 62a540 ; } return (s - src - 1); /* count does not include NUL */ 62a54c: 00119584 sub.d $a0, $t0, $a1 } 62a550: 02fffc84 addi.d $a0, $a0, -1(0xfff) 62a554: 4c000020 jirl $zero, $ra, 0 000000000062a558 : /* * Aligned memory access is significantly faster. * Process leading bytes so that the loop below starts with a pointer aligned to eight bytes. */ if (!PointerIsAligned(p, uint16) && 62a558: 034004ae andi $t2, $a1, 0x1 { 62a55c: 0015008d move $t1, $a0 const unsigned char *pend = p + len; 62a560: 001098a6 add.d $a2, $a1, $a2 if (!PointerIsAligned(p, uint16) && 62a564: 001500ac move $t0, $a1 62a568: 40000dc0 beqz $t2, 12(0xc) # 62a574 p + 1 <= pend) 62a56c: 02c004ae addi.d $t2, $a1, 1(0x1) if (!PointerIsAligned(p, uint16) && 62a570: 6c00ecce bgeu $a2, $t2, 236(0xec) # 62a65c { crc = __builtin_loongarch_crcc_w_b_w(*p, crc); p += 1; } if (!PointerIsAligned(p, uint32) && 62a574: 03400d8e andi $t2, $t0, 0x3 62a578: 40000dc0 beqz $t2, 12(0xc) # 62a584 p + 2 <= pend) 62a57c: 02c008ae addi.d $t2, $a1, 2(0x2) if (!PointerIsAligned(p, uint32) && 62a580: 6c00c4ce bgeu $a2, $t2, 196(0xc4) # 62a644 { crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc); p += 2; } if (!PointerIsAligned(p, uint64) && 62a584: 03401d8c andi $t0, $t0, 0x7 62a588: 40001d80 beqz $t0, 28(0x1c) # 62a5a4 p + 4 <= pend) 62a58c: 02c010ac addi.d $t0, $a1, 4(0x4) if (!PointerIsAligned(p, uint64) && 62a590: 6800a4cc bltu $a2, $t0, 164(0xa4) # 62a634 { crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc); 62a594: 240000ae ldptr.w $t2, $a1, 0 p += 4; 62a598: 00150185 move $a1, $t0 crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc); 62a59c: 002735cc crcc.w.w.w $t0, $t2, $t1 62a5a0: 0040818d slli.w $t1, $t0, 0x0 } /* Process eight bytes at a time, as far as we can. */ while (p + 8 <= pend) 62a5a4: 02c020ae addi.d $t2, $a1, 8(0x8) 62a5a8: 6800ccce bltu $a2, $t2, 204(0xcc) # 62a674 p += 4; 62a5ac: 001501cc move $t0, $t2 { crc = __builtin_loongarch_crcc_w_d_w(*(uint64 *) p, crc); 62a5b0: 260000a4 ldptr.d $a0, $a1, 0 62a5b4: 00150185 move $a1, $t0 while (p + 8 <= pend) 62a5b8: 02c0218c addi.d $t0, $t0, 8(0x8) crc = __builtin_loongarch_crcc_w_d_w(*(uint64 *) p, crc); 62a5bc: 0027b484 crcc.w.d.w $a0, $a0, $t1 62a5c0: 0040808d slli.w $t1, $a0, 0x0 while (p + 8 <= pend) 62a5c4: 6fffeccc bgeu $a2, $t0, -20(0x3ffec) # 62a5b0 62a5c8: 0011b8c5 sub.d $a1, $a2, $t2 62a5cc: 00450ca5 srli.d $a1, $a1, 0x3 62a5d0: 02c004cc addi.d $t0, $a2, 1(0x1) 62a5d4: 02c005cf addi.d $t3, $t2, 1(0x1) 62a5d8: 00410ca5 slli.d $a1, $a1, 0x3 62a5dc: 0012bd8c sltu $t0, $t0, $t3 62a5e0: 0013b0a5 masknez $a1, $a1, $t0 62a5e4: 001095c5 add.d $a1, $t2, $a1 62a5e8: 001501a4 move $a0, $t1 p += 8; } /* Process remaining 0-7 bytes. */ if (p + 4 <= pend) 62a5ec: 02c010ac addi.d $t0, $a1, 4(0x4) 62a5f0: 680014cc bltu $a2, $t0, 20(0x14) # 62a604 { crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc); 62a5f4: 240000a4 ldptr.w $a0, $a1, 0 p += 4; 62a5f8: 00150185 move $a1, $t0 crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc); 62a5fc: 00273484 crcc.w.w.w $a0, $a0, $t1 62a600: 00408084 slli.w $a0, $a0, 0x0 } if (p + 2 <= pend) 62a604: 02c008ac addi.d $t0, $a1, 2(0x2) 62a608: 680014cc bltu $a2, $t0, 20(0x14) # 62a61c { crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc); 62a60c: 2a4000ad ld.hu $t1, $a1, 0 p += 2; 62a610: 00150185 move $a1, $t0 crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc); 62a614: 002691a4 crcc.w.h.w $a0, $t1, $a0 62a618: 00408084 slli.w $a0, $a0, 0x0 } if (p < pend) 62a61c: 6c0014a6 bgeu $a1, $a2, 20(0x14) # 62a630 { crc = __builtin_loongarch_crcc_w_b_w(*p, crc); 62a620: 2a0000ac ld.bu $t0, $a1, 0 62a624: 00261184 crcc.w.b.w $a0, $t0, $a0 62a628: 00408084 slli.w $a0, $a0, 0x0 } return crc; 62a62c: 4c000020 jirl $zero, $ra, 0 } 62a630: 4c000020 jirl $zero, $ra, 0 while (p + 8 <= pend) 62a634: 02c020ae addi.d $t2, $a1, 8(0x8) 62a638: 001501a4 move $a0, $t1 62a63c: 6fff70ce bgeu $a2, $t2, -144(0x3ff70) # 62a5ac 62a640: 53ffc7ff b -60(0xfffffc4) # 62a604 crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc); 62a644: 2a4000af ld.hu $t3, $a1, 0 p += 2; 62a648: 001501cc move $t0, $t2 if (!PointerIsAligned(p, uint64) && 62a64c: 001501c5 move $a1, $t2 crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc); 62a650: 0026b5ed crcc.w.h.w $t1, $t3, $t1 62a654: 004081ad slli.w $t1, $t1, 0x0 p += 2; 62a658: 53ff2fff b -212(0xfffff2c) # 62a584 crc = __builtin_loongarch_crcc_w_b_w(*p, crc); 62a65c: 2a0000af ld.bu $t3, $a1, 0 p += 1; 62a660: 001501cc move $t0, $t2 if (!PointerIsAligned(p, uint32) && 62a664: 001501c5 move $a1, $t2 crc = __builtin_loongarch_crcc_w_b_w(*p, crc); 62a668: 002611ed crcc.w.b.w $t1, $t3, $a0 62a66c: 004081ad slli.w $t1, $t1, 0x0 p += 1; 62a670: 53ff07ff b -252(0xfffff04) # 62a574 while (p + 8 <= pend) 62a674: 001501a4 move $a0, $t1 62a678: 53ff77ff b -140(0xfffff74) # 62a5ec 000000000062a67c : void * bsearch_arg(const void *key, const void *base0,