hoge:	.global hoge
	mov	%edi,%ecx
	push	%rbp
	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
	jmp	1f
2:	xor	%edx,%edx
1:	mov	8(%rsp,%r9),%r8d
	jmp	4f
5:	addl	$1,(%rsp,%rdx,4)
4:	lea	1(%r8),%rsi
	mov	%esi,%eax
	xor	%r8d,%eax
	and	%eax,%esi
	test	%esi,%edi
	je	3f
	or	%esi,%r8d
	cmp	%rcx,%r9
	je	5b
	mov	%r8d,8(%rsp,%r9)
	mov	8+1*4(%rsp,%r9),%r8d
	or	%esi,%r8d
	mov	%r8d,8+5*4(%rsp,%r9)
	mov	8+2*4(%rsp,%r9),%eax
	or	%esi,%eax
	shl	%eax
	mov	%eax,8+6*4(%rsp,%r9)
	or	%eax,%r8d
	mov	8+3*4(%rsp,%r9),%eax
	or	%esi,%eax
	shr	%eax
	mov	%eax,8+7*4(%rsp,%r9)
	or	%eax,%r8d
	add	$16,%r9
	jmp	4b
3:	sub	$16,%r9
	ja	1b
	je	2b
	mov	0(%rsp),%eax
	shl	$1,%eax
	add	4(%rsp),%eax
	mov	%rbp,%rsp
	pop	%rbp
	ret
