#include "../../../cmd/ld/textflag.h"
TEXT ·mulWW(SB),NOSPLIT,$0
MOVL x+0(FP), AX
MULL y+4(FP)
MOVL DX, z1+8(FP)
MOVL AX, z0+12(FP)
RET
TEXT ·divWW(SB),NOSPLIT,$0
MOVL x1+0(FP), DX
MOVL x0+4(FP), AX
DIVL y+8(FP)
MOVL AX, q+12(FP)
MOVL DX, r+16(FP)
RET
TEXT ·addVV(SB),NOSPLIT,$0
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL y+24(FP), CX
MOVL z_len+4(FP), BP
MOVL $0, BX
MOVL $0, DX
JMP E1
L1: MOVL (SI)(BX*4), AX
RCRL $1, DX
ADCL (CX)(BX*4), AX
RCLL $1, DX
MOVL AX, (DI)(BX*4)
ADDL $1, BX
E1: CMPL BX, BP
JL L1
MOVL DX, c+36(FP)
RET
TEXT ·subVV(SB),NOSPLIT,$0
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL y+24(FP), CX
MOVL z_len+4(FP), BP
MOVL $0, BX
MOVL $0, DX
JMP E2
L2: MOVL (SI)(BX*4), AX
RCRL $1, DX
SBBL (CX)(BX*4), AX
RCLL $1, DX
MOVL AX, (DI)(BX*4)
ADDL $1, BX
E2: CMPL BX, BP
JL L2
MOVL DX, c+36(FP)
RET
TEXT ·addVW(SB),NOSPLIT,$0
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL y+24(FP), AX
MOVL z_len+4(FP), BP
MOVL $0, BX
JMP E3
L3: ADDL (SI)(BX*4), AX
MOVL AX, (DI)(BX*4)
RCLL $1, AX
ANDL $1, AX
ADDL $1, BX
E3: CMPL BX, BP
JL L3
MOVL AX, c+28(FP)
RET
TEXT ·subVW(SB),NOSPLIT,$0
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL y+24(FP), AX
MOVL z_len+4(FP), BP
MOVL $0, BX
JMP E4
L4: MOVL (SI)(BX*4), DX
SUBL AX, DX
MOVL DX, (DI)(BX*4)
RCLL $1, AX
ANDL $1, AX
ADDL $1, BX
E4: CMPL BX, BP
JL L4
MOVL AX, c+28(FP)
RET
TEXT ·shlVU(SB),NOSPLIT,$0
MOVL z_len+4(FP), BX
SUBL $1, BX
JL X8b
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL s+24(FP), CX
MOVL (SI)(BX*4), AX
MOVL $0, DX
SHLL CX, DX:AX
MOVL DX, c+28(FP)
CMPL BX, $0
JLE X8a
L8: MOVL AX, DX
MOVL -4(SI)(BX*4), AX
SHLL CX, DX:AX
MOVL DX, (DI)(BX*4)
SUBL $1, BX
JG L8
X8a: SHLL CX, AX
MOVL AX, (DI)
RET
X8b: MOVL $0, c+28(FP)
RET
TEXT ·shrVU(SB),NOSPLIT,$0
MOVL z_len+4(FP), BP
SUBL $1, BP
JL X9b
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL s+24(FP), CX
MOVL (SI), AX
MOVL $0, DX
SHRL CX, DX:AX
MOVL DX, c+28(FP)
MOVL $0, BX
JMP E9
L9: MOVL AX, DX
MOVL 4(SI)(BX*4), AX
SHRL CX, DX:AX
MOVL DX, (DI)(BX*4)
ADDL $1, BX
E9: CMPL BX, BP
JL L9
X9a: SHRL CX, AX
MOVL AX, (DI)(BP*4)
RET
X9b: MOVL $0, c+28(FP)
RET
TEXT ·mulAddVWW(SB),NOSPLIT,$0
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL y+24(FP), BP
MOVL r+28(FP), CX
MOVL z_len+4(FP), BX
LEAL (DI)(BX*4), DI
LEAL (SI)(BX*4), SI
NEGL BX
JMP E5
L5: MOVL (SI)(BX*4), AX
MULL BP
ADDL CX, AX
ADCL $0, DX
MOVL AX, (DI)(BX*4)
MOVL DX, CX
ADDL $1, BX
E5: CMPL BX, $0
JL L5
MOVL CX, c+32(FP)
RET
TEXT ·addMulVVW(SB),NOSPLIT,$0
MOVL z+0(FP), DI
MOVL x+12(FP), SI
MOVL y+24(FP), BP
MOVL z_len+4(FP), BX
LEAL (DI)(BX*4), DI
LEAL (SI)(BX*4), SI
NEGL BX
MOVL $0, CX
JMP E6
L6: MOVL (SI)(BX*4), AX
MULL BP
ADDL CX, AX
ADCL $0, DX
ADDL AX, (DI)(BX*4)
ADCL $0, DX
MOVL DX, CX
ADDL $1, BX
E6: CMPL BX, $0
JL L6
MOVL CX, c+28(FP)
RET
TEXT ·divWVW(SB),NOSPLIT,$0
MOVL z+0(FP), DI
MOVL xn+12(FP), DX
MOVL x+16(FP), SI
MOVL y+28(FP), CX
MOVL z_len+4(FP), BX
JMP E7
L7: MOVL (SI)(BX*4), AX
DIVL CX
MOVL AX, (DI)(BX*4)
E7: SUBL $1, BX
JGE L7
MOVL DX, r+32(FP)
RET
TEXT ·bitLen(SB),NOSPLIT,$0
BSRL x+0(FP), AX
JZ Z1
INCL AX
MOVL AX, n+4(FP)
RET
Z1: MOVL $0, n+4(FP)
RET