1 TEXT strcat(SB),$0 2 3 MOVL $0, AX 4 MOVQ $-1, CX 5 CLD 6 7/* 8 * find length of second string 9 */ 10 11 MOVQ p2+8(FP), DI 12 REPN; SCASB 13 14 MOVQ DI, BX 15 SUBQ p2+8(FP), BX 16 17/* 18 * find end of first string 19 */ 20 21 MOVQ RARG, DI 22 REPN; SCASB 23 24/* 25 * copy the memory 26 */ 27 SUBQ $1, DI 28 MOVQ p2+8(FP), SI 29/* 30 * copy whole longs, if aligned 31 */ 32 MOVQ DI, CX 33 ORQ SI, CX 34 ANDL $3, CX 35 JNE c3 36 MOVQ BX, CX 37 SHRQ $2, CX 38 REP; MOVSL 39/* 40 * copy the rest, by bytes 41 */ 42 ANDL $3, BX 43c3: 44 MOVQ BX, CX 45 REP; MOVSB 46 47 MOVQ RARG, AX 48 RET 49