40d521:	83 c8 ff             	or     $0xffffffff,%eax
40d524:	e9 26 01 00 00       	jmp    0x40d64f
40d529:	85 f6                	test   %esi,%esi
40d52b:	74 04                	je     0x40d531
40d52d:	85 c0                	test   %eax,%eax
40d52f:	74 d5                	je     0x40d506
40d531:	8b 55 08             	mov    0x8(%ebp),%edx
40d534:	33 c0                	xor    %eax,%eax
40d536:	57                   	push   %edi
40d537:	8d bd 90 fb ff ff    	lea    -0x470(%ebp),%edi
40d53d:	33 db                	xor    %ebx,%ebx
40d53f:	ab                   	stos   %eax,%es:(%edi)
40d540:	ab                   	stos   %eax,%es:(%edi)
40d541:	ab                   	stos   %eax,%es:(%edi)
40d542:	ab                   	stos   %eax,%es:(%edi)
40d543:	8b c2                	mov    %edx,%eax
40d545:	8b bd a0 fb ff ff    	mov    -0x460(%ebp),%edi
40d54b:	83 e0 02             	and    $0x2,%eax
40d54e:	89 85 8c fb ff ff    	mov    %eax,-0x474(%ebp)
40d554:	0b c3                	or     %ebx,%eax
40d556:	89 bd 90 fb ff ff    	mov    %edi,-0x470(%ebp)
40d55c:	89 b5 94 fb ff ff    	mov    %esi,-0x46c(%ebp)
40d562:	89 9d 98 fb ff ff    	mov    %ebx,-0x468(%ebp)
40d568:	75 0a                	jne    0x40d574
40d56a:	88 9d 9c fb ff ff    	mov    %bl,-0x464(%ebp)
40d570:	85 ff                	test   %edi,%edi
40d572:	75 07                	jne    0x40d57b
40d574:	c6 85 9c fb ff ff 01 	movb   $0x1,-0x464(%ebp)
40d57b:	ff 75 20             	push   0x20(%ebp)
40d57e:	8d 85 90 fb ff ff    	lea    -0x470(%ebp),%eax
40d584:	51                   	push   %ecx
40d585:	ff 75 18             	push   0x18(%ebp)
40d588:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d58e:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d594:	ff 75 0c             	push   0xc(%ebp)
40d597:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
40d59d:	52                   	push   %edx
40d59e:	50                   	push   %eax
40d59f:	e8 93 1e 00 00       	call   0x40f437
40d5a4:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d5aa:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40d5ad:	e8 ae 27 00 00       	call   0x40fd60
40d5b2:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d5b8:	85 ff                	test   %edi,%edi
40d5ba:	74 7f                	je     0x40d63b
40d5bc:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d5bf:	83 e1 01             	and    $0x1,%ecx
40d5c2:	0b cb                	or     %ebx,%ecx
40d5c4:	74 24                	je     0x40d5ea
40d5c6:	85 f6                	test   %esi,%esi
40d5c8:	75 04                	jne    0x40d5ce
40d5ca:	85 c0                	test   %eax,%eax
40d5cc:	75 4c                	jne    0x40d61a
40d5ce:	8b 8d 98 fb ff ff    	mov    -0x468(%ebp),%ecx
40d5d4:	3b ce                	cmp    %esi,%ecx
40d5d6:	74 08                	je     0x40d5e0
40d5d8:	33 c0                	xor    %eax,%eax
40d5da:	66 89 04 4f          	mov    %ax,(%edi,%ecx,2)
40d5de:	eb 5b                	jmp    0x40d63b
40d5e0:	85 c0                	test   %eax,%eax
40d5e2:	78 57                	js     0x40d63b
40d5e4:	3b c6                	cmp    %esi,%eax
40d5e6:	77 32                	ja     0x40d61a
40d5e8:	eb 51                	jmp    0x40d63b
40d5ea:	8b 8d 8c fb ff ff    	mov    -0x474(%ebp),%ecx
40d5f0:	0b cb                	or     %ebx,%ecx
40d5f2:	74 22                	je     0x40d616
40d5f4:	85 f6                	test   %esi,%esi
40d5f6:	74 43                	je     0x40d63b
40d5f8:	85 c0                	test   %eax,%eax
40d5fa:	79 07                	jns    0x40d603
40d5fc:	33 c0                	xor    %eax,%eax
40d5fe:	66 89 07             	mov    %ax,(%edi)
40d601:	eb 38                	jmp    0x40d63b
40d603:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d609:	3b c6                	cmp    %esi,%eax
40d60b:	75 28                	jne    0x40d635
40d60d:	33 c0                	xor    %eax,%eax
40d60f:	66 89 44 77 fe       	mov    %ax,-0x2(%edi,%esi,2)
40d614:	eb 25                	jmp    0x40d63b
40d616:	85 f6                	test   %esi,%esi
40d618:	75 05                	jne    0x40d61f
40d61a:	83 ce ff             	or     $0xffffffff,%esi
40d61d:	eb 22                	jmp    0x40d641
40d61f:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40d625:	3b c6                	cmp    %esi,%eax
40d627:	75 0c                	jne    0x40d635
40d629:	33 c0                	xor    %eax,%eax
40d62b:	6a fe                	push   $0xfffffffe
40d62d:	66 89 44 77 fe       	mov    %ax,-0x2(%edi,%esi,2)
40d632:	5e                   	pop    %esi
40d633:	eb 0c                	jmp    0x40d641
40d635:	33 c9                	xor    %ecx,%ecx
40d637:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
40d63b:	8b b5 a0 fb ff ff    	mov    -0x460(%ebp),%esi
40d641:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
40d647:	e8 57 1e 00 00       	call   0x40f4a3
40d64c:	8b c6                	mov    %esi,%eax
40d64e:	5f                   	pop    %edi
40d64f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d652:	5e                   	pop    %esi
40d653:	33 cd                	xor    %ebp,%ecx
40d655:	5b                   	pop    %ebx
40d656:	e8 4c c6 ff ff       	call   0x409ca7
40d65b:	c9                   	leave
40d65c:	c3                   	ret
40d65d:	8b ff                	mov    %edi,%edi
40d65f:	55                   	push   %ebp
40d660:	8b ec                	mov    %esp,%ebp
40d662:	81 ec 74 04 00 00    	sub    $0x474,%esp
40d668:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
40d66d:	33 c5                	xor    %ebp,%eax
40d66f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d672:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40d676:	8b 45 10             	mov    0x10(%ebp),%eax
40d679:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40d67c:	53                   	push   %ebx
40d67d:	56                   	push   %esi
40d67e:	8b 75 14             	mov    0x14(%ebp),%esi
40d681:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d687:	75 23                	jne    0x40d6ac
40d689:	51                   	push   %ecx
40d68a:	33 db                	xor    %ebx,%ebx
40d68c:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40d690:	53                   	push   %ebx
40d691:	53                   	push   %ebx
40d692:	53                   	push   %ebx
40d693:	53                   	push   %ebx
40d694:	53                   	push   %ebx
40d695:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
40d69c:	e8 d0 fc ff ff       	call   0x40d371
40d6a1:	83 c4 18             	add    $0x18,%esp
40d6a4:	83 c8 ff             	or     $0xffffffff,%eax
40d6a7:	e9 17 01 00 00       	jmp    0x40d7c3
40d6ac:	85 f6                	test   %esi,%esi
40d6ae:	74 04                	je     0x40d6b4
40d6b0:	85 c0                	test   %eax,%eax
40d6b2:	74 d5                	je     0x40d689
40d6b4:	8b 55 08             	mov    0x8(%ebp),%edx
40d6b7:	33 c0                	xor    %eax,%eax
40d6b9:	57                   	push   %edi
40d6ba:	8d bd 90 fb ff ff    	lea    -0x470(%ebp),%edi
40d6c0:	33 db                	xor    %ebx,%ebx
40d6c2:	ab                   	stos   %eax,%es:(%edi)
40d6c3:	ab                   	stos   %eax,%es:(%edi)
40d6c4:	ab                   	stos   %eax,%es:(%edi)
40d6c5:	ab                   	stos   %eax,%es:(%edi)
40d6c6:	8b c2                	mov    %edx,%eax
40d6c8:	8b bd a0 fb ff ff    	mov    -0x460(%ebp),%edi
40d6ce:	83 e0 02             	and    $0x2,%eax
40d6d1:	89 85 8c fb ff ff    	mov    %eax,-0x474(%ebp)
40d6d7:	0b c3                	or     %ebx,%eax
40d6d9:	89 bd 90 fb ff ff    	mov    %edi,-0x470(%ebp)
40d6df:	89 b5 94 fb ff ff    	mov    %esi,-0x46c(%ebp)
40d6e5:	89 9d 98 fb ff ff    	mov    %ebx,-0x468(%ebp)
40d6eb:	75 0a                	jne    0x40d6f7
40d6ed:	88 9d 9c fb ff ff    	mov    %bl,-0x464(%ebp)
40d6f3:	85 ff                	test   %edi,%edi
40d6f5:	75 07                	jne    0x40d6fe
40d6f7:	c6 85 9c fb ff ff 01 	movb   $0x1,-0x464(%ebp)
40d6fe:	ff 75 20             	push   0x20(%ebp)
40d701:	8d 85 90 fb ff ff    	lea    -0x470(%ebp),%eax
40d707:	51                   	push   %ecx
40d708:	ff 75 18             	push   0x18(%ebp)
40d70b:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40d711:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d717:	ff 75 0c             	push   0xc(%ebp)
40d71a:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
40d720:	52                   	push   %edx
40d721:	50                   	push   %eax
40d722:	e8 a9 1c 00 00       	call   0x40f3d0
40d727:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40d72d:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40d730:	e8 57 23 00 00       	call   0x40fa8c
40d735:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
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