hoge:	.global hoge
	mov	%edi,%ecx
	push	%rbp
	push	%rbx
	mov	%rsp,%rbp
	lea	1(,%rcx,2),%rax
1:	pushq	$0
	sub	$1,%eax
	ja	1b
	mov	$1,%eax
	shl	%cl,%eax
	lea	-1(%eax),%edi
	mov	$1,%eax
	push	%rcx
	shr	%ecx
	shl	%cl,%eax
	pop	%rcx
	sub	$1,%eax
	mov	%eax,8(%rsp)
	mov	$1,%edx
	and	%ecx,%edx
	sub	$1,%ecx
	shl	$4,%rcx
	xor	%r9,%r9
	test	%edx,%edx
	je	2f
1:	mov	8(%rsp,%r9),%r8d
	cmp	%r8d,%edi
	je	3f
4:	mov	%r8d,%eax
	lea	1(%r8),%rsi
	xor	%esi,%eax
	and	%eax,%esi
	or	%esi,%r8d
	mov	%r8d,8(%rsp,%r9)
	mov	8+1*4(%rsp,%r9),%ebx
	mov	8+2*4(%rsp,%r9),%eax
	or	%esi,%ebx
	mov	%ebx,%r10d
	or	%esi,%eax
	shl	%eax
	mov	%eax,%r11d
	or	%eax,%ebx
	mov	8+3*4(%rsp,%r9),%eax
	or	%esi,%eax
	shr	%eax
	add	$16,%r9
	mov	%eax,%edx
	and	%edi,%ebx
	or	%ebx,%eax
	cmp	%edi,%eax
	je	3f
	mov	%eax,%r8d
	cmp	%rcx,%r9
	je	5f
	mov	%r10d,8+1*4(%rsp,%r9)
	mov	%r11d,8+2*4(%rsp,%r9)
	mov	%edx,8+3*4(%rsp,%r9)
	jmp	4b
5:	addq	$1,(%rsp)
3:	sub	$16,%r9
	ja	1b
	jne	1f
2:	mov	8(%rsp,%r9),%r8d
	cmp	%r8d,%edi
	je	3f
4:	mov	%r8d,%eax
	lea	1(%r8),%rsi
	xor	%esi,%eax
	and	%eax,%esi
	or	%esi,%r8d
	mov	%r8d,8(%rsp,%r9)
	mov	8+1*4(%rsp,%r9),%ebx
	mov	8+2*4(%rsp,%r9),%eax
	or	%esi,%ebx
	mov	%ebx,%r10d
	or	%esi,%eax
	shl	%eax
	mov	%eax,%r11d
	or	%eax,%ebx
	mov	8+3*4(%rsp,%r9),%eax
	or	%esi,%eax
	shr	%eax
	add	$16,%r9
	mov	%eax,%edx
	and	%edi,%ebx
	or	%ebx,%eax
	cmp	%edi,%eax
	je	3f
	mov	%eax,%r8d
	cmp	%rcx,%r9
	je	5f
	mov	%r10d,8+1*4(%rsp,%r9)
	mov	%r11d,8+2*4(%rsp,%r9)
	mov	%edx,8+3*4(%rsp,%r9)
	jmp	4b
5:	addq	$2,(%rsp)
3:	sub	$16,%r9
	jae	2b
1:	mov	0(%rsp),%rax
	mov	%rbp,%rsp
	pop	%rbx
	pop	%rbp
	ret
