40d7ad:	85 c9                	test   %ecx,%ecx
40d7af:	74 27                	je     0x40d7d8
40d7b1:	8b 54 24 24          	mov    0x24(%esp),%edx
40d7b5:	52                   	push   %edx
40d7b6:	8b 54 24 24          	mov    0x24(%esp),%edx
40d7ba:	52                   	push   %edx
40d7bb:	8b 54 24 24          	mov    0x24(%esp),%edx
40d7bf:	52                   	push   %edx
40d7c0:	8b 54 24 20          	mov    0x20(%esp),%edx
40d7c4:	56                   	push   %esi
40d7c5:	52                   	push   %edx
40d7c6:	8b 54 24 24          	mov    0x24(%esp),%edx
40d7ca:	52                   	push   %edx
40d7cb:	8b 54 24 24          	mov    0x24(%esp),%edx
40d7cf:	52                   	push   %edx
40d7d0:	50                   	push   %eax
40d7d1:	ff d1                	call   *%ecx
40d7d3:	83 c4 20             	add    $0x20,%esp
40d7d6:	5e                   	pop    %esi
40d7d7:	c3                   	ret
40d7d8:	8b 4c 24 20          	mov    0x20(%esp),%ecx
40d7dc:	8b 54 24 1c          	mov    0x1c(%esp),%edx
40d7e0:	51                   	push   %ecx
40d7e1:	8b 4c 24 28          	mov    0x28(%esp),%ecx
40d7e5:	52                   	push   %edx
40d7e6:	8b 54 24 1c          	mov    0x1c(%esp),%edx
40d7ea:	51                   	push   %ecx
40d7eb:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40d7ef:	56                   	push   %esi
40d7f0:	52                   	push   %edx
40d7f1:	8b 54 24 20          	mov    0x20(%esp),%edx
40d7f5:	51                   	push   %ecx
40d7f6:	52                   	push   %edx
40d7f7:	50                   	push   %eax
40d7f8:	e8 13 00 00 00       	call   0x40d810
40d7fd:	83 c4 20             	add    $0x20,%esp
40d800:	b8 01 00 00 00       	mov    $0x1,%eax
40d805:	5e                   	pop    %esi
40d806:	c3                   	ret
40d807:	90                   	nop
40d808:	90                   	nop
40d809:	90                   	nop
40d80a:	90                   	nop
40d80b:	90                   	nop
40d80c:	90                   	nop
40d80d:	90                   	nop
40d80e:	90                   	nop
40d80f:	90                   	nop
40d810:	83 ec 24             	sub    $0x24,%esp
40d813:	8b 44 24 2c          	mov    0x2c(%esp),%eax
40d817:	53                   	push   %ebx
40d818:	55                   	push   %ebp
40d819:	56                   	push   %esi
40d81a:	8b 68 08             	mov    0x8(%eax),%ebp
40d81d:	57                   	push   %edi
40d81e:	83 fd ff             	cmp    $0xffffffff,%ebp
40d821:	89 6c 24 24          	mov    %ebp,0x24(%esp)
40d825:	7c 09                	jl     0x40d830
40d827:	8b 4c 24 48          	mov    0x48(%esp),%ecx
40d82b:	3b 69 04             	cmp    0x4(%ecx),%ebp
40d82e:	7c 05                	jl     0x40d835
40d830:	e8 bb 0b 00 00       	call   0x40e3f0
40d835:	8b 5c 24 38          	mov    0x38(%esp),%ebx
40d839:	be 03 00 00 00       	mov    $0x3,%esi
40d83e:	bf 20 05 93 19       	mov    $0x19930520,%edi
40d843:	81 3b 63 73 6d e0    	cmpl   $0xe06d7363,(%ebx)
40d849:	0f 85 37 02 00 00    	jne    0x40da86
40d84f:	39 73 10             	cmp    %esi,0x10(%ebx)
40d852:	75 6a                	jne    0x40d8be
40d854:	39 7b 14             	cmp    %edi,0x14(%ebx)
40d857:	75 65                	jne    0x40d8be
40d859:	8b 43 1c             	mov    0x1c(%ebx),%eax
40d85c:	85 c0                	test   %eax,%eax
40d85e:	75 5e                	jne    0x40d8be
40d860:	e8 db 09 00 00       	call   0x40e240
40d865:	8b 48 6c             	mov    0x6c(%eax),%ecx
40d868:	85 c9                	test   %ecx,%ecx
40d86a:	0f 84 53 02 00 00    	je     0x40dac3
40d870:	e8 cb 09 00 00       	call   0x40e240
40d875:	8b 58 6c             	mov    0x6c(%eax),%ebx
40d878:	89 5c 24 38          	mov    %ebx,0x38(%esp)
40d87c:	e8 bf 09 00 00       	call   0x40e240
40d881:	8b 50 70             	mov    0x70(%eax),%edx
40d884:	6a 01                	push   $0x1
40d886:	53                   	push   %ebx
40d887:	89 54 24 48          	mov    %edx,0x48(%esp)
40d88b:	e8 90 31 00 00       	call   0x410a20
40d890:	83 c4 08             	add    $0x8,%esp
40d893:	85 c0                	test   %eax,%eax
40d895:	75 05                	jne    0x40d89c
40d897:	e8 54 0b 00 00       	call   0x40e3f0
40d89c:	81 3b 63 73 6d e0    	cmpl   $0xe06d7363,(%ebx)
40d8a2:	0f 85 de 01 00 00    	jne    0x40da86
40d8a8:	39 73 10             	cmp    %esi,0x10(%ebx)
40d8ab:	75 11                	jne    0x40d8be
40d8ad:	39 7b 14             	cmp    %edi,0x14(%ebx)
40d8b0:	75 0c                	jne    0x40d8be
40d8b2:	8b 43 1c             	mov    0x1c(%ebx),%eax
40d8b5:	85 c0                	test   %eax,%eax
40d8b7:	75 05                	jne    0x40d8be
40d8b9:	e8 32 0b 00 00       	call   0x40e3f0
40d8be:	81 3b 63 73 6d e0    	cmpl   $0xe06d7363,(%ebx)
40d8c4:	0f 85 bc 01 00 00    	jne    0x40da86
40d8ca:	39 73 10             	cmp    %esi,0x10(%ebx)
40d8cd:	0f 85 b3 01 00 00    	jne    0x40da86
40d8d3:	39 7b 14             	cmp    %edi,0x14(%ebx)
40d8d6:	0f 85 aa 01 00 00    	jne    0x40da86
40d8dc:	8b 54 24 50          	mov    0x50(%esp),%edx
40d8e0:	8d 44 24 28          	lea    0x28(%esp),%eax
40d8e4:	8d 4c 24 14          	lea    0x14(%esp),%ecx
40d8e8:	50                   	push   %eax
40d8e9:	8b 44 24 4c          	mov    0x4c(%esp),%eax
40d8ed:	51                   	push   %ecx
40d8ee:	55                   	push   %ebp
40d8ef:	52                   	push   %edx
40d8f0:	50                   	push   %eax
40d8f1:	e8 ca e1 ff ff       	call   0x40bac0
40d8f6:	8b 4c 24 28          	mov    0x28(%esp),%ecx
40d8fa:	8b 54 24 3c          	mov    0x3c(%esp),%edx
40d8fe:	83 c4 14             	add    $0x14,%esp
40d901:	3b ca                	cmp    %edx,%ecx
40d903:	89 44 24 18          	mov    %eax,0x18(%esp)
40d907:	0f 83 5e 01 00 00    	jae    0x40da6b
40d90d:	39 28                	cmp    %ebp,(%eax)
40d90f:	0f 8f 3a 01 00 00    	jg     0x40da4f
40d915:	3b 68 04             	cmp    0x4(%eax),%ebp
40d918:	0f 8f 31 01 00 00    	jg     0x40da4f
40d91e:	8b 48 0c             	mov    0xc(%eax),%ecx
40d921:	8b 70 10             	mov    0x10(%eax),%esi
40d924:	85 c9                	test   %ecx,%ecx
40d926:	89 74 24 10          	mov    %esi,0x10(%esp)
40d92a:	89 4c 24 20          	mov    %ecx,0x20(%esp)
40d92e:	0f 8e 17 01 00 00    	jle    0x40da4b
40d934:	8b 43 1c             	mov    0x1c(%ebx),%eax
40d937:	8b 40 0c             	mov    0xc(%eax),%eax
40d93a:	8d 50 04             	lea    0x4(%eax),%edx
40d93d:	8b 00                	mov    (%eax),%eax
40d93f:	89 54 24 2c          	mov    %edx,0x2c(%esp)
40d943:	89 44 24 30          	mov    %eax,0x30(%esp)
40d947:	8b 44 24 30          	mov    0x30(%esp),%eax
40d94b:	8b 6c 24 2c          	mov    0x2c(%esp),%ebp
40d94f:	85 c0                	test   %eax,%eax
40d951:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40d955:	0f 8e a5 00 00 00    	jle    0x40da00
40d95b:	8b 56 04             	mov    0x4(%esi),%edx
40d95e:	8b 7d 00             	mov    0x0(%ebp),%edi
40d961:	85 d2                	test   %edx,%edx
40d963:	74 7a                	je     0x40d9df
40d965:	8a 4a 08             	mov    0x8(%edx),%cl
40d968:	8d 42 08             	lea    0x8(%edx),%eax
40d96b:	84 c9                	test   %cl,%cl
40d96d:	74 70                	je     0x40d9df
40d96f:	8b 4f 04             	mov    0x4(%edi),%ecx
40d972:	3b d1                	cmp    %ecx,%edx
40d974:	74 44                	je     0x40d9ba
40d976:	8d 71 08             	lea    0x8(%ecx),%esi
40d979:	8a 18                	mov    (%eax),%bl
40d97b:	8a cb                	mov    %bl,%cl
40d97d:	3a 1e                	cmp    (%esi),%bl
40d97f:	75 1c                	jne    0x40d99d
40d981:	84 c9                	test   %cl,%cl
40d983:	74 14                	je     0x40d999
40d985:	8a 58 01             	mov    0x1(%eax),%bl
40d988:	8a cb                	mov    %bl,%cl
40d98a:	3a 5e 01             	cmp    0x1(%esi),%bl
40d98d:	75 0e                	jne    0x40d99d
40d98f:	83 c0 02             	add    $0x2,%eax
40d992:	83 c6 02             	add    $0x2,%esi
40d995:	84 c9                	test   %cl,%cl
40d997:	75 e0                	jne    0x40d979
40d999:	33 c0                	xor    %eax,%eax
40d99b:	eb 05                	jmp    0x40d9a2
40d99d:	1b c0                	sbb    %eax,%eax
40d99f:	83 d8 ff             	sbb    $0xffffffff,%eax
40d9a2:	85 c0                	test   %eax,%eax
40d9a4:	74 0c                	je     0x40d9b2
40d9a6:	8b 5c 24 38          	mov    0x38(%esp),%ebx
40d9aa:	8b 74 24 10          	mov    0x10(%esp),%esi
40d9ae:	33 c0                	xor    %eax,%eax
40d9b0:	eb 32                	jmp    0x40d9e4
40d9b2:	8b 5c 24 38          	mov    0x38(%esp),%ebx
40d9b6:	8b 74 24 10          	mov    0x10(%esp),%esi
40d9ba:	f6 07 02             	testb  $0x2,(%edi)
40d9bd:	74 05                	je     0x40d9c4
40d9bf:	f6 06 08             	testb  $0x8,(%esi)
40d9c2:	74 17                	je     0x40d9db
40d9c4:	8b 43 1c             	mov    0x1c(%ebx),%eax
40d9c7:	8b 00                	mov    (%eax),%eax
40d9c9:	a8 01                	test   $0x1,%al
40d9cb:	74 05                	je     0x40d9d2
40d9cd:	f6 06 01             	testb  $0x1,(%esi)
40d9d0:	74 09                	je     0x40d9db
40d9d2:	a8 02                	test   $0x2,%al
40d9d4:	74 09                	je     0x40d9df
40d9d6:	f6 06 02             	testb  $0x2,(%esi)
40d9d9:	75 04                	jne    0x40d9df
40d9db:	33 c0                	xor    %eax,%eax
40d9dd:	eb 05                	jmp    0x40d9e4
40d9df:	b8 01 00 00 00       	mov    $0x1,%eax
40d9e4:	85 c0                	test   %eax,%eax
40d9e6:	75 2e                	jne    0x40da16
40d9e8:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40d9ec:	83 c5 04             	add    $0x4,%ebp
40d9ef:	48                   	dec    %eax
40d9f0:	85 c0                	test   %eax,%eax
40d9f2:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40d9f6:	0f 8f 62 ff ff ff    	jg     0x40d95e
40d9fc:	8b 4c 24 20          	mov    0x20(%esp),%ecx
40da00:	49                   	dec    %ecx
40da01:	83 c6 10             	add    $0x10,%esi
40da04:	85 c9                	test   %ecx,%ecx
40da06:	89 4c 24 20          	mov    %ecx,0x20(%esp)
40da0a:	89 74 24 10          	mov    %esi,0x10(%esp)
40da0e:	0f 8f 33 ff ff ff    	jg     0x40d947
40da14:	eb 31                	jmp    0x40da47
40da16:	8b 4c 24 54          	mov    0x54(%esp),%ecx
40da1a:	8b 54 24 50          	mov    0x50(%esp),%edx
40da1e:	8b 44 24 18          	mov    0x18(%esp),%eax
40da22:	51                   	push   %ecx
40da23:	8b 4d 00             	mov    0x0(%ebp),%ecx
40da26:	52                   	push   %edx
40da27:	8b 54 24 50          	mov    0x50(%esp),%edx
40da2b:	50                   	push   %eax
40da2c:	8b 44 24 50          	mov    0x50(%esp),%eax
40da30:	51                   	push   %ecx
40da31:	8b 4c 24 50          	mov    0x50(%esp),%ecx
40da35:	56                   	push   %esi
40da36:	52                   	push   %edx
40da37:	8b 54 24 54          	mov    0x54(%esp),%edx
40da3b:	50                   	push   %eax
40da3c:	51                   	push   %ecx
40da3d:	52                   	push   %edx
40da3e:	53                   	push   %ebx
40da3f:	e8 4c 02 00 00       	call   0x40dc90
40da44:	83 c4 28             	add    $0x28,%esp
40da47:	8b 6c 24 24          	mov    0x24(%esp),%ebp
40da4b:	8b 44 24 18          	mov    0x18(%esp),%eax
40da4f:	8b 4c 24 14          	mov    0x14(%esp),%ecx
40da53:	8b 54 24 28          	mov    0x28(%esp),%edx
40da57:	41                   	inc    %ecx
40da58:	83 c0 14             	add    $0x14,%eax
40da5b:	3b ca                	cmp    %edx,%ecx
40da5d:	89 4c 24 14          	mov    %ecx,0x14(%esp)
40da61:	89 44 24 18          	mov    %eax,0x18(%esp)
40da65:	0f 82 a2 fe ff ff    	jb     0x40d90d
40da6b:	8a 44 24 4c          	mov    0x4c(%esp),%al
40da6f:	84 c0                	test   %al,%al
40da71:	74 50                	je     0x40dac3
40da73:	6a 01                	push   $0x1
40da75:	53                   	push   %ebx
40da76:	e8 45 06 00 00       	call   0x40e0c0
40da7b:	83 c4 08             	add    $0x8,%esp
40da7e:	5f                   	pop    %edi
40da7f:	5e                   	pop    %esi
40da80:	5d                   	pop    %ebp
40da81:	5b                   	pop    %ebx
40da82:	83 c4 24             	add    $0x24,%esp
40da85:	c3                   	ret
40da86:	8a 44 24 4c          	mov    0x4c(%esp),%al
40da8a:	84 c0                	test   %al,%al
40da8c:	75 30                	jne    0x40dabe
40da8e:	8b 44 24 54          	mov    0x54(%esp),%eax
40da92:	8b 4c 24 50          	mov    0x50(%esp),%ecx
40da96:	8b 54 24 48          	mov    0x48(%esp),%edx
40da9a:	50                   	push   %eax
40da9b:	8b 44 24 48          	mov    0x48(%esp),%eax
40da9f:	51                   	push   %ecx
40daa0:	8b 4c 24 48          	mov    0x48(%esp),%ecx
40daa4:	55                   	push   %ebp
40daa5:	52                   	push   %edx
40daa6:	8b 54 24 4c          	mov    0x4c(%esp),%edx
40daaa:	50                   	push   %eax
40daab:	51                   	push   %ecx
40daac:	52                   	push   %edx
40daad:	53                   	push   %ebx
40daae:	e8 1d 00 00 00       	call   0x40dad0
40dab3:	83 c4 20             	add    $0x20,%esp
40dab6:	5f                   	pop    %edi
40dab7:	5e                   	pop    %esi
40dab8:	5d                   	pop    %ebp
40dab9:	5b                   	pop    %ebx
40daba:	83 c4 24             	add    $0x24,%esp
40dabd:	c3                   	ret
40dabe:	e8 9d 08 00 00       	call   0x40e360
40dac3:	5f                   	pop    %edi
40dac4:	5e                   	pop    %esi
40dac5:	5d                   	pop    %ebp
40dac6:	5b                   	pop    %ebx
40dac7:	83 c4 24             	add    $0x24,%esp
40daca:	c3                   	ret
40dacb:	90                   	nop
40dacc:	90                   	nop
40dacd:	90                   	nop
40dace:	90                   	nop
40dacf:	90                   	nop
40dad0:	83 ec 08             	sub    $0x8,%esp
40dad3:	53                   	push   %ebx
40dad4:	55                   	push   %ebp
40dad5:	56                   	push   %esi
40dad6:	57                   	push   %edi
40dad7:	e8 64 07 00 00       	call   0x40e240
40dadc:	8b 48 68             	mov    0x68(%eax),%ecx
40dadf:	8b 6c 24 38          	mov    0x38(%esp),%ebp
40dae3:	8b 7c 24 34          	mov    0x34(%esp),%edi
40dae7:	8b 5c 24 2c          	mov    0x2c(%esp),%ebx
40daeb:	85 c9                	test   %ecx,%ecx
40daed:	74 27                	je     0x40db16
40daef:	8b 44 24 28          	mov    0x28(%esp),%eax
40daf3:	8b 4c 24 24          	mov    0x24(%esp),%ecx
40daf7:	8b 54 24 20          	mov    0x20(%esp),%edx
40dafb:	55                   	push   %ebp
40dafc:	57                   	push   %edi
40dafd:	53                   	push   %ebx
40dafe:	50                   	push   %eax
40daff:	8b 44 24 2c          	mov    0x2c(%esp),%eax
40db03:	51                   	push   %ecx
40db04:	52                   	push   %edx
40db05:	50                   	push   %eax
40db06:	e8 55 de ff ff       	call   0x40b960
40db0b:	83 c4 1c             	add    $0x1c,%esp
40db0e:	85 c0                	test   %eax,%eax
40db10:	0f 85 89 00 00 00    	jne    0x40db9f
40db16:	8b 44 24 30          	mov    0x30(%esp),%eax
40db1a:	8d 4c 24 14          	lea    0x14(%esp),%ecx
40db1e:	8d 54 24 10          	lea    0x10(%esp),%edx
40db22:	51                   	push   %ecx
40db23:	52                   	push   %edx
40db24:	50                   	push   %eax
40db25:	57                   	push   %edi
40db26:	53                   	push   %ebx
40db27:	e8 94 df ff ff       	call   0x40bac0
40db2c:	8b 4c 24 24          	mov    0x24(%esp),%ecx
40db30:	8b f0                	mov    %eax,%esi
40db32:	8b 44 24 28          	mov    0x28(%esp),%eax
40db36:	83 c4 14             	add    $0x14,%esp
40db39:	3b c8                	cmp    %eax,%ecx
40db3b:	73 62                	jae    0x40db9f
40db3d:	8b 44 24 30          	mov    0x30(%esp),%eax
40db41:	8b 0e                	mov    (%esi),%ecx
40db43:	3b c1                	cmp    %ecx,%eax
40db45:	7c 44                	jl     0x40db8b
40db47:	3b 46 04             	cmp    0x4(%esi),%eax
40db4a:	7f 3f                	jg     0x40db8b
40db4c:	8b 56 0c             	mov    0xc(%esi),%edx
40db4f:	8b 46 10             	mov    0x10(%esi),%eax
40db52:	c1 e2 04             	shl    $0x4,%edx
40db55:	03 c2                	add    %edx,%eax
40db57:	8b 48 f4             	mov    -0xc(%eax),%ecx
40db5a:	85 c9                	test   %ecx,%ecx
40db5c:	74 07                	je     0x40db65