406cc3:	5e                   	pop    %esi
406cc4:	5b                   	pop    %ebx
406cc5:	5d                   	pop    %ebp
406cc6:	c3                   	ret
406cc7:	8b ff                	mov    %edi,%edi
406cc9:	55                   	push   %ebp
406cca:	8b ec                	mov    %esp,%ebp
406ccc:	53                   	push   %ebx
406ccd:	56                   	push   %esi
406cce:	8b 75 10             	mov    0x10(%ebp),%esi
406cd1:	56                   	push   %esi
406cd2:	ff 75 0c             	push   0xc(%ebp)
406cd5:	ff 75 08             	push   0x8(%ebp)
406cd8:	e8 da 28 00 00       	call   0x4095b7
406cdd:	83 c4 0c             	add    $0xc,%esp
406ce0:	33 db                	xor    %ebx,%ebx
406ce2:	85 c0                	test   %eax,%eax
406ce4:	74 0d                	je     0x406cf3
406ce6:	53                   	push   %ebx
406ce7:	53                   	push   %ebx
406ce8:	53                   	push   %ebx
406ce9:	53                   	push   %ebx
406cea:	53                   	push   %ebx
406ceb:	e8 0d e4 ff ff       	call   0x4050fd
406cf0:	83 c4 14             	add    $0x14,%esp
406cf3:	8d 46 40             	lea    0x40(%esi),%eax
406cf6:	38 18                	cmp    %bl,(%eax)
406cf8:	74 16                	je     0x406d10
406cfa:	50                   	push   %eax
406cfb:	68 d8 a3 41 00       	push   $0x41a3d8
406d00:	6a 02                	push   $0x2
406d02:	ff 75 0c             	push   0xc(%ebp)
406d05:	ff 75 08             	push   0x8(%ebp)
406d08:	e8 51 fe ff ff       	call   0x406b5e
406d0d:	83 c4 14             	add    $0x14,%esp
406d10:	8d 86 80 00 00 00    	lea    0x80(%esi),%eax
406d16:	38 18                	cmp    %bl,(%eax)
406d18:	5e                   	pop    %esi
406d19:	5b                   	pop    %ebx
406d1a:	74 16                	je     0x406d32
406d1c:	50                   	push   %eax
406d1d:	68 d4 a3 41 00       	push   $0x41a3d4
406d22:	6a 02                	push   $0x2
406d24:	ff 75 0c             	push   0xc(%ebp)
406d27:	ff 75 08             	push   0x8(%ebp)
406d2a:	e8 2f fe ff ff       	call   0x406b5e
406d2f:	83 c4 14             	add    $0x14,%esp
406d32:	5d                   	pop    %ebp
406d33:	c3                   	ret
406d34:	8b ff                	mov    %edi,%edi
406d36:	55                   	push   %ebp
406d37:	8b ec                	mov    %esp,%ebp
406d39:	83 ec 14             	sub    $0x14,%esp
406d3c:	53                   	push   %ebx
406d3d:	33 db                	xor    %ebx,%ebx
406d3f:	43                   	inc    %ebx
406d40:	68 55 03 00 00       	push   $0x355
406d45:	89 5d f0             	mov    %ebx,-0x10(%ebp)
406d48:	e8 13 0e 00 00       	call   0x407b60
406d4d:	59                   	pop    %ecx
406d4e:	89 45 ec             	mov    %eax,-0x14(%ebp)
406d51:	85 c0                	test   %eax,%eax
406d53:	0f 84 55 01 00 00    	je     0x406eae
406d59:	57                   	push   %edi
406d5a:	8d 78 04             	lea    0x4(%eax),%edi
406d5d:	c6 07 00             	movb   $0x0,(%edi)
406d60:	89 18                	mov    %ebx,(%eax)
406d62:	89 5d f8             	mov    %ebx,-0x8(%ebp)
406d65:	8d 5e 10             	lea    0x10(%esi),%ebx
406d68:	8d 43 48             	lea    0x48(%ebx),%eax
406d6b:	ff 30                	push   (%eax)
406d6d:	89 45 f4             	mov    %eax,-0xc(%ebp)
406d70:	68 e0 a3 41 00       	push   $0x41a3e0
406d75:	ff 35 14 a3 41 00    	push   0x41a314
406d7b:	6a 03                	push   $0x3
406d7d:	68 51 03 00 00       	push   $0x351
406d82:	57                   	push   %edi
406d83:	e8 d6 fd ff ff       	call   0x406b5e
406d88:	8b 45 f4             	mov    -0xc(%ebp),%eax
406d8b:	83 c4 18             	add    $0x18,%esp
406d8e:	89 45 f4             	mov    %eax,-0xc(%ebp)
406d91:	c7 45 fc 14 a3 41 00 	movl   $0x41a314,-0x4(%ebp)
406d98:	68 dc a3 41 00       	push   $0x41a3dc
406d9d:	68 51 03 00 00       	push   $0x351
406da2:	57                   	push   %edi
406da3:	e8 39 8c 00 00       	call   0x40f9e1
406da8:	83 c4 0c             	add    $0xc,%esp
406dab:	85 c0                	test   %eax,%eax
406dad:	74 0f                	je     0x406dbe
406daf:	33 c0                	xor    %eax,%eax
406db1:	50                   	push   %eax
406db2:	50                   	push   %eax
406db3:	50                   	push   %eax
406db4:	50                   	push   %eax
406db5:	50                   	push   %eax
406db6:	e8 42 e3 ff ff       	call   0x4050fd
406dbb:	83 c4 14             	add    $0x14,%esp
406dbe:	ff 73 58             	push   0x58(%ebx)
406dc1:	8b 45 f4             	mov    -0xc(%ebp),%eax
406dc4:	ff 30                	push   (%eax)
406dc6:	e8 65 54 00 00       	call   0x40c230
406dcb:	59                   	pop    %ecx
406dcc:	59                   	pop    %ecx
406dcd:	85 c0                	test   %eax,%eax
406dcf:	74 04                	je     0x406dd5
406dd1:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
406dd5:	ff 45 f8             	incl   -0x8(%ebp)
406dd8:	8b 45 f8             	mov    -0x8(%ebp),%eax
406ddb:	83 45 fc 0c          	addl   $0xc,-0x4(%ebp)
406ddf:	c1 e0 04             	shl    $0x4,%eax
406de2:	8d 1c 30             	lea    (%eax,%esi,1),%ebx
406de5:	8d 43 48             	lea    0x48(%ebx),%eax
406de8:	ff 30                	push   (%eax)
406dea:	89 45 f4             	mov    %eax,-0xc(%ebp)
406ded:	8b 45 fc             	mov    -0x4(%ebp),%eax
406df0:	68 e0 a3 41 00       	push   $0x41a3e0
406df5:	ff 30                	push   (%eax)
406df7:	6a 03                	push   $0x3
406df9:	68 51 03 00 00       	push   $0x351
406dfe:	57                   	push   %edi
406dff:	e8 5a fd ff ff       	call   0x406b5e
406e04:	83 c4 18             	add    $0x18,%esp
406e07:	81 7d fc 44 a3 41 00 	cmpl   $0x41a344,-0x4(%ebp)
406e0e:	7c 88                	jl     0x406d98
406e10:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
406e14:	75 49                	jne    0x406e5f
406e16:	8b 46 50             	mov    0x50(%esi),%eax
406e19:	8b 1d 78 a0 41 00    	mov    0x41a078,%ebx
406e1f:	85 c0                	test   %eax,%eax
406e21:	74 10                	je     0x406e33
406e23:	50                   	push   %eax
406e24:	ff d3                	call   *%ebx
406e26:	85 c0                	test   %eax,%eax
406e28:	75 09                	jne    0x406e33
406e2a:	ff 76 50             	push   0x50(%esi)
406e2d:	e8 ee e1 ff ff       	call   0x405020
406e32:	59                   	pop    %ecx
406e33:	8b 46 54             	mov    0x54(%esi),%eax
406e36:	85 c0                	test   %eax,%eax
406e38:	74 10                	je     0x406e4a
406e3a:	50                   	push   %eax
406e3b:	ff d3                	call   *%ebx
406e3d:	85 c0                	test   %eax,%eax
406e3f:	75 09                	jne    0x406e4a
406e41:	ff 76 54             	push   0x54(%esi)
406e44:	e8 d7 e1 ff ff       	call   0x405020
406e49:	59                   	pop    %ecx
406e4a:	8b 45 ec             	mov    -0x14(%ebp),%eax
406e4d:	83 66 54 00          	andl   $0x0,0x54(%esi)
406e51:	83 66 4c 00          	andl   $0x0,0x4c(%esi)
406e55:	89 46 50             	mov    %eax,0x50(%esi)
406e58:	89 7e 48             	mov    %edi,0x48(%esi)
406e5b:	8b c7                	mov    %edi,%eax
406e5d:	eb 4e                	jmp    0x406ead
406e5f:	ff 75 ec             	push   -0x14(%ebp)
406e62:	e8 b9 e1 ff ff       	call   0x405020
406e67:	8b 46 50             	mov    0x50(%esi),%eax
406e6a:	8b 3d 78 a0 41 00    	mov    0x41a078,%edi
406e70:	33 db                	xor    %ebx,%ebx
406e72:	59                   	pop    %ecx
406e73:	3b c3                	cmp    %ebx,%eax
406e75:	74 10                	je     0x406e87
406e77:	50                   	push   %eax
406e78:	ff d7                	call   *%edi
406e7a:	85 c0                	test   %eax,%eax
406e7c:	75 09                	jne    0x406e87
406e7e:	ff 76 50             	push   0x50(%esi)
406e81:	e8 9a e1 ff ff       	call   0x405020
406e86:	59                   	pop    %ecx
406e87:	8b 46 54             	mov    0x54(%esi),%eax
406e8a:	3b c3                	cmp    %ebx,%eax
406e8c:	74 10                	je     0x406e9e
406e8e:	50                   	push   %eax
406e8f:	ff d7                	call   *%edi
406e91:	85 c0                	test   %eax,%eax
406e93:	75 09                	jne    0x406e9e
406e95:	ff 76 54             	push   0x54(%esi)
406e98:	e8 83 e1 ff ff       	call   0x405020
406e9d:	59                   	pop    %ecx
406e9e:	8b 46 68             	mov    0x68(%esi),%eax
406ea1:	89 5e 54             	mov    %ebx,0x54(%esi)
406ea4:	89 5e 4c             	mov    %ebx,0x4c(%esi)
406ea7:	89 5e 50             	mov    %ebx,0x50(%esi)
406eaa:	89 5e 48             	mov    %ebx,0x48(%esi)
406ead:	5f                   	pop    %edi
406eae:	5b                   	pop    %ebx
406eaf:	c9                   	leave
406eb0:	c3                   	ret
406eb1:	8b ff                	mov    %edi,%edi
406eb3:	55                   	push   %ebp
406eb4:	8b ec                	mov    %esp,%ebp
406eb6:	81 ec b4 00 00 00    	sub    $0xb4,%esp
406ebc:	a1 68 b2 42 00       	mov    0x42b268,%eax
406ec1:	33 c5                	xor    %ebp,%eax
406ec3:	89 45 fc             	mov    %eax,-0x4(%ebp)
406ec6:	8b 45 0c             	mov    0xc(%ebp),%eax
406ec9:	53                   	push   %ebx
406eca:	56                   	push   %esi
406ecb:	8b 75 08             	mov    0x8(%ebp),%esi
406ece:	57                   	push   %edi
406ecf:	8b 7d 14             	mov    0x14(%ebp),%edi
406ed2:	89 85 64 ff ff ff    	mov    %eax,-0x9c(%ebp)
406ed8:	8b 45 18             	mov    0x18(%ebp),%eax
406edb:	89 bd 5c ff ff ff    	mov    %edi,-0xa4(%ebp)
406ee1:	89 85 60 ff ff ff    	mov    %eax,-0xa0(%ebp)
406ee7:	e8 55 3b 00 00       	call   0x40aa41
406eec:	05 9c 00 00 00       	add    $0x9c,%eax
406ef1:	8d 48 28             	lea    0x28(%eax),%ecx
406ef4:	89 8d 54 ff ff ff    	mov    %ecx,-0xac(%ebp)
406efa:	8d 48 2c             	lea    0x2c(%eax),%ecx
406efd:	8d 58 20             	lea    0x20(%eax),%ebx
406f00:	05 af 00 00 00       	add    $0xaf,%eax
406f05:	89 8d 58 ff ff ff    	mov    %ecx,-0xa8(%ebp)
406f0b:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
406f11:	85 f6                	test   %esi,%esi
406f13:	0f 84 b8 01 00 00    	je     0x4070d1
406f19:	83 bd 64 ff ff ff 00 	cmpl   $0x0,-0x9c(%ebp)
406f20:	0f 84 ab 01 00 00    	je     0x4070d1
406f26:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
406f2a:	0f 84 a1 01 00 00    	je     0x4070d1
406f30:	80 3e 43             	cmpb   $0x43,(%esi)
406f33:	75 57                	jne    0x406f8c
406f35:	80 7e 01 00          	cmpb   $0x0,0x1(%esi)
406f39:	75 51                	jne    0x406f8c
406f3b:	68 24 a2 41 00       	push   $0x41a224
406f40:	ff 75 10             	push   0x10(%ebp)
406f43:	ff b5 64 ff ff ff    	push   -0x9c(%ebp)
406f49:	e8 69 26 00 00       	call   0x4095b7
406f4e:	83 c4 0c             	add    $0xc,%esp
406f51:	33 f6                	xor    %esi,%esi
406f53:	85 c0                	test   %eax,%eax
406f55:	74 0d                	je     0x406f64
406f57:	56                   	push   %esi
406f58:	56                   	push   %esi
406f59:	56                   	push   %esi
406f5a:	56                   	push   %esi
406f5b:	56                   	push   %esi
406f5c:	e8 9c e1 ff ff       	call   0x4050fd
406f61:	83 c4 14             	add    $0x14,%esp
406f64:	3b fe                	cmp    %esi,%edi
406f66:	74 0d                	je     0x406f75
406f68:	33 c0                	xor    %eax,%eax
406f6a:	66 89 07             	mov    %ax,(%edi)
406f6d:	66 89 47 02          	mov    %ax,0x2(%edi)
406f71:	66 89 47 04          	mov    %ax,0x4(%edi)
406f75:	8b 85 60 ff ff ff    	mov    -0xa0(%ebp),%eax
406f7b:	3b c6                	cmp    %esi,%eax
406f7d:	74 02                	je     0x406f81
406f7f:	89 30                	mov    %esi,(%eax)
406f81:	8b 85 64 ff ff ff    	mov    -0x9c(%ebp),%eax
406f87:	e9 47 01 00 00       	jmp    0x4070d3
406f8c:	56                   	push   %esi
406f8d:	e8 ce ef ff ff       	call   0x405f60
406f92:	bf 83 00 00 00       	mov    $0x83,%edi
406f97:	59                   	pop    %ecx
406f98:	89 85 50 ff ff ff    	mov    %eax,-0xb0(%ebp)
406f9e:	3b c7                	cmp    %edi,%eax
406fa0:	73 2c                	jae    0x406fce
406fa2:	56                   	push   %esi
406fa3:	ff b5 68 ff ff ff    	push   -0x98(%ebp)
406fa9:	e8 82 52 00 00       	call   0x40c230
406fae:	59                   	pop    %ecx
406faf:	59                   	pop    %ecx
406fb0:	85 c0                	test   %eax,%eax
406fb2:	0f 84 b0 00 00 00    	je     0x407068
406fb8:	56                   	push   %esi
406fb9:	ff b5 58 ff ff ff    	push   -0xa8(%ebp)
406fbf:	e8 6c 52 00 00       	call   0x40c230
406fc4:	59                   	pop    %ecx
406fc5:	59                   	pop    %ecx
406fc6:	85 c0                	test   %eax,%eax
406fc8:	0f 84 9a 00 00 00    	je     0x407068
406fce:	83 a5 4c ff ff ff 00 	andl   $0x0,-0xb4(%ebp)
406fd5:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
406fdb:	56                   	push   %esi
406fdc:	50                   	push   %eax
406fdd:	e8 bc fb ff ff       	call   0x406b9e
406fe2:	59                   	pop    %ecx
406fe3:	59                   	pop    %ecx
406fe4:	85 c0                	test   %eax,%eax
406fe6:	0f 85 e5 00 00 00    	jne    0x4070d1
406fec:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
406ff2:	50                   	push   %eax
406ff3:	53                   	push   %ebx
406ff4:	50                   	push   %eax
406ff5:	e8 1c 91 00 00       	call   0x410116
406ffa:	83 c4 0c             	add    $0xc,%esp
406ffd:	85 c0                	test   %eax,%eax
406fff:	0f 84 cc 00 00 00    	je     0x4070d1
407005:	0f b7 43 04          	movzwl 0x4(%ebx),%eax
407009:	8b 8d 54 ff ff ff    	mov    -0xac(%ebp),%ecx
40700f:	89 01                	mov    %eax,(%ecx)
407011:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
407017:	50                   	push   %eax
407018:	57                   	push   %edi
407019:	ff b5 68 ff ff ff    	push   -0x98(%ebp)
40701f:	e8 a3 fc ff ff       	call   0x406cc7
407024:	83 c4 0c             	add    $0xc,%esp
407027:	80 3e 00             	cmpb   $0x0,(%esi)
40702a:	74 0a                	je     0x407036
40702c:	8b 85 50 ff ff ff    	mov    -0xb0(%ebp),%eax
407032:	3b c7                	cmp    %edi,%eax
407034:	72 0b                	jb     0x407041
407036:	8b 85 4c ff ff ff    	mov    -0xb4(%ebp),%eax
40703c:	be 26 a2 41 00       	mov    $0x41a226,%esi
407041:	40                   	inc    %eax
407042:	50                   	push   %eax
407043:	56                   	push   %esi
407044:	57                   	push   %edi
407045:	ff b5 58 ff ff ff    	push   -0xa8(%ebp)
40704b:	e8 56 8a 00 00       	call   0x40faa6
407050:	83 c4 10             	add    $0x10,%esp
407053:	85 c0                	test   %eax,%eax
407055:	74 11                	je     0x407068
407057:	33 f6                	xor    %esi,%esi
407059:	56                   	push   %esi
40705a:	56                   	push   %esi
40705b:	56                   	push   %esi
40705c:	56                   	push   %esi
40705d:	56                   	push   %esi
40705e:	e8 9a e0 ff ff       	call   0x4050fd
407063:	83 c4 14             	add    $0x14,%esp
407066:	eb 02                	jmp    0x40706a
407068:	33 f6                	xor    %esi,%esi
40706a:	39 b5 5c ff ff ff    	cmp    %esi,-0xa4(%ebp)
407070:	74 11                	je     0x407083
407072:	6a 06                	push   $0x6
407074:	53                   	push   %ebx
407075:	ff b5 5c ff ff ff    	push   -0xa4(%ebp)
40707b:	e8 80 10 00 00       	call   0x408100
407080:	83 c4 0c             	add    $0xc,%esp
407083:	39 b5 60 ff ff ff    	cmp    %esi,-0xa0(%ebp)
407089:	74 16                	je     0x4070a1
40708b:	6a 04                	push   $0x4
40708d:	ff b5 54 ff ff ff    	push   -0xac(%ebp)
407093:	ff b5 60 ff ff ff    	push   -0xa0(%ebp)
407099:	e8 62 10 00 00       	call   0x408100
40709e:	83 c4 0c             	add    $0xc,%esp
4070a1:	ff b5 68 ff ff ff    	push   -0x98(%ebp)
4070a7:	ff 75 10             	push   0x10(%ebp)
4070aa:	ff b5 64 ff ff ff    	push   -0x9c(%ebp)
4070b0:	e8 02 25 00 00       	call   0x4095b7
4070b5:	83 c4 0c             	add    $0xc,%esp
4070b8:	85 c0                	test   %eax,%eax
4070ba:	74 0d                	je     0x4070c9
4070bc:	56                   	push   %esi
4070bd:	56                   	push   %esi
4070be:	56                   	push   %esi
4070bf:	56                   	push   %esi
4070c0:	56                   	push   %esi