46e6fe:	51                   	push   %ecx
46e6ff:	e8 ac aa f9 ff       	call   0x4091b0
46e704:	33 c0                	xor    %eax,%eax
46e706:	89 5c 24 34          	mov    %ebx,0x34(%esp)
46e70a:	40                   	inc    %eax
46e70b:	89 74 24 3c          	mov    %esi,0x3c(%esp)
46e70f:	56                   	push   %esi
46e710:	50                   	push   %eax
46e711:	89 44 24 48          	mov    %eax,0x48(%esp)
46e715:	8d 44 24 3c          	lea    0x3c(%esp),%eax
46e719:	50                   	push   %eax
46e71a:	ff 74 24 2c          	push   0x2c(%esp)
46e71e:	e8 1d a9 f9 ff       	call   0x409040
46e723:	83 c4 1c             	add    $0x1c,%esp
46e726:	8d 4c 24 28          	lea    0x28(%esp),%ecx
46e72a:	e8 f1 b2 f9 ff       	call   0x409a20
46e72f:	8d 4c 24 28          	lea    0x28(%esp),%ecx
46e733:	e8 8f 90 f9 ff       	call   0x4077c7
46e738:	85 db                	test   %ebx,%ebx
46e73a:	8b 5c 24 20          	mov    0x20(%esp),%ebx
46e73e:	7e 57                	jle    0x46e797
46e740:	8d 4c 24 28          	lea    0x28(%esp),%ecx
46e744:	e8 a3 97 f9 ff       	call   0x407eec
46e749:	8b 47 04             	mov    0x4(%edi),%eax
46e74c:	8d 4c 24 28          	lea    0x28(%esp),%ecx
46e750:	2b 07                	sub    (%edi),%eax
46e752:	50                   	push   %eax
46e753:	ff 37                	push   (%edi)
46e755:	53                   	push   %ebx
46e756:	e8 52 91 f9 ff       	call   0x4078ad
46e75b:	8d 44 24 28          	lea    0x28(%esp),%eax
46e75f:	50                   	push   %eax
46e760:	8d 4c 24 4c          	lea    0x4c(%esp),%ecx
46e764:	e8 81 ac f9 ff       	call   0x4093ea
46e769:	46                   	inc    %esi
46e76a:	8d 44 24 48          	lea    0x48(%esp),%eax
46e76e:	56                   	push   %esi
46e76f:	6a 01                	push   $0x1
46e771:	50                   	push   %eax
46e772:	ff 74 24 20          	push   0x20(%esp)
46e776:	e8 c5 a8 f9 ff       	call   0x409040
46e77b:	83 c4 10             	add    $0x10,%esp
46e77e:	8d 4c 24 48          	lea    0x48(%esp),%ecx
46e782:	e8 99 b2 f9 ff       	call   0x409a20
46e787:	57                   	push   %edi
46e788:	8b 7f 08             	mov    0x8(%edi),%edi
46e78b:	e8 dc 28 fb ff       	call   0x42106c
46e790:	59                   	pop    %ecx
46e791:	3b 74 24 10          	cmp    0x10(%esp),%esi
46e795:	7c a9                	jl     0x46e740
46e797:	8d 4c 24 28          	lea    0x28(%esp),%ecx
46e79b:	e8 c4 72 f9 ff       	call   0x405a64
46e7a0:	eb 10                	jmp    0x46e7b2
46e7a2:	8b 07                	mov    (%edi),%eax
46e7a4:	6a 00                	push   $0x0
46e7a6:	6a 01                	push   $0x1
46e7a8:	8b 48 04             	mov    0x4(%eax),%ecx
46e7ab:	03 cf                	add    %edi,%ecx
46e7ad:	e8 f1 82 fe ff       	call   0x456aa3
46e7b2:	8b 44 24 24          	mov    0x24(%esp),%eax
46e7b6:	ff 08                	decl   (%eax)
46e7b8:	75 0e                	jne    0x46e7c8
46e7ba:	50                   	push   %eax
46e7bb:	e8 ac 28 fb ff       	call   0x42106c
46e7c0:	53                   	push   %ebx
46e7c1:	e8 a6 28 fb ff       	call   0x42106c
46e7c6:	59                   	pop    %ecx
46e7c7:	59                   	pop    %ecx
46e7c8:	8d 4c 24 38          	lea    0x38(%esp),%ecx
46e7cc:	e8 93 72 f9 ff       	call   0x405a64
46e7d1:	5f                   	pop    %edi
46e7d2:	5e                   	pop    %esi
46e7d3:	33 c0                	xor    %eax,%eax
46e7d5:	5b                   	pop    %ebx
46e7d6:	8b e5                	mov    %ebp,%esp
46e7d8:	5d                   	pop    %ebp
46e7d9:	c2 08 00             	ret    $0x8
46e7dc:	55                   	push   %ebp
46e7dd:	8b ec                	mov    %esp,%ebp
46e7df:	83 ec 24             	sub    $0x24,%esp
46e7e2:	53                   	push   %ebx
46e7e3:	56                   	push   %esi
46e7e4:	57                   	push   %edi
46e7e5:	8b 7d 0c             	mov    0xc(%ebp),%edi
46e7e8:	89 4d fc             	mov    %ecx,-0x4(%ebp)
46e7eb:	8b cf                	mov    %edi,%ecx
46e7ed:	e8 2e b2 f9 ff       	call   0x409a20
46e7f2:	8b 5d 08             	mov    0x8(%ebp),%ebx
46e7f5:	83 27 00             	andl   $0x0,(%edi)
46e7f8:	c7 47 0c 01 00 00 00 	movl   $0x1,0xc(%edi)
46e7ff:	c6 45 0f 00          	movb   $0x0,0xf(%ebp)
46e803:	83 7b 08 03          	cmpl   $0x3,0x8(%ebx)
46e807:	76 11                	jbe    0x46e81a
46e809:	8b 43 04             	mov    0x4(%ebx),%eax
46e80c:	8b 48 0c             	mov    0xc(%eax),%ecx
46e80f:	e8 88 b4 f9 ff       	call   0x409c9c
46e814:	85 c0                	test   %eax,%eax
46e816:	0f 9f 45 0f          	setg   0xf(%ebp)
46e81a:	8b 43 04             	mov    0x4(%ebx),%eax
46e81d:	8b 30                	mov    (%eax),%esi
46e81f:	8b ce                	mov    %esi,%ecx
46e821:	e8 71 b1 f9 ff       	call   0x409997
46e826:	8b 4e 08             	mov    0x8(%esi),%ecx
46e829:	8b 01                	mov    (%ecx),%eax
46e82b:	89 45 dc             	mov    %eax,-0x24(%ebp)
46e82e:	8b 41 04             	mov    0x4(%ecx),%eax
46e831:	89 45 e0             	mov    %eax,-0x20(%ebp)
46e834:	8b 41 08             	mov    0x8(%ecx),%eax
46e837:	89 45 e4             	mov    %eax,-0x1c(%ebp)
46e83a:	8b 41 0c             	mov    0xc(%ecx),%eax
46e83d:	89 45 e8             	mov    %eax,-0x18(%ebp)
46e840:	ff 00                	incl   (%eax)
46e842:	8b 43 04             	mov    0x4(%ebx),%eax
46e845:	8b 30                	mov    (%eax),%esi
46e847:	8b ce                	mov    %esi,%ecx
46e849:	e8 49 b1 f9 ff       	call   0x409997
46e84e:	8b 4e 08             	mov    0x8(%esi),%ecx
46e851:	8d 55 dc             	lea    -0x24(%ebp),%edx
46e854:	e8 55 60 f9 ff       	call   0x4048ae
46e859:	68 fe ff 00 00       	push   $0xfffe
46e85e:	e8 93 27 fb ff       	call   0x420ff6
46e863:	59                   	pop    %ecx
46e864:	50                   	push   %eax
46e865:	8d 4d ec             	lea    -0x14(%ebp),%ecx
46e868:	e8 21 6b f9 ff       	call   0x40538e
46e86d:	8b 43 04             	mov    0x4(%ebx),%eax
46e870:	8b 70 04             	mov    0x4(%eax),%esi
46e873:	8b ce                	mov    %esi,%ecx
46e875:	e8 1d b1 f9 ff       	call   0x409997
46e87a:	ff 75 dc             	push   -0x24(%ebp)
46e87d:	8b 46 08             	mov    0x8(%esi),%eax
46e880:	68 ff 7f 00 00       	push   $0x7fff
46e885:	ff 75 ec             	push   -0x14(%ebp)
46e888:	ff 30                	push   (%eax)
46e88a:	ff 15 9c f2 48 00    	call   *0x48f29c
46e890:	85 c0                	test   %eax,%eax
46e892:	0f 84 98 00 00 00    	je     0x46e930
46e898:	8b 43 04             	mov    0x4(%ebx),%eax
46e89b:	8b 70 08             	mov    0x8(%eax),%esi
46e89e:	8b ce                	mov    %esi,%ecx
46e8a0:	e8 f2 b0 f9 ff       	call   0x409997
46e8a5:	ff 75 dc             	push   -0x24(%ebp)
46e8a8:	8b 46 08             	mov    0x8(%esi),%eax
46e8ab:	8d 4d f4             	lea    -0xc(%ebp),%ecx
46e8ae:	6a 03                	push   $0x3
46e8b0:	51                   	push   %ecx
46e8b1:	ff 30                	push   (%eax)
46e8b3:	ff 15 9c f2 48 00    	call   *0x48f29c
46e8b9:	85 c0                	test   %eax,%eax
46e8bb:	74 1d                	je     0x46e8da
46e8bd:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
46e8c1:	75 17                	jne    0x46e8da
46e8c3:	8b 55 fc             	mov    -0x4(%ebp),%edx
46e8c6:	33 c0                	xor    %eax,%eax
46e8c8:	40                   	inc    %eax
46e8c9:	6a 00                	push   $0x0
46e8cb:	50                   	push   %eax
46e8cc:	8b 02                	mov    (%edx),%eax
46e8ce:	8b 48 04             	mov    0x4(%eax),%ecx
46e8d1:	03 ca                	add    %edx,%ecx
46e8d3:	e8 cb 81 fe ff       	call   0x456aa3
46e8d8:	eb 56                	jmp    0x46e930
46e8da:	8b 43 04             	mov    0x4(%ebx),%eax
46e8dd:	8b 70 08             	mov    0x8(%eax),%esi
46e8e0:	8b ce                	mov    %esi,%ecx
46e8e2:	e8 b0 b0 f9 ff       	call   0x409997
46e8e7:	ff 75 dc             	push   -0x24(%ebp)
46e8ea:	8b 46 08             	mov    0x8(%esi),%eax
46e8ed:	ff 75 ec             	push   -0x14(%ebp)
46e8f0:	ff 30                	push   (%eax)
46e8f2:	ff 15 a0 f2 48 00    	call   *0x48f2a0
46e8f8:	8b 43 04             	mov    0x4(%ebx),%eax
46e8fb:	8b 70 04             	mov    0x4(%eax),%esi
46e8fe:	8b ce                	mov    %esi,%ecx
46e900:	e8 92 b0 f9 ff       	call   0x409997
46e905:	ff 75 dc             	push   -0x24(%ebp)
46e908:	8b 46 08             	mov    0x8(%esi),%eax
46e90b:	33 db                	xor    %ebx,%ebx
46e90d:	8b 35 98 f2 48 00    	mov    0x48f298,%esi
46e913:	53                   	push   %ebx
46e914:	53                   	push   %ebx
46e915:	ff 30                	push   (%eax)
46e917:	ff d6                	call   *%esi
46e919:	ff 75 dc             	push   -0x24(%ebp)
46e91c:	53                   	push   %ebx
46e91d:	53                   	push   %ebx
46e91e:	53                   	push   %ebx
46e91f:	ff d6                	call   *%esi
46e921:	8b cf                	mov    %edi,%ecx
46e923:	e8 f8 b0 f9 ff       	call   0x409a20
46e928:	33 c0                	xor    %eax,%eax
46e92a:	40                   	inc    %eax
46e92b:	89 47 0c             	mov    %eax,0xc(%edi)
46e92e:	89 07                	mov    %eax,(%edi)
46e930:	8b 45 f0             	mov    -0x10(%ebp),%eax
46e933:	5f                   	pop    %edi
46e934:	5e                   	pop    %esi
46e935:	5b                   	pop    %ebx
46e936:	ff 08                	decl   (%eax)
46e938:	75 10                	jne    0x46e94a
46e93a:	50                   	push   %eax
46e93b:	e8 2c 27 fb ff       	call   0x42106c
46e940:	ff 75 ec             	push   -0x14(%ebp)
46e943:	e8 24 27 fb ff       	call   0x42106c
46e948:	59                   	pop    %ecx
46e949:	59                   	pop    %ecx
46e94a:	8d 4d dc             	lea    -0x24(%ebp),%ecx
46e94d:	e8 12 71 f9 ff       	call   0x405a64
46e952:	33 c0                	xor    %eax,%eax
46e954:	8b e5                	mov    %ebp,%esp
46e956:	5d                   	pop    %ebp
46e957:	c2 08 00             	ret    $0x8
46e95a:	55                   	push   %ebp
46e95b:	8b ec                	mov    %esp,%ebp
46e95d:	83 ec 10             	sub    $0x10,%esp
46e960:	53                   	push   %ebx
46e961:	56                   	push   %esi
46e962:	57                   	push   %edi
46e963:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46e966:	e8 5c 8e f9 ff       	call   0x4077c7
46e96b:	8b 7d 08             	mov    0x8(%ebp),%edi
46e96e:	8b 47 04             	mov    0x4(%edi),%eax
46e971:	8b 30                	mov    (%eax),%esi
46e973:	8b ce                	mov    %esi,%ecx
46e975:	e8 1d b0 f9 ff       	call   0x409997
46e97a:	8b 4e 08             	mov    0x8(%esi),%ecx
46e97d:	8d 55 f0             	lea    -0x10(%ebp),%edx
46e980:	e8 29 5f f9 ff       	call   0x4048ae
46e985:	8b 47 04             	mov    0x4(%edi),%eax
46e988:	8b 70 0c             	mov    0xc(%eax),%esi
46e98b:	8b ce                	mov    %esi,%ecx
46e98d:	e8 05 b0 f9 ff       	call   0x409997
46e992:	8b 46 08             	mov    0x8(%esi),%eax
46e995:	8b 18                	mov    (%eax),%ebx
46e997:	8b 47 04             	mov    0x4(%edi),%eax
46e99a:	8b 70 08             	mov    0x8(%eax),%esi
46e99d:	8b ce                	mov    %esi,%ecx
46e99f:	e8 f3 af f9 ff       	call   0x409997
46e9a4:	8b 46 08             	mov    0x8(%esi),%eax
46e9a7:	8b 38                	mov    (%eax),%edi
46e9a9:	8b 45 08             	mov    0x8(%ebp),%eax
46e9ac:	8b 40 04             	mov    0x4(%eax),%eax
46e9af:	8b 70 04             	mov    0x4(%eax),%esi
46e9b2:	8b ce                	mov    %esi,%ecx
46e9b4:	e8 de af f9 ff       	call   0x409997
46e9b9:	ff 75 f0             	push   -0x10(%ebp)
46e9bc:	8b 46 08             	mov    0x8(%esi),%eax
46e9bf:	8b 35 98 f2 48 00    	mov    0x48f298,%esi
46e9c5:	53                   	push   %ebx
46e9c6:	57                   	push   %edi
46e9c7:	ff 30                	push   (%eax)
46e9c9:	ff d6                	call   *%esi
46e9cb:	85 c0                	test   %eax,%eax
46e9cd:	74 0c                	je     0x46e9db
46e9cf:	ff 75 f0             	push   -0x10(%ebp)
46e9d2:	33 c0                	xor    %eax,%eax
46e9d4:	50                   	push   %eax
46e9d5:	50                   	push   %eax
46e9d6:	50                   	push   %eax
46e9d7:	ff d6                	call   *%esi
46e9d9:	eb 14                	jmp    0x46e9ef
46e9db:	8b 75 0c             	mov    0xc(%ebp),%esi
46e9de:	8b ce                	mov    %esi,%ecx
46e9e0:	e8 3b b0 f9 ff       	call   0x409a20
46e9e5:	83 26 00             	andl   $0x0,(%esi)
46e9e8:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46e9ef:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46e9f2:	e8 6d 70 f9 ff       	call   0x405a64
46e9f7:	5f                   	pop    %edi
46e9f8:	5e                   	pop    %esi
46e9f9:	33 c0                	xor    %eax,%eax
46e9fb:	5b                   	pop    %ebx
46e9fc:	8b e5                	mov    %ebp,%esp
46e9fe:	5d                   	pop    %ebp
46e9ff:	c2 08 00             	ret    $0x8
46ea02:	55                   	push   %ebp
46ea03:	8b ec                	mov    %esp,%ebp
46ea05:	83 ec 20             	sub    $0x20,%esp
46ea08:	53                   	push   %ebx
46ea09:	8b 5d 0c             	mov    0xc(%ebp),%ebx
46ea0c:	56                   	push   %esi
46ea0d:	57                   	push   %edi
46ea0e:	8b f9                	mov    %ecx,%edi
46ea10:	8b cb                	mov    %ebx,%ecx
46ea12:	e8 09 b0 f9 ff       	call   0x409a20
46ea17:	83 23 00             	andl   $0x0,(%ebx)
46ea1a:	8d 4d e0             	lea    -0x20(%ebp),%ecx
46ea1d:	c7 43 0c 01 00 00 00 	movl   $0x1,0xc(%ebx)
46ea24:	e8 9e 8d f9 ff       	call   0x4077c7
46ea29:	8b 5d 08             	mov    0x8(%ebp),%ebx
46ea2c:	8b 43 04             	mov    0x4(%ebx),%eax
46ea2f:	8b 30                	mov    (%eax),%esi
46ea31:	8b ce                	mov    %esi,%ecx
46ea33:	e8 5f af f9 ff       	call   0x409997
46ea38:	8b 4e 08             	mov    0x8(%esi),%ecx
46ea3b:	8d 55 e0             	lea    -0x20(%ebp),%edx
46ea3e:	e8 6b 5e f9 ff       	call   0x4048ae
46ea43:	8b 53 04             	mov    0x4(%ebx),%edx
46ea46:	6a 02                	push   $0x2
46ea48:	5b                   	pop    %ebx
46ea49:	8b 72 08             	mov    0x8(%edx),%esi
46ea4c:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
46ea50:	0f 85 89 01 00 00    	jne    0x46ebdf
46ea56:	8b 06                	mov    (%esi),%eax
46ea58:	8b 00                	mov    (%eax),%eax
46ea5a:	39 98 0c 01 00 00    	cmp    %ebx,0x10c(%eax)
46ea60:	0f 85 79 01 00 00    	jne    0x46ebdf
46ea66:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
46ea6a:	75 04                	jne    0x46ea70
46ea6c:	8b 0e                	mov    (%esi),%ecx
46ea6e:	eb 02                	jmp    0x46ea72
46ea70:	33 c9                	xor    %ecx,%ecx
46ea72:	53                   	push   %ebx
46ea73:	e8 f3 a3 f9 ff       	call   0x408e6b
46ea78:	3b c3                	cmp    %ebx,%eax
46ea7a:	0f 85 5f 01 00 00    	jne    0x46ebdf
46ea80:	8b 7d 08             	mov    0x8(%ebp),%edi
46ea83:	33 db                	xor    %ebx,%ebx
46ea85:	43                   	inc    %ebx
46ea86:	89 5d f4             	mov    %ebx,-0xc(%ebp)
46ea89:	83 7f 08 04          	cmpl   $0x4,0x8(%edi)
46ea8d:	72 17                	jb     0x46eaa6
46ea8f:	8b 4a 0c             	mov    0xc(%edx),%ecx
46ea92:	e8 05 b2 f9 ff       	call   0x409c9c
46ea97:	8b d8                	mov    %eax,%ebx
46ea99:	89 5d f4             	mov    %ebx,-0xc(%ebp)
46ea9c:	85 db                	test   %ebx,%ebx
46ea9e:	79 06                	jns    0x46eaa6
46eaa0:	33 db                	xor    %ebx,%ebx
46eaa2:	43                   	inc    %ebx
46eaa3:	89 5d f4             	mov    %ebx,-0xc(%ebp)
46eaa6:	8b 47 04             	mov    0x4(%edi),%eax
46eaa9:	33 f6                	xor    %esi,%esi
46eaab:	89 75 f0             	mov    %esi,-0x10(%ebp)
46eaae:	8b 40 08             	mov    0x8(%eax),%eax
46eab1:	83 78 0c 05          	cmpl   $0x5,0xc(%eax)
46eab5:	75 07                	jne    0x46eabe
46eab7:	8b 00                	mov    (%eax),%eax
46eab9:	89 45 fc             	mov    %eax,-0x4(%ebp)
46eabc:	eb 03                	jmp    0x46eac1
46eabe:	21 75 fc             	and    %esi,-0x4(%ebp)
46eac1:	8b d3                	mov    %ebx,%edx
46eac3:	8b 5d fc             	mov    -0x4(%ebp),%ebx
46eac6:	6a 01                	push   $0x1
46eac8:	8b cb                	mov    %ebx,%ecx
46eaca:	89 55 f8             	mov    %edx,-0x8(%ebp)
46eacd:	e8 99 a3 f9 ff       	call   0x408e6b
46ead2:	3b d0                	cmp    %eax,%edx
46ead4:	7d 53                	jge    0x46eb29
46ead6:	6a 00                	push   $0x0