40d73b:	85 ff                	test   %edi,%edi
40d73d:	74 70                	je     0x40d7af
40d73f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d742:	83 e1 01             	and    $0x1,%ecx
40d745:	0b cb                	or     %ebx,%ecx
40d747:	74 21                	je     0x40d76a
40d749:	85 f6                	test   %esi,%esi
40d74b:	75 04                	jne    0x40d751
40d74d:	85 c0                	test   %eax,%eax
40d74f:	75 43                	jne    0x40d794
40d751:	8b 8d 98 fb ff ff    	mov    -0x468(%ebp),%ecx
40d757:	3b ce                	cmp    %esi,%ecx
40d759:	74 05                	je     0x40d760
40d75b:	88 1c 0f             	mov    %bl,(%edi,%ecx,1)
40d75e:	eb 4f                	jmp    0x40d7af
40d760:	85 c0                	test   %eax,%eax
40d762:	78 4b                	js     0x40d7af
40d764:	3b c6                	cmp    %esi,%eax
40d766:	77 2c                	ja     0x40d794
40d768:	eb 45                	jmp    0x40d7af
40d76a:	8b 8d 8c fb ff ff    	mov    -0x474(%ebp),%ecx
40d770:	0b cb                	or     %ebx,%ecx
40d772:	74 1c                	je     0x40d790
40d774:	85 f6                	test   %esi,%esi
40d776:	74 37                	je     0x40d7af
40d778:	85 c0                	test   %eax,%eax
40d77a:	79 04                	jns    0x40d780
40d77c:	88 1f                	mov    %bl,(%edi)
40d77e:	eb 2f                	jmp    0x40d7af
40d780:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d786:	3b c6                	cmp    %esi,%eax
40d788:	75 22                	jne    0x40d7ac
40d78a:	88 5c 3e ff          	mov    %bl,-0x1(%esi,%edi,1)
40d78e:	eb 1f                	jmp    0x40d7af
40d790:	85 f6                	test   %esi,%esi
40d792:	75 05                	jne    0x40d799
40d794:	83 ce ff             	or     $0xffffffff,%esi
40d797:	eb 1c                	jmp    0x40d7b5
40d799:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d79f:	3b c6                	cmp    %esi,%eax
40d7a1:	75 09                	jne    0x40d7ac
40d7a3:	6a fe                	push   $0xfffffffe
40d7a5:	88 5c 3e ff          	mov    %bl,-0x1(%esi,%edi,1)
40d7a9:	5e                   	pop    %esi
40d7aa:	eb 09                	jmp    0x40d7b5
40d7ac:	88 1c 07             	mov    %bl,(%edi,%eax,1)
40d7af:	8b b5 a0 fb ff ff    	mov    -0x460(%ebp),%esi
40d7b5:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
40d7bb:	e8 e3 1c 00 00       	call   0x40f4a3
40d7c0:	8b c6                	mov    %esi,%eax
40d7c2:	5f                   	pop    %edi
40d7c3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d7c6:	5e                   	pop    %esi
40d7c7:	33 cd                	xor    %ebp,%ecx
40d7c9:	5b                   	pop    %ebx
40d7ca:	e8 d8 c4 ff ff       	call   0x409ca7
40d7cf:	c9                   	leave
40d7d0:	c3                   	ret
40d7d1:	8b ff                	mov    %edi,%edi
40d7d3:	55                   	push   %ebp
40d7d4:	8b ec                	mov    %esp,%ebp
40d7d6:	81 ec 74 04 00 00    	sub    $0x474,%esp
40d7dc:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
40d7e1:	33 c5                	xor    %ebp,%eax
40d7e3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d7e6:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40d7ea:	8b 45 10             	mov    0x10(%ebp),%eax
40d7ed:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40d7f0:	53                   	push   %ebx
40d7f1:	56                   	push   %esi
40d7f2:	8b 75 14             	mov    0x14(%ebp),%esi
40d7f5:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d7fb:	75 23                	jne    0x40d820
40d7fd:	51                   	push   %ecx
40d7fe:	33 db                	xor    %ebx,%ebx
40d800:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40d804:	53                   	push   %ebx
40d805:	53                   	push   %ebx
40d806:	53                   	push   %ebx
40d807:	53                   	push   %ebx
40d808:	53                   	push   %ebx
40d809:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
40d810:	e8 5c fb ff ff       	call   0x40d371
40d815:	83 c4 18             	add    $0x18,%esp
40d818:	83 c8 ff             	or     $0xffffffff,%eax
40d81b:	e9 26 01 00 00       	jmp    0x40d946
40d820:	85 f6                	test   %esi,%esi
40d822:	74 04                	je     0x40d828
40d824:	85 c0                	test   %eax,%eax
40d826:	74 d5                	je     0x40d7fd
40d828:	8b 55 08             	mov    0x8(%ebp),%edx
40d82b:	33 c0                	xor    %eax,%eax
40d82d:	57                   	push   %edi
40d82e:	8d bd 90 fb ff ff    	lea    -0x470(%ebp),%edi
40d834:	33 db                	xor    %ebx,%ebx
40d836:	ab                   	stos   %eax,%es:(%edi)
40d837:	ab                   	stos   %eax,%es:(%edi)
40d838:	ab                   	stos   %eax,%es:(%edi)
40d839:	ab                   	stos   %eax,%es:(%edi)
40d83a:	8b c2                	mov    %edx,%eax
40d83c:	8b bd a0 fb ff ff    	mov    -0x460(%ebp),%edi
40d842:	83 e0 02             	and    $0x2,%eax
40d845:	89 85 8c fb ff ff    	mov    %eax,-0x474(%ebp)
40d84b:	0b c3                	or     %ebx,%eax
40d84d:	89 bd 90 fb ff ff    	mov    %edi,-0x470(%ebp)
40d853:	89 b5 94 fb ff ff    	mov    %esi,-0x46c(%ebp)
40d859:	89 9d 98 fb ff ff    	mov    %ebx,-0x468(%ebp)
40d85f:	75 0a                	jne    0x40d86b
40d861:	88 9d 9c fb ff ff    	mov    %bl,-0x464(%ebp)
40d867:	85 ff                	test   %edi,%edi
40d869:	75 07                	jne    0x40d872
40d86b:	c6 85 9c fb ff ff 01 	movb   $0x1,-0x464(%ebp)
40d872:	ff 75 20             	push   0x20(%ebp)
40d875:	8d 85 90 fb ff ff    	lea    -0x470(%ebp),%eax
40d87b:	51                   	push   %ecx
40d87c:	ff 75 18             	push   0x18(%ebp)
40d87f:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d885:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d88b:	ff 75 0c             	push   0xc(%ebp)
40d88e:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
40d894:	52                   	push   %edx
40d895:	50                   	push   %eax
40d896:	e8 9c 1b 00 00       	call   0x40f437
40d89b:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d8a1:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40d8a4:	e8 f7 26 00 00       	call   0x40ffa0
40d8a9:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d8af:	85 ff                	test   %edi,%edi
40d8b1:	74 7f                	je     0x40d932
40d8b3:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d8b6:	83 e1 01             	and    $0x1,%ecx
40d8b9:	0b cb                	or     %ebx,%ecx
40d8bb:	74 24                	je     0x40d8e1
40d8bd:	85 f6                	test   %esi,%esi
40d8bf:	75 04                	jne    0x40d8c5
40d8c1:	85 c0                	test   %eax,%eax
40d8c3:	75 4c                	jne    0x40d911
40d8c5:	8b 8d 98 fb ff ff    	mov    -0x468(%ebp),%ecx
40d8cb:	3b ce                	cmp    %esi,%ecx
40d8cd:	74 08                	je     0x40d8d7
40d8cf:	33 c0                	xor    %eax,%eax
40d8d1:	66 89 04 4f          	mov    %ax,(%edi,%ecx,2)
40d8d5:	eb 5b                	jmp    0x40d932
40d8d7:	85 c0                	test   %eax,%eax
40d8d9:	78 57                	js     0x40d932
40d8db:	3b c6                	cmp    %esi,%eax
40d8dd:	77 32                	ja     0x40d911
40d8df:	eb 51                	jmp    0x40d932
40d8e1:	8b 8d 8c fb ff ff    	mov    -0x474(%ebp),%ecx
40d8e7:	0b cb                	or     %ebx,%ecx
40d8e9:	74 22                	je     0x40d90d
40d8eb:	85 f6                	test   %esi,%esi
40d8ed:	74 43                	je     0x40d932
40d8ef:	85 c0                	test   %eax,%eax
40d8f1:	79 07                	jns    0x40d8fa
40d8f3:	33 c0                	xor    %eax,%eax
40d8f5:	66 89 07             	mov    %ax,(%edi)
40d8f8:	eb 38                	jmp    0x40d932
40d8fa:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d900:	3b c6                	cmp    %esi,%eax
40d902:	75 28                	jne    0x40d92c
40d904:	33 c0                	xor    %eax,%eax
40d906:	66 89 44 77 fe       	mov    %ax,-0x2(%edi,%esi,2)
40d90b:	eb 25                	jmp    0x40d932
40d90d:	85 f6                	test   %esi,%esi
40d90f:	75 05                	jne    0x40d916
40d911:	83 ce ff             	or     $0xffffffff,%esi
40d914:	eb 22                	jmp    0x40d938
40d916:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d91c:	3b c6                	cmp    %esi,%eax
40d91e:	75 0c                	jne    0x40d92c
40d920:	33 c0                	xor    %eax,%eax
40d922:	6a fe                	push   $0xfffffffe
40d924:	66 89 44 77 fe       	mov    %ax,-0x2(%edi,%esi,2)
40d929:	5e                   	pop    %esi
40d92a:	eb 0c                	jmp    0x40d938
40d92c:	33 c9                	xor    %ecx,%ecx
40d92e:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
40d932:	8b b5 a0 fb ff ff    	mov    -0x460(%ebp),%esi
40d938:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
40d93e:	e8 60 1b 00 00       	call   0x40f4a3
40d943:	8b c6                	mov    %esi,%eax
40d945:	5f                   	pop    %edi
40d946:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d949:	5e                   	pop    %esi
40d94a:	33 cd                	xor    %ebp,%ecx
40d94c:	5b                   	pop    %ebx
40d94d:	e8 55 c3 ff ff       	call   0x409ca7
40d952:	c9                   	leave
40d953:	c3                   	ret
40d954:	8b ff                	mov    %edi,%edi
40d956:	55                   	push   %ebp
40d957:	8b ec                	mov    %esp,%ebp
40d959:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40d95d:	57                   	push   %edi
40d95e:	75 23                	jne    0x40d983
40d960:	8b 45 1c             	mov    0x1c(%ebp),%eax
40d963:	50                   	push   %eax
40d964:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40d968:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40d96f:	33 c0                	xor    %eax,%eax
40d971:	50                   	push   %eax
40d972:	50                   	push   %eax
40d973:	50                   	push   %eax
40d974:	50                   	push   %eax
40d975:	50                   	push   %eax
40d976:	e8 f6 f9 ff ff       	call   0x40d371
40d97b:	83 c4 18             	add    $0x18,%esp
40d97e:	83 c8 ff             	or     $0xffffffff,%eax
40d981:	eb 68                	jmp    0x40d9eb
40d983:	56                   	push   %esi
40d984:	8b 75 10             	mov    0x10(%ebp),%esi
40d987:	85 f6                	test   %esi,%esi
40d989:	74 3e                	je     0x40d9c9
40d98b:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40d98f:	76 38                	jbe    0x40d9c9
40d991:	ff 75 20             	push   0x20(%ebp)
40d994:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40d997:	57                   	push   %edi
40d998:	ff 75 18             	push   0x18(%ebp)
40d99b:	ff 75 14             	push   0x14(%ebp)
40d99e:	56                   	push   %esi
40d99f:	ff 75 0c             	push   0xc(%ebp)
40d9a2:	ff 75 08             	push   0x8(%ebp)
40d9a5:	e8 30 fb ff ff       	call   0x40d4da
40d9aa:	83 c4 1c             	add    $0x1c,%esp
40d9ad:	85 c0                	test   %eax,%eax
40d9af:	79 05                	jns    0x40d9b6
40d9b1:	33 c9                	xor    %ecx,%ecx
40d9b3:	66 89 0e             	mov    %cx,(%esi)
40d9b6:	83 f8 fe             	cmp    $0xfffffffe,%eax
40d9b9:	75 2f                	jne    0x40d9ea
40d9bb:	c6 47 1c 01          	movb   $0x1,0x1c(%edi)
40d9bf:	c7 47 18 22 00 00 00 	movl   $0x22,0x18(%edi)
40d9c6:	57                   	push   %edi
40d9c7:	eb 0f                	jmp    0x40d9d8
40d9c9:	8b 45 1c             	mov    0x1c(%ebp),%eax
40d9cc:	50                   	push   %eax
40d9cd:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40d9d1:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40d9d8:	33 c0                	xor    %eax,%eax
40d9da:	50                   	push   %eax
40d9db:	50                   	push   %eax
40d9dc:	50                   	push   %eax
40d9dd:	50                   	push   %eax
40d9de:	50                   	push   %eax
40d9df:	e8 8d f9 ff ff       	call   0x40d371
40d9e4:	83 c4 18             	add    $0x18,%esp
40d9e7:	83 c8 ff             	or     $0xffffffff,%eax
40d9ea:	5e                   	pop    %esi
40d9eb:	5f                   	pop    %edi
40d9ec:	5d                   	pop    %ebp
40d9ed:	c3                   	ret
40d9ee:	83 b9 04 04 00 00 00 	cmpl   $0x0,0x404(%ecx)
40d9f5:	75 06                	jne    0x40d9fd
40d9f7:	b8 00 02 00 00       	mov    $0x200,%eax
40d9fc:	c3                   	ret
40d9fd:	8b 81 00 04 00 00    	mov    0x400(%ecx),%eax
40da03:	d1 e8                	shr    $1,%eax
40da05:	c3                   	ret
40da06:	83 b9 04 04 00 00 00 	cmpl   $0x0,0x404(%ecx)
40da0d:	75 06                	jne    0x40da15
40da0f:	b8 00 01 00 00       	mov    $0x100,%eax
40da14:	c3                   	ret
40da15:	8b 81 00 04 00 00    	mov    0x400(%ecx),%eax
40da1b:	c1 e8 02             	shr    $0x2,%eax
40da1e:	c3                   	ret
40da1f:	8b ff                	mov    %edi,%edi
40da21:	55                   	push   %ebp
40da22:	8b ec                	mov    %esp,%ebp
40da24:	51                   	push   %ecx
40da25:	56                   	push   %esi
40da26:	8b 75 08             	mov    0x8(%ebp),%esi
40da29:	57                   	push   %edi
40da2a:	8b f9                	mov    %ecx,%edi
40da2c:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
40da32:	76 12                	jbe    0x40da46
40da34:	8b 45 0c             	mov    0xc(%ebp),%eax
40da37:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40da3b:	c7 40 18 0c 00 00 00 	movl   $0xc,0x18(%eax)
40da42:	32 c0                	xor    %al,%al
40da44:	eb 54                	jmp    0x40da9a
40da46:	53                   	push   %ebx
40da47:	8d 9f 04 04 00 00    	lea    0x404(%edi),%ebx
40da4d:	03 f6                	add    %esi,%esi
40da4f:	83 3b 00             	cmpl   $0x0,(%ebx)
40da52:	75 08                	jne    0x40da5c
40da54:	81 fe 00 04 00 00    	cmp    $0x400,%esi
40da5a:	76 3b                	jbe    0x40da97
40da5c:	3b b7 00 04 00 00    	cmp    0x400(%edi),%esi
40da62:	76 33                	jbe    0x40da97
40da64:	56                   	push   %esi
40da65:	e8 c6 91 ff ff       	call   0x406c30
40da6a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40da6d:	59                   	pop    %ecx
40da6e:	85 c0                	test   %eax,%eax
40da70:	75 0b                	jne    0x40da7d
40da72:	50                   	push   %eax
40da73:	e8 98 91 ff ff       	call   0x406c10
40da78:	59                   	pop    %ecx
40da79:	32 c0                	xor    %al,%al
40da7b:	eb 1c                	jmp    0x40da99
40da7d:	8d 45 fc             	lea    -0x4(%ebp),%eax
40da80:	8b cb                	mov    %ebx,%ecx
40da82:	50                   	push   %eax
40da83:	e8 35 1a 00 00       	call   0x40f4bd
40da88:	ff 75 fc             	push   -0x4(%ebp)
40da8b:	89 b7 00 04 00 00    	mov    %esi,0x400(%edi)
40da91:	e8 7a 91 ff ff       	call   0x406c10
40da96:	59                   	pop    %ecx
40da97:	b0 01                	mov    $0x1,%al
40da99:	5b                   	pop    %ebx
40da9a:	5f                   	pop    %edi
40da9b:	5e                   	pop    %esi
40da9c:	c9                   	leave
40da9d:	c2 08 00             	ret    $0x8
40daa0:	8b ff                	mov    %edi,%edi
40daa2:	55                   	push   %ebp
40daa3:	8b ec                	mov    %esp,%ebp
40daa5:	51                   	push   %ecx
40daa6:	56                   	push   %esi
40daa7:	8b 75 08             	mov    0x8(%ebp),%esi
40daaa:	57                   	push   %edi
40daab:	8b f9                	mov    %ecx,%edi
40daad:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
40dab3:	76 12                	jbe    0x40dac7
40dab5:	8b 45 0c             	mov    0xc(%ebp),%eax
40dab8:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40dabc:	c7 40 18 0c 00 00 00 	movl   $0xc,0x18(%eax)
40dac3:	32 c0                	xor    %al,%al
40dac5:	eb 55                	jmp    0x40db1c
40dac7:	53                   	push   %ebx
40dac8:	8d 9f 04 04 00 00    	lea    0x404(%edi),%ebx
40dace:	c1 e6 02             	shl    $0x2,%esi
40dad1:	83 3b 00             	cmpl   $0x0,(%ebx)
40dad4:	75 08                	jne    0x40dade
40dad6:	81 fe 00 04 00 00    	cmp    $0x400,%esi
40dadc:	76 3b                	jbe    0x40db19
40dade:	3b b7 00 04 00 00    	cmp    0x400(%edi),%esi
40dae4:	76 33                	jbe    0x40db19
40dae6:	56                   	push   %esi
40dae7:	e8 44 91 ff ff       	call   0x406c30
40daec:	89 45 fc             	mov    %eax,-0x4(%ebp)
40daef:	59                   	pop    %ecx
40daf0:	85 c0                	test   %eax,%eax
40daf2:	75 0b                	jne    0x40daff
40daf4:	50                   	push   %eax
40daf5:	e8 16 91 ff ff       	call   0x406c10
40dafa:	59                   	pop    %ecx
40dafb:	32 c0                	xor    %al,%al