.32   {d2, d3}, [%[out1], :128]\n"
			"vst1.32   {d6, d7}, [%[out0], :128], %[inc]\n"
			"vbic.s32  q3,  q1,  q14\n"
			"vld1.32   {d0, d1}, [%[out0], :128]\n"
			"vhsub.s32 q10, q8,  q11\n"
			"vhadd.s32 q11, q8,  q11\n"
			"vhsub.s32 q2,  q0,  q3\n"
			"vhadd.s32 q3,  q0,  q3\n"
			"vbif.s32  q10, q9,  q15\n"
			"vbif.s32  d22, d16, d30\n"
			"subs      %[i], %[i], #2\n"
			"bgt       2b\n"
			"sub       %[inc], %[zero], %[inc], asr #1\n"
			"vbif.s32  d23, d17, d31\n"
			"vst1.32   {d20, d21}, [%[in1], :128]\n"
			"vbif.s32  q2,  q1,  q15\n"
			"vst1.32   {d22, d23}, [%[in0], :128]\n"
			"vbif.s32  q3,  q0,  q15\n"
			"vst1.32   {d4, d5}, [%[out1], :128]\n"
			"vst1.32   {d6, d7}, [%[out0], :128]\n"
		".endm\n"

		"vmov.s32  q14, #1\n"
		"vmov.s32  q13, %[c2]\n"

		"cmp   %[i], #4\n"
		"bne   8f\n"

	"4:\n" /* 4 subbands */
		"add   %[in0], %[in], #0\n"
		"add   %[in1], %[in], #32\n"
		"add   %[out0], %[out], #0\n"
		"add   %[out1], %[out], #32\n"
		"vmov.s32  q0, %[c1]\n"
		"vadd.s32  q0, q0, q14\n"

		"calc_scalefactors\n"

		/* check whether to use joint stereo for subbands 0, 1, 2 */
		"vadd.s32  q15, q0,  q1\n"
		"vadd.s32  q9,  q2,  q3\n"
		"vmov.s32  d31[1], %[zero]\n" /* last subband -> no joint */
		"vld1.32   {d16, d17}, [%[consts], :128]!\n"
		"vcgt.s32  q15, q15, q9\n"

		/* calculate and save to memory 'joint' variable */
		/* update and save scale factors to memory */
		"  vand.s32  q8, q8, q15\n"
		"vbit.s32  q0,  q2,  q15\n"
		"  vpadd.s32 d16, d16, d17\n"
		"vbit.s32  q1,  q3,  q15\n"
		"  vpadd.s32 d16, d16, d16\n"
		"vst1.32   {d0, d1}, [%[out0], :128]\n"
		"vst1.32   {d2, d3}, [%[out1], :128]\n"
		"  vst1.32   {d16[0]}, [%[joint]]\n"

		"update_joint_stereo_samples\n"
		"b     9f\n"

	"8:\n" /* 8 subbands */
		"add   %[in0], %[in], #16\n\n"
		"add   %[in1], %[in], #48\n"
		"add   %[out0], %[out], #16\n\n"
		"add   %[out1], %[out], #48\n"
		"vmov.s32  q0, %[c1]\n"
		"vadd.s32  q0, q0, q14\n"

		"calc_scalefactors\n"

		/* check whether to use joint stereo for subbands 4, 5, 6 */
		"vadd.s32 