40b661:	eb f1                	jmp    0x40b654
40b663:	8b 75 08             	mov    0x8(%ebp),%esi
40b666:	83 c9 ff             	or     $0xffffffff,%ecx
40b669:	8d 49 00             	lea    0x0(%ecx),%ecx
40b66c:	83 c1 01             	add    $0x1,%ecx
40b66f:	8a 06                	mov    (%esi),%al
40b671:	0a c0                	or     %al,%al
40b673:	74 09                	je     0x40b67e
40b675:	83 c6 01             	add    $0x1,%esi
40b678:	0f a3 04 24          	bt     %eax,(%esp)
40b67c:	73 ee                	jae    0x40b66c
40b67e:	8b c1                	mov    %ecx,%eax
40b680:	83 c4 20             	add    $0x20,%esp
40b683:	5e                   	pop    %esi
40b684:	c9                   	leave
40b685:	c3                   	ret
40b686:	8b ff                	mov    %edi,%edi
40b688:	55                   	push   %ebp
40b689:	8b ec                	mov    %esp,%ebp
40b68b:	8b 55 08             	mov    0x8(%ebp),%edx
40b68e:	56                   	push   %esi
40b68f:	57                   	push   %edi
40b690:	85 d2                	test   %edx,%edx
40b692:	74 07                	je     0x40b69b
40b694:	8b 7d 0c             	mov    0xc(%ebp),%edi
40b697:	85 ff                	test   %edi,%edi
40b699:	75 13                	jne    0x40b6ae
40b69b:	e8 87 8a ff ff       	call   0x404127
40b6a0:	6a 16                	push   $0x16
40b6a2:	5e                   	pop    %esi
40b6a3:	89 30                	mov    %esi,(%eax)
40b6a5:	e8 dd 75 ff ff       	call   0x402c87
40b6aa:	8b c6                	mov    %esi,%eax
40b6ac:	eb 33                	jmp    0x40b6e1
40b6ae:	8b 45 10             	mov    0x10(%ebp),%eax
40b6b1:	85 c0                	test   %eax,%eax
40b6b3:	75 04                	jne    0x40b6b9
40b6b5:	88 02                	mov    %al,(%edx)
40b6b7:	eb e2                	jmp    0x40b69b
40b6b9:	8b f2                	mov    %edx,%esi
40b6bb:	2b f0                	sub    %eax,%esi
40b6bd:	8a 08                	mov    (%eax),%cl
40b6bf:	88 0c 06             	mov    %cl,(%esi,%eax,1)
40b6c2:	40                   	inc    %eax
40b6c3:	84 c9                	test   %cl,%cl
40b6c5:	74 03                	je     0x40b6ca
40b6c7:	4f                   	dec    %edi
40b6c8:	75 f3                	jne    0x40b6bd
40b6ca:	85 ff                	test   %edi,%edi
40b6cc:	75 11                	jne    0x40b6df
40b6ce:	c6 02 00             	movb   $0x0,(%edx)
40b6d1:	e8 51 8a ff ff       	call   0x404127
40b6d6:	6a 22                	push   $0x22
40b6d8:	59                   	pop    %ecx
40b6d9:	89 08                	mov    %ecx,(%eax)
40b6db:	8b f1                	mov    %ecx,%esi
40b6dd:	eb c6                	jmp    0x40b6a5
40b6df:	33 c0                	xor    %eax,%eax
40b6e1:	5f                   	pop    %edi
40b6e2:	5e                   	pop    %esi
40b6e3:	5d                   	pop    %ebp
40b6e4:	c3                   	ret
40b6e5:	cc                   	int3
40b6e6:	cc                   	int3
40b6e7:	cc                   	int3
40b6e8:	cc                   	int3
40b6e9:	cc                   	int3
40b6ea:	cc                   	int3
40b6eb:	cc                   	int3
40b6ec:	cc                   	int3
40b6ed:	cc                   	int3
40b6ee:	cc                   	int3
40b6ef:	cc                   	int3
40b6f0:	8b 54 24 04          	mov    0x4(%esp),%edx
40b6f4:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40b6f8:	f7 c2 03 00 00 00    	test   $0x3,%edx
40b6fe:	75 3c                	jne    0x40b73c
40b700:	8b 02                	mov    (%edx),%eax
40b702:	3a 01                	cmp    (%ecx),%al
40b704:	75 2e                	jne    0x40b734
40b706:	0a c0                	or     %al,%al
40b708:	74 26                	je     0x40b730
40b70a:	3a 61 01             	cmp    0x1(%ecx),%ah
40b70d:	75 25                	jne    0x40b734
40b70f:	0a e4                	or     %ah,%ah
40b711:	74 1d                	je     0x40b730
40b713:	c1 e8 10             	shr    $0x10,%eax
40b716:	3a 41 02             	cmp    0x2(%ecx),%al
40b719:	75 19                	jne    0x40b734
40b71b:	0a c0                	or     %al,%al
40b71d:	74 11                	je     0x40b730
40b71f:	3a 61 03             	cmp    0x3(%ecx),%ah
40b722:	75 10                	jne    0x40b734
40b724:	83 c1 04             	add    $0x4,%ecx
40b727:	83 c2 04             	add    $0x4,%edx
40b72a:	0a e4                	or     %ah,%ah
40b72c:	75 d2                	jne    0x40b700
40b72e:	8b ff                	mov    %edi,%edi
40b730:	33 c0                	xor    %eax,%eax
40b732:	c3                   	ret
40b733:	90                   	nop
40b734:	1b c0                	sbb    %eax,%eax
40b736:	d1 e0                	shl    $1,%eax
40b738:	83 c0 01             	add    $0x1,%eax
40b73b:	c3                   	ret
40b73c:	f7 c2 01 00 00 00    	test   $0x1,%edx
40b742:	74 18                	je     0x40b75c
40b744:	8a 02                	mov    (%edx),%al
40b746:	83 c2 01             	add    $0x1,%edx
40b749:	3a 01                	cmp    (%ecx),%al
40b74b:	75 e7                	jne    0x40b734
40b74d:	83 c1 01             	add    $0x1,%ecx
40b750:	0a c0                	or     %al,%al
40b752:	74 dc                	je     0x40b730
40b754:	f7 c2 02 00 00 00    	test   $0x2,%edx
40b75a:	74 a4                	je     0x40b700
40b75c:	66 8b 02             	mov    (%edx),%ax
40b75f:	83 c2 02             	add    $0x2,%edx
40b762:	3a 01                	cmp    (%ecx),%al
40b764:	75 ce                	jne    0x40b734
40b766:	0a c0                	or     %al,%al
40b768:	74 c6                	je     0x40b730
40b76a:	3a 61 01             	cmp    0x1(%ecx),%ah
40b76d:	75 c5                	jne    0x40b734
40b76f:	0a e4                	or     %ah,%ah
40b771:	74 bd                	je     0x40b730
40b773:	83 c1 02             	add    $0x2,%ecx
40b776:	eb 88                	jmp    0x40b700
40b778:	cc                   	int3
40b779:	cc                   	int3
40b77a:	cc                   	int3
40b77b:	cc                   	int3
40b77c:	cc                   	int3
40b77d:	cc                   	int3
40b77e:	cc                   	int3
40b77f:	cc                   	int3
40b780:	55                   	push   %ebp
40b781:	8b ec                	mov    %esp,%ebp
40b783:	57                   	push   %edi
40b784:	56                   	push   %esi
40b785:	8b 75 0c             	mov    0xc(%ebp),%esi
40b788:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b78b:	8b 7d 08             	mov    0x8(%ebp),%edi
40b78e:	8b c1                	mov    %ecx,%eax
40b790:	8b d1                	mov    %ecx,%edx
40b792:	03 c6                	add    %esi,%eax
40b794:	3b fe                	cmp    %esi,%edi
40b796:	76 08                	jbe    0x40b7a0
40b798:	3b f8                	cmp    %eax,%edi
40b79a:	0f 82 a0 01 00 00    	jb     0x40b940
40b7a0:	81 f9 80 00 00 00    	cmp    $0x80,%ecx
40b7a6:	72 1c                	jb     0x40b7c4
40b7a8:	83 3d f8 45 41 00 00 	cmpl   $0x0,0x4145f8
40b7af:	74 13                	je     0x40b7c4
40b7b1:	57                   	push   %edi
40b7b2:	56                   	push   %esi
40b7b3:	83 e7 0f             	and    $0xf,%edi
40b7b6:	83 e6 0f             	and    $0xf,%esi
40b7b9:	3b fe                	cmp    %esi,%edi
40b7bb:	5e                   	pop    %esi
40b7bc:	5f                   	pop    %edi
40b7bd:	75 05                	jne    0x40b7c4
40b7bf:	e9 79 2c 00 00       	jmp    0x40e43d
40b7c4:	f7 c7 03 00 00 00    	test   $0x3,%edi
40b7ca:	75 14                	jne    0x40b7e0
40b7cc:	c1 e9 02             	shr    $0x2,%ecx
40b7cf:	83 e2 03             	and    $0x3,%edx
40b7d2:	83 f9 08             	cmp    $0x8,%ecx
40b7d5:	72 29                	jb     0x40b800
40b7d7:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b7d9:	ff 24 95 f0 b8 40 00 	jmp    *0x40b8f0(,%edx,4)
40b7e0:	8b c7                	mov    %edi,%eax
40b7e2:	ba 03 00 00 00       	mov    $0x3,%edx
40b7e7:	83 e9 04             	sub    $0x4,%ecx
40b7ea:	72 0c                	jb     0x40b7f8
40b7ec:	83 e0 03             	and    $0x3,%eax
40b7ef:	03 c8                	add    %eax,%ecx
40b7f1:	ff 24 85 04 b8 40 00 	jmp    *0x40b804(,%eax,4)
40b7f8:	ff 24 8d 00 b9 40 00 	jmp    *0x40b900(,%ecx,4)
40b7ff:	90                   	nop
40b800:	ff 24 8d 84 b8 40 00 	jmp    *0x40b884(,%ecx,4)
40b807:	90                   	nop
40b808:	14 b8                	adc    $0xb8,%al
40b80a:	40                   	inc    %eax
40b80b:	00 40 b8             	add    %al,-0x48(%eax)
40b80e:	40                   	inc    %eax
40b80f:	00 64 b8 40          	add    %ah,0x40(%eax,%edi,4)
40b813:	00 23                	add    %ah,(%ebx)
40b815:	d1 8a 06 88 07 8a    	rorl   $1,-0x75f877fa(%edx)
40b81b:	46                   	inc    %esi
40b81c:	01 88 47 01 8a 46    	add    %ecx,0x468a0147(%eax)
40b822:	02 c1                	add    %cl,%al
40b824:	e9 02 88 47 02       	jmp    0x288402b
40b829:	83 c6 03             	add    $0x3,%esi
40b82c:	83 c7 03             	add    $0x3,%edi
40b82f:	83 f9 08             	cmp    $0x8,%ecx
40b832:	72 cc                	jb     0x40b800
40b834:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b836:	ff 24 95 f0 b8 40 00 	jmp    *0x40b8f0(,%edx,4)
40b83d:	8d 49 00             	lea    0x0(%ecx),%ecx
40b840:	23 d1                	and    %ecx,%edx
40b842:	8a 06                	mov    (%esi),%al
40b844:	88 07                	mov    %al,(%edi)
40b846:	8a 46 01             	mov    0x1(%esi),%al
40b849:	c1 e9 02             	shr    $0x2,%ecx
40b84c:	88 47 01             	mov    %al,0x1(%edi)
40b84f:	83 c6 02             	add    $0x2,%esi
40b852:	83 c7 02             	add    $0x2,%edi
40b855:	83 f9 08             	cmp    $0x8,%ecx
40b858:	72 a6                	jb     0x40b800
40b85a:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b85c:	ff 24 95 f0 b8 40 00 	jmp    *0x40b8f0(,%edx,4)
40b863:	90                   	nop
40b864:	23 d1                	and    %ecx,%edx
40b866:	8a 06                	mov    (%esi),%al
40b868:	88 07                	mov    %al,(%edi)
40b86a:	83 c6 01             	add    $0x1,%esi
40b86d:	c1 e9 02             	shr    $0x2,%ecx
40b870:	83 c7 01             	add    $0x1,%edi
40b873:	83 f9 08             	cmp    $0x8,%ecx
40b876:	72 88                	jb     0x40b800
40b878:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b87a:	ff 24 95 f0 b8 40 00 	jmp    *0x40b8f0(,%edx,4)
40b881:	8d 49 00             	lea    0x0(%ecx),%ecx
40b884:	e7 b8                	out    %eax,$0xb8
40b886:	40                   	inc    %eax
40b887:	00 d4                	add    %dl,%ah
40b889:	b8 40 00 cc b8       	mov    $0xb8cc0040,%eax
40b88e:	40                   	inc    %eax
40b88f:	00 c4                	add    %al,%ah
40b891:	b8 40 00 bc b8       	mov    $0xb8bc0040,%eax
40b896:	40                   	inc    %eax
40b897:	00 b4 b8 40 00 ac b8 	add    %dh,-0x4753ffc0(%eax,%edi,4)
40b89e:	40                   	inc    %eax
40b89f:	00 a4 b8 40 00 8b 44 	add    %ah,0x448b0040(%eax,%edi,4)
40b8a6:	8e e4                	mov    %esp,%fs
40b8a8:	89 44 8f e4          	mov    %eax,-0x1c(%edi,%ecx,4)
40b8ac:	8b 44 8e e8          	mov    -0x18(%esi,%ecx,4),%eax
40b8b0:	89 44 8f e8          	mov    %eax,-0x18(%edi,%ecx,4)
40b8b4:	8b 44 8e ec          	mov    -0x14(%esi,%ecx,4),%eax
40b8b8:	89 44 8f ec          	mov    %eax,-0x14(%edi,%ecx,4)
40b8bc:	8b 44 8e f0          	mov    -0x10(%esi,%ecx,4),%eax
40b8c0:	89 44 8f f0          	mov    %eax,-0x10(%edi,%ecx,4)
40b8c4:	8b 44 8e f4          	mov    -0xc(%esi,%ecx,4),%eax
40b8c8:	89 44 8f f4          	mov    %eax,-0xc(%edi,%ecx,4)
40b8cc:	8b 44 8e f8          	mov    -0x8(%esi,%ecx,4),%eax
40b8d0:	89 44 8f f8          	mov    %eax,-0x8(%edi,%ecx,4)
40b8d4:	8b 44 8e fc          	mov    -0x4(%esi,%ecx,4),%eax
40b8d8:	89 44 8f fc          	mov    %eax,-0x4(%edi,%ecx,4)
40b8dc:	8d 04 8d 00 00 00 00 	lea    0x0(,%ecx,4),%eax
40b8e3:	03 f0                	add    %eax,%esi
40b8e5:	03 f8                	add    %eax,%edi
40b8e7:	ff 24 95 f0 b8 40 00 	jmp    *0x40b8f0(,%edx,4)
40b8ee:	8b ff                	mov    %edi,%edi
40b8f0:	00 b9 40 00 08 b9    	add    %bh,-0x46f7ffc0(%ecx)
40b8f6:	40                   	inc    %eax
40b8f7:	00 14 b9             	add    %dl,(%ecx,%edi,4)
40b8fa:	40                   	inc    %eax
40b8fb:	00 28                	add    %ch,(%eax)
40b8fd:	b9 40 00 8b 45       	mov    $0x458b0040,%ecx
40b902:	08 5e 5f             	or     %bl,0x5f(%esi)
40b905:	c9                   	leave
40b906:	c3                   	ret
40b907:	90                   	nop
40b908:	8a 06                	mov    (%esi),%al
40b90a:	88 07                	mov    %al,(%edi)
40b90c:	8b 45 08             	mov    0x8(%ebp),%eax
40b90f:	5e                   	pop    %esi
40b910:	5f                   	pop    %edi
40b911:	c9                   	leave
40b912:	c3                   	ret
40b913:	90                   	nop
40b914:	8a 06                	mov    (%esi),%al
40b916:	88 07                	mov    %al,(%edi)
40b918:	8a 46 01             	mov    0x1(%esi),%al
40b91b:	88 47 01             	mov    %al,0x1(%edi)
40b91e:	8b 45 08             	mov    0x8(%ebp),%eax
40b921:	5e                   	pop    %esi
40b922:	5f                   	pop    %edi
40b923:	c9                   	leave
40b924:	c3                   	ret
40b925:	8d 49 00             	lea    0x0(%ecx),%ecx
40b928:	8a 06                	mov    (%esi),%al
40b92a:	88 07                	mov    %al,(%edi)
40b92c:	8a 46 01             	mov    0x1(%esi),%al
40b92f:	88 47 01             	mov    %al,0x1(%edi)
40b932:	8a 46 02             	mov    0x2(%esi),%al
40b935:	88 47 02             	mov    %al,0x2(%edi)
40b938:	8b 45 08             	mov    0x8(%ebp),%eax
40b93b:	5e                   	pop    %esi
40b93c:	5f                   	pop    %edi
40b93d:	c9                   	leave
40b93e:	c3                   	ret
40b93f:	90                   	nop
40b940:	8d 74 31 fc          	lea    -0x4(%ecx,%esi,1),%esi
40b944:	8d 7c 39 fc          	lea    -0x4(%ecx,%edi,1),%edi
40b948:	f7 c7 03 00 00 00    	test   $0x3,%edi
40b94e:	75 24                	jne    0x40b974
40b950:	c1 e9 02             	shr    $0x2,%ecx
40b953:	83 e2 03             	and    $0x3,%edx
40b956:	83 f9 08             	cmp    $0x8,%ecx
40b959:	72 0d                	jb     0x40b968
40b95b:	fd                   	std
40b95c:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b95e:	fc                   	cld
40b95f:	ff 24 95 8c ba 40 00 	jmp    *0x40ba8c(,%edx,4)
40b966:	8b ff                	mov    %edi,%edi
40b968:	f7 d9                	neg    %ecx
40b96a:	ff 24 8d 3c ba 40 00 	jmp    *0x40ba3c(,%ecx,4)
40b971:	8d 49 00             	lea    0x0(%ecx),%ecx
40b974:	8b c7                	mov    %edi,%eax
40b976:	ba 03 00 00 00       	mov    $0x3,%edx
40b97b:	83 f9 04             	cmp    $0x4,%ecx
40b97e:	72 0c                	jb     0x40b98c
40b980:	83 e0 03             	and    $0x3,%eax
40b983:	2b c8                	sub    %eax,%ecx
40b985:	ff 24 85 90 b9 40 00 	jmp    *0x40b990(,%eax,4)
40b98c:	ff 24 8d 8c ba 40 00 	jmp    *0x40ba8c(,%ecx,4)
40b993:	90                   	nop
40b994:	a0 b9 40 00 c4       	mov    0xc40040b9,%al
40b999:	b9 40 00 ec b9       	mov    $0xb9ec0040,%ecx
40b99e:	40                   	inc    %eax
40b99f:	00 8a 46 03 23 d1    	add    %cl,-0x2edcfcba(%edx)
40b9a5:	88 47 03             	mov    %al,0x3(%edi)
40b9a8:	83 ee 01             	sub    $0x1,%esi
40b9ab:	c1 e9 02             	shr    $0x2,%ecx
40b9ae:	83 ef 01             	sub    $0x1,%edi
40b9b1:	83 f9 08             	cmp    $0x8,%ecx
40b9b4:	72 b2                	jb     0x40b968
40b9b6:	fd                   	std
40b9b7:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b9b9:	fc                   	cld
40b9ba:	ff 24 95 8c ba 40 00 	jmp    *0x40ba8c(,%edx,4)
40b9c1:	8d 49 00             	lea    0x0(%ecx),%ecx
40b9c4:	8a 46 03             	mov    0x3(%esi),%al
40b9c7:	23 d1                	and    %ecx,%edx
40b9c9:	88 47 03             	mov    %al,0x3(%edi)
40b9cc:	8a 46 02             	mov    0x2(%esi),%al
40b9cf:	c1 e9 02             	shr    $0x2,%ecx
40b9d2:	88 47 02             	mov    %al,0x2(%edi)
40b9d5:	83 ee 02             	sub    $0x2,%esi
40b9d8:	83 ef 02             	sub    $0x2,%edi
40b9db:	83 f9 08             	cmp    $0x8,%ecx
40b9de:	72 88                	jb     0x40b968
40b9e0:	fd                   	std
40b9e1:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b9e3:	fc                   	cld
40b9e4:	ff 24 95 8c ba 40 00 	jmp    *0x40ba8c(,%edx,4)
40b9eb:	90                   	nop
40b9ec:	8a 46 03             	mov    0x3(%esi),%al