40e606:	33 c0                	xor    %eax,%eax
40e608:	8a c3                	mov    %bl,%al
40e60a:	8d 44 87 04          	lea    0x4(%edi,%eax,4),%eax
40e60e:	8b d5                	mov    %ebp,%edx
40e610:	e8 bb fe ff ff       	call   0x40e4d0
40e615:	89 45 00             	mov    %eax,0x0(%ebp)
40e618:	8b 04 24             	mov    (%esp),%eax
40e61b:	89 28                	mov    %ebp,(%eax)
40e61d:	5a                   	pop    %edx
40e61e:	5d                   	pop    %ebp
40e61f:	5f                   	pop    %edi
40e620:	5e                   	pop    %esi
40e621:	5b                   	pop    %ebx
40e622:	c3                   	ret
40e623:	90                   	nop
40e624:	33 c0                	xor    %eax,%eax
40e626:	89 02                	mov    %eax,(%edx)
40e628:	c3                   	ret
40e629:	8d 40 00             	lea    0x0(%eax),%eax
40e62c:	8b 02                	mov    (%edx),%eax
40e62e:	33 c9                	xor    %ecx,%ecx
40e630:	89 48 04             	mov    %ecx,0x4(%eax)
40e633:	8b 02                	mov    (%edx),%eax
40e635:	33 d2                	xor    %edx,%edx
40e637:	89 50 08             	mov    %edx,0x8(%eax)
40e63a:	c3                   	ret
40e63b:	90                   	nop
40e63c:	53                   	push   %ebx
40e63d:	8b d8                	mov    %eax,%ebx
40e63f:	8b c3                	mov    %ebx,%eax
40e641:	e8 4e ff ff ff       	call   0x40e594
40e646:	25 ff 00 00 00       	and    $0xff,%eax
40e64b:	8b 5c 83 04          	mov    0x4(%ebx,%eax,4),%ebx
40e64f:	85 db                	test   %ebx,%ebx
40e651:	74 24                	je     0x40e677
40e653:	8d 43 08             	lea    0x8(%ebx),%eax
40e656:	ba ff ff ff 7f       	mov    $0x7fffffff,%edx
40e65b:	e8 70 fe ff ff       	call   0x40e4d0
40e660:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40e665:	74 0a                	je     0x40e671
40e667:	e8 5c 8b ff ff       	call   0x4071c8
40e66c:	89 43 04             	mov    %eax,0x4(%ebx)
40e66f:	eb 06                	jmp    0x40e677
40e671:	8b 1b                	mov    (%ebx),%ebx
40e673:	85 db                	test   %ebx,%ebx
40e675:	75 dc                	jne    0x40e653
40e677:	8b c3                	mov    %ebx,%eax
40e679:	5b                   	pop    %ebx
40e67a:	c3                   	ret
40e67b:	90                   	nop
40e67c:	53                   	push   %ebx
40e67d:	56                   	push   %esi
40e67e:	84 d2                	test   %dl,%dl
40e680:	74 08                	je     0x40e68a
40e682:	83 c4 f0             	add    $0xfffffff0,%esp
40e685:	e8 52 57 ff ff       	call   0x403ddc
40e68a:	8b da                	mov    %edx,%ebx
40e68c:	8b f0                	mov    %eax,%esi
40e68e:	33 d2                	xor    %edx,%edx
40e690:	8b c6                	mov    %esi,%eax
40e692:	e8 b1 53 ff ff       	call   0x403a48
40e697:	c7 46 0c ff ff 00 00 	movl   $0xffff,0xc(%esi)
40e69e:	6a 00                	push   $0x0
40e6a0:	6a ff                	push   $0xffffffff
40e6a2:	6a ff                	push   $0xffffffff
40e6a4:	6a 00                	push   $0x0
40e6a6:	e8 15 8a ff ff       	call   0x4070c0
40e6ab:	89 46 10             	mov    %eax,0x10(%esi)
40e6ae:	6a 00                	push   $0x0
40e6b0:	6a 00                	push   $0x0
40e6b2:	6a 00                	push   $0x0
40e6b4:	6a 00                	push   $0x0
40e6b6:	e8 05 8a ff ff       	call   0x4070c0
40e6bb:	89 46 14             	mov    %eax,0x14(%esi)
40e6be:	c7 46 18 ff ff ff ff 	movl   $0xffffffff,0x18(%esi)
40e6c5:	b2 01                	mov    $0x1,%dl
40e6c7:	a1 e0 e4 40 00       	mov    0x40e4e0,%eax
40e6cc:	e8 77 53 ff ff       	call   0x403a48
40e6d1:	89 46 20             	mov    %eax,0x20(%esi)
40e6d4:	8b c6                	mov    %esi,%eax
40e6d6:	84 db                	test   %bl,%bl
40e6d8:	74 0f                	je     0x40e6e9
40e6da:	e8 55 57 ff ff       	call   0x403e34
40e6df:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40e6e6:	83 c4 0c             	add    $0xc,%esp
40e6e9:	8b c6                	mov    %esi,%eax
40e6eb:	5e                   	pop    %esi
40e6ec:	5b                   	pop    %ebx
40e6ed:	c3                   	ret
40e6ee:	8b c0                	mov    %eax,%eax
40e6f0:	53                   	push   %ebx
40e6f1:	56                   	push   %esi
40e6f2:	e8 4d 57 ff ff       	call   0x403e44
40e6f7:	8b da                	mov    %edx,%ebx
40e6f9:	8b f0                	mov    %eax,%esi
40e6fb:	8b c6                	mov    %esi,%eax
40e6fd:	e8 7a 00 00 00       	call   0x40e77c
40e702:	8b d3                	mov    %ebx,%edx
40e704:	80 e2 fc             	and    $0xfc,%dl
40e707:	8b c6                	mov    %esi,%eax
40e709:	e8 5a 53 ff ff       	call   0x403a68
40e70e:	8b 46 10             	mov    0x10(%esi),%eax
40e711:	50                   	push   %eax
40e712:	e8 89 89 ff ff       	call   0x4070a0
40e717:	8b 46 14             	mov    0x14(%esi),%eax
40e71a:	50                   	push   %eax
40e71b:	e8 80 89 ff ff       	call   0x4070a0
40e720:	8b 46 20             	mov    0x20(%esi),%eax
40e723:	e8 50 53 ff ff       	call   0x403a78
40e728:	84 db                	test   %bl,%bl
40e72a:	7e 07                	jle    0x40e733
40e72c:	8b c6                	mov    %esi,%eax
40e72e:	e8 f9 56 ff ff       	call   0x403e2c
40e733:	5e                   	pop    %esi
40e734:	5b                   	pop    %ebx
40e735:	c3                   	ret
40e736:	8b c0                	mov    %eax,%eax
40e738:	8b 40 10             	mov    0x10(%eax),%eax
40e73b:	50                   	push   %eax
40e73c:	e8 27 8c ff ff       	call   0x407368
40e741:	c3                   	ret
40e742:	8b c0                	mov    %eax,%eax
40e744:	8b 40 10             	mov    0x10(%eax),%eax
40e747:	50                   	push   %eax
40e748:	e8 3b 8c ff ff       	call   0x407388
40e74d:	c3                   	ret
40e74e:	8b c0                	mov    %eax,%eax
40e750:	8b 40 14             	mov    0x14(%eax),%eax
40e753:	50                   	push   %eax
40e754:	e8 2f 8c ff ff       	call   0x407388
40e759:	c3                   	ret
40e75a:	8b c0                	mov    %eax,%eax
40e75c:	8b 50 18             	mov    0x18(%eax),%edx
40e75f:	52                   	push   %edx
40e760:	8b 40 10             	mov    0x10(%eax),%eax
40e763:	50                   	push   %eax
40e764:	e8 7f 8c ff ff       	call   0x4073e8
40e769:	c3                   	ret
40e76a:	8b c0                	mov    %eax,%eax
40e76c:	8b 50 18             	mov    0x18(%eax),%edx
40e76f:	52                   	push   %edx
40e770:	8b 40 14             	mov    0x14(%eax),%eax
40e773:	50                   	push   %eax
40e774:	e8 6f 8c ff ff       	call   0x4073e8
40e779:	c3                   	ret
40e77a:	8b c0                	mov    %eax,%eax
40e77c:	55                   	push   %ebp
40e77d:	8b ec                	mov    %esp,%ebp
40e77f:	83 c4 ec             	add    $0xffffffec,%esp
40e782:	53                   	push   %ebx
40e783:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e786:	b3 01                	mov    $0x1,%bl
40e788:	e8 3b 8a ff ff       	call   0x4071c8
40e78d:	89 45 f0             	mov    %eax,-0x10(%ebp)
40e790:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e793:	8b 40 24             	mov    0x24(%eax),%eax
40e796:	3b 45 f0             	cmp    -0x10(%ebp),%eax
40e799:	0f 84 d7 00 00 00    	je     0x40e876
40e79f:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e7a2:	e8 91 ff ff ff       	call   0x40e738
40e7a7:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e7aa:	8b 40 28             	mov    0x28(%eax),%eax
40e7ad:	89 45 ec             	mov    %eax,-0x14(%ebp)
40e7b0:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e7b3:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e7b6:	8b 40 20             	mov    0x20(%eax),%eax
40e7b9:	e8 ee fd ff ff       	call   0x40e5ac
40e7be:	33 c0                	xor    %eax,%eax
40e7c0:	55                   	push   %ebp
40e7c1:	68 04 e8 40 00       	push   $0x40e804
40e7c6:	64 ff 30             	push   %fs:(%eax)
40e7c9:	64 89 20             	mov    %esp,%fs:(%eax)
40e7cc:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e7cf:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40e7d3:	0f 97 45 f7          	seta   -0x9(%ebp)
40e7d7:	80 7d f7 00          	cmpb   $0x0,-0x9(%ebp)
40e7db:	74 0b                	je     0x40e7e8
40e7dd:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e7e0:	83 c0 0c             	add    $0xc,%eax
40e7e3:	e8 d0 fc ff ff       	call   0x40e4b8
40e7e8:	33 c0                	xor    %eax,%eax
40e7ea:	5a                   	pop    %edx
40e7eb:	59                   	pop    %ecx
40e7ec:	59                   	pop    %ecx
40e7ed:	64 89 10             	mov    %edx,%fs:(%eax)
40e7f0:	68 33 e8 40 00       	push   $0x40e833
40e7f5:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e7f8:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e7fb:	8b 40 20             	mov    0x20(%eax),%eax
40e7fe:	e8 21 fe ff ff       	call   0x40e624
40e803:	c3                   	ret
40e804:	e9 03 5a ff ff       	jmp    0x40420c
40e809:	eb ea                	jmp    0x40e7f5
40e80b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e80e:	83 c0 0c             	add    $0xc,%eax
40e811:	ba ff ff 00 00       	mov    $0xffff,%edx
40e816:	e8 bd fc ff ff       	call   0x40e4d8
40e81b:	05 ff ff 00 00       	add    $0xffff,%eax
40e820:	85 c0                	test   %eax,%eax
40e822:	7f 07                	jg     0x40e82b
40e824:	3d 02 00 fe ff       	cmp    $0xfffe0002,%eax
40e829:	7f 08                	jg     0x40e833
40e82b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e82e:	e8 39 ff ff ff       	call   0x40e76c
40e833:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e836:	83 c0 0c             	add    $0xc,%eax
40e839:	ba 01 00 ff ff       	mov    $0xffff0001,%edx
40e83e:	e8 95 fc ff ff       	call   0x40e4d8
40e843:	2d ff ff 00 00       	sub    $0xffff,%eax
40e848:	75 c1                	jne    0x40e80b
40e84a:	80 7d f7 00          	cmpb   $0x0,-0x9(%ebp)
40e84e:	74 0b                	je     0x40e85b
40e850:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e853:	83 c0 0c             	add    $0xc,%eax
40e856:	e8 69 fc ff ff       	call   0x40e4c4
40e85b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e85e:	8b 55 f0             	mov    -0x10(%ebp),%edx
40e861:	89 50 24             	mov    %edx,0x24(%eax)
40e864:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e867:	83 c0 28             	add    $0x28,%eax
40e86a:	e8 49 fc ff ff       	call   0x40e4b8
40e86f:	48                   	dec    %eax
40e870:	3b 45 ec             	cmp    -0x14(%ebp),%eax
40e873:	0f 94 c3             	sete   %bl
40e876:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e879:	ff 40 1c             	incl   0x1c(%eax)
40e87c:	8b c3                	mov    %ebx,%eax
40e87e:	5b                   	pop    %ebx
40e87f:	8b e5                	mov    %ebp,%esp
40e881:	5d                   	pop    %ebp
40e882:	c3                   	ret
40e883:	90                   	nop
40e884:	55                   	push   %ebp
40e885:	8b ec                	mov    %esp,%ebp
40e887:	83 c4 f8             	add    $0xfffffff8,%esp
40e88a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e88d:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e890:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e893:	8b 40 20             	mov    0x20(%eax),%eax
40e896:	e8 11 fd ff ff       	call   0x40e5ac
40e89b:	33 c0                	xor    %eax,%eax
40e89d:	55                   	push   %ebp
40e89e:	68 1a e9 40 00       	push   $0x40e91a
40e8a3:	64 ff 30             	push   %fs:(%eax)
40e8a6:	64 89 20             	mov    %esp,%fs:(%eax)
40e8a9:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8ac:	ff 48 1c             	decl   0x1c(%eax)
40e8af:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8b2:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
40e8b6:	75 2f                	jne    0x40e8e7
40e8b8:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8bb:	33 d2                	xor    %edx,%edx
40e8bd:	89 50 24             	mov    %edx,0x24(%eax)
40e8c0:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8c3:	83 c0 0c             	add    $0xc,%eax
40e8c6:	ba ff ff 00 00       	mov    $0xffff,%edx
40e8cb:	e8 08 fc ff ff       	call   0x40e4d8
40e8d0:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8d3:	e8 78 fe ff ff       	call   0x40e750
40e8d8:	6a 00                	push   $0x0
40e8da:	e8 8d fa ff ff       	call   0x40e36c
40e8df:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8e2:	e8 5d fe ff ff       	call   0x40e744
40e8e7:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e8ea:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40e8ee:	75 0e                	jne    0x40e8fe
40e8f0:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e8f3:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8f6:	8b 40 20             	mov    0x20(%eax),%eax
40e8f9:	e8 2e fd ff ff       	call   0x40e62c
40e8fe:	33 c0                	xor    %eax,%eax
40e900:	5a                   	pop    %edx
40e901:	59                   	pop    %ecx
40e902:	59                   	pop    %ecx
40e903:	64 89 10             	mov    %edx,%fs:(%eax)
40e906:	68 21 e9 40 00       	push   $0x40e921
40e90b:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e90e:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e911:	8b 40 20             	mov    0x20(%eax),%eax
40e914:	e8 0b fd ff ff       	call   0x40e624
40e919:	c3                   	ret
40e91a:	e9 ed 58 ff ff       	jmp    0x40420c
40e91f:	eb ea                	jmp    0x40e90b
40e921:	59                   	pop    %ecx
40e922:	59                   	pop    %ecx
40e923:	5d                   	pop    %ebp
40e924:	c3                   	ret
40e925:	8d 40 00             	lea    0x0(%eax),%eax
40e928:	55                   	push   %ebp
40e929:	8b ec                	mov    %esp,%ebp
40e92b:	83 c4 f8             	add    $0xfffffff8,%esp
40e92e:	53                   	push   %ebx
40e92f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e932:	33 db                	xor    %ebx,%ebx
40e934:	e8 8f 88 ff ff       	call   0x4071c8
40e939:	8b 55 fc             	mov    -0x4(%ebp),%edx
40e93c:	3b 42 24             	cmp    0x24(%edx),%eax
40e93f:	74 26                	je     0x40e967
40e941:	eb 13                	jmp    0x40e956
40e943:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e946:	83 c0 0c             	add    $0xc,%eax
40e949:	e8 6a fb ff ff       	call   0x40e4b8
40e94e:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e951:	e8 06 fe ff ff       	call   0x40e75c
40e956:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e959:	83 c0 0c             	add    $0xc,%eax
40e95c:	e8 63 fb ff ff       	call   0x40e4c4
40e961:	85 c0                	test   %eax,%eax
40e963:	7e de                	jle    0x40e943
40e965:	b3 01                	mov    $0x1,%bl
40e967:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e96a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e96d:	8b 40 20             	mov    0x20(%eax),%eax
40e970:	e8 37 fc ff ff       	call   0x40e5ac
40e975:	33 c0                	xor    %eax,%eax
40e977:	55                   	push   %ebp
40e978:	68 be e9 40 00       	push   $0x40e9be
40e97d:	64 ff 30             	push   %fs:(%eax)
40e980:	64 89 20             	mov    %esp,%fs:(%eax)
40e983:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e986:	ff 40 0c             	incl   0xc(%eax)
40e989:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e98c:	83 78 0c 01          	cmpl   $0x1,0xc(%eax)
40e990:	0f 97 c0             	seta   %al
40e993:	84 d8                	test   %bl,%al
40e995:	74 0b                	je     0x40e9a2
40e997:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e99a:	83 c0 0c             	add    $0xc,%eax
40e99d:	e8 16 fb ff ff       	call   0x40e4b8
40e9a2:	33 c0                	xor    %eax,%eax
40e9a4:	5a                   	pop    %edx
40e9a5:	59                   	pop    %ecx
40e9a6:	59                   	pop    %ecx
40e9a7:	64 89 10             	mov    %edx,%fs:(%eax)
40e9aa:	68 c5 e9 40 00       	push   $0x40e9c5
40e9af:	8d 55 f8             	lea    -0x8(%ebp),%edx
40e9b2:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e9b5:	8b 40 20             	mov    0x20(%eax),%eax
40e9b8:	e8 67 fc ff ff       	call   0x40e624
40e9bd:	c3                   	ret
40e9be:	e9 49 58 ff ff       	jmp    0x40420c
40e9c3:	eb ea                	jmp    0x40e9af
40e9c5:	5b                   	pop    %ebx
40e9c6:	59                   	pop    %ecx
40e9c7:	59                   	pop    %ecx
40e9c8:	5d                   	pop    %ebp
40e9c9:	c3                   	ret
40e9ca:	8b c0                	mov    %eax,%eax
40e9cc:	55                   	push   %ebp
40e9cd:	8b ec                	mov    %esp,%ebp