406cad:	e8 ba 34 00 00       	call   0x40a16c
406cb2:	33 c9                	xor    %ecx,%ecx
406cb4:	89 4e 08             	mov    %ecx,0x8(%esi)
406cb7:	85 ff                	test   %edi,%edi
406cb9:	0f 85 0d 3a 01 00    	jne    0x41a6cc
406cbf:	83 2d e8 65 43 00 01 	subl   $0x1,0x4365e8
406cc6:	a1 e4 65 43 00       	mov    0x4365e4,%eax
406ccb:	89 46 14             	mov    %eax,0x14(%esi)
406cce:	a1 98 25 43 00       	mov    0x432598,%eax
406cd3:	89 46 1c             	mov    %eax,0x1c(%esi)
406cd6:	89 0d e4 65 43 00    	mov    %ecx,0x4365e4
406cdc:	89 0d 98 25 43 00    	mov    %ecx,0x432598
406ce2:	75 22                	jne    0x406d06
406ce4:	e8 f5 f6 ff ff       	call   0x4063de
406ce9:	5f                   	pop    %edi
406cea:	5e                   	pop    %esi
406ceb:	5b                   	pop    %ebx
406cec:	8b e5                	mov    %ebp,%esp
406cee:	5d                   	pop    %ebp
406cef:	c2 04 00             	ret    $0x4
406cf2:	a1 88 67 43 00       	mov    0x436788,%eax
406cf7:	89 70 24             	mov    %esi,0x24(%eax)
406cfa:	83 66 24 00          	andl   $0x0,0x24(%esi)
406cfe:	89 46 20             	mov    %eax,0x20(%esi)
406d01:	e9 87 fe ff ff       	jmp    0x406b8d
406d06:	33 c0                	xor    %eax,%eax
406d08:	eb df                	jmp    0x406ce9
406d0a:	8b ff                	mov    %edi,%edi
406d0c:	55                   	push   %ebp
406d0d:	8b ec                	mov    %esp,%ebp
406d0f:	81 ec 34 02 00 00    	sub    $0x234,%esp
406d15:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
406d1a:	33 c5                	xor    %ebp,%eax
406d1c:	89 45 fc             	mov    %eax,-0x4(%ebp)
406d1f:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
406d23:	b8 04 01 00 00       	mov    $0x104,%eax
406d28:	53                   	push   %ebx
406d29:	56                   	push   %esi
406d2a:	57                   	push   %edi
406d2b:	50                   	push   %eax
406d2c:	89 45 f0             	mov    %eax,-0x10(%ebp)
406d2f:	8b f1                	mov    %ecx,%esi
406d31:	8d 85 e0 fd ff ff    	lea    -0x220(%ebp),%eax
406d37:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
406d3d:	6a 00                	push   $0x0
406d3f:	33 ff                	xor    %edi,%edi
406d41:	c6 45 ec 01          	movb   $0x1,-0x14(%ebp)
406d45:	50                   	push   %eax
406d46:	47                   	inc    %edi
406d47:	e8 71 12 01 00       	call   0x417fbd
406d4c:	83 c4 0c             	add    $0xc,%esp
406d4f:	8d 8d e0 fd ff ff    	lea    -0x220(%ebp),%ecx
406d55:	68 e9 7f 00 00       	push   $0x7fe9
406d5a:	e8 91 76 00 00       	call   0x40e3f0
406d5f:	85 c0                	test   %eax,%eax
406d61:	78 1d                	js     0x406d80
406d63:	83 25 a8 67 43 00 00 	andl   $0x0,0x4367a8
406d6a:	8d 85 dc fd ff ff    	lea    -0x224(%ebp),%eax
406d70:	50                   	push   %eax
406d71:	6a 00                	push   $0x0
406d73:	b2 01                	mov    $0x1,%dl
406d75:	8b ce                	mov    %esi,%ecx
406d77:	e8 b8 0c 00 00       	call   0x407a34
406d7c:	3b c7                	cmp    %edi,%eax
406d7e:	75 27                	jne    0x406da7
406d80:	33 ff                	xor    %edi,%edi
406d82:	47                   	inc    %edi
406d83:	8b 45 e8             	mov    -0x18(%ebp),%eax
406d86:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
406d8a:	85 c0                	test   %eax,%eax
406d8c:	74 08                	je     0x406d96
406d8e:	50                   	push   %eax
406d8f:	ff 15 e0 a3 44 00    	call   *0x44a3e0
406d95:	59                   	pop    %ecx
406d96:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406d99:	8b c7                	mov    %edi,%eax
406d9b:	5f                   	pop    %edi
406d9c:	5e                   	pop    %esi
406d9d:	33 cd                	xor    %ebp,%ecx
406d9f:	5b                   	pop    %ebx
406da0:	e8 8b fd 00 00       	call   0x416b30
406da5:	c9                   	leave
406da6:	c3                   	ret
406da7:	8b 9d dc fd ff ff    	mov    -0x224(%ebp),%ebx
406dad:	85 db                	test   %ebx,%ebx
406daf:	74 d2                	je     0x406d83
406db1:	0f b6 06             	movzbl (%esi),%eax
406db4:	33 d2                	xor    %edx,%edx
406db6:	6a 00                	push   $0x0
406db8:	68 d0 38 41 00       	push   $0x4138d0
406dbd:	6a 00                	push   $0x0
406dbf:	51                   	push   %ecx
406dc0:	83 e0 10             	and    $0x10,%eax
406dc3:	8b cb                	mov    %ebx,%ecx
406dc5:	56                   	push   %esi
406dc6:	83 c8 40             	or     $0x40,%eax
406dc9:	c1 e8 04             	shr    $0x4,%eax
406dcc:	50                   	push   %eax
406dcd:	ff 76 08             	push   0x8(%esi)
406dd0:	ff 76 04             	push   0x4(%esi)
406dd3:	e8 b0 f6 ff ff       	call   0x406488
406dd8:	8b f8                	mov    %eax,%edi
406dda:	89 bd dc fd ff ff    	mov    %edi,-0x224(%ebp)
406de0:	83 ff 01             	cmp    $0x1,%edi
406de3:	74 9b                	je     0x406d80
406de5:	85 ff                	test   %edi,%edi
406de7:	0f 85 f2 38 01 00    	jne    0x41a6df
406ded:	83 ff 02             	cmp    $0x2,%edi
406df0:	0f 84 01 39 01 00    	je     0x41a6f7
406df6:	8b 4b 04             	mov    0x4(%ebx),%ecx
406df9:	e8 62 6e 00 00       	call   0x40dc60
406dfe:	8b 43 0c             	mov    0xc(%ebx),%eax
406e01:	33 c9                	xor    %ecx,%ecx
406e03:	41                   	inc    %ecx
406e04:	89 85 d4 fd ff ff    	mov    %eax,-0x22c(%ebp)
406e0a:	89 8d d8 fd ff ff    	mov    %ecx,-0x228(%ebp)
406e10:	39 4b 08             	cmp    %ecx,0x8(%ebx)
406e13:	72 3b                	jb     0x406e50
406e15:	8b f8                	mov    %eax,%edi
406e17:	8b 0f                	mov    (%edi),%ecx
406e19:	8b 77 0c             	mov    0xc(%edi),%esi
406e1c:	e8 3f 6e 00 00       	call   0x40dc60
406e21:	8b 4f 04             	mov    0x4(%edi),%ecx
406e24:	e8 37 6e 00 00       	call   0x40dc60
406e29:	8b cf                	mov    %edi,%ecx
406e2b:	e8 30 6e 00 00       	call   0x40dc60
406e30:	8b 85 d8 fd ff ff    	mov    -0x228(%ebp),%eax
406e36:	8b fe                	mov    %esi,%edi
406e38:	40                   	inc    %eax
406e39:	89 85 d8 fd ff ff    	mov    %eax,-0x228(%ebp)
406e3f:	3b 43 08             	cmp    0x8(%ebx),%eax
406e42:	76 d3                	jbe    0x406e17
406e44:	8b bd dc fd ff ff    	mov    -0x224(%ebp),%edi
406e4a:	8b b5 d0 fd ff ff    	mov    -0x230(%ebp),%esi
406e50:	8b 1b                	mov    (%ebx),%ebx
406e52:	e9 56 ff ff ff       	jmp    0x406dad
406e57:	8b ff                	mov    %edi,%edi
406e59:	55                   	push   %ebp
406e5a:	8b ec                	mov    %esp,%ebp
406e5c:	83 e4 f8             	and    $0xfffffff8,%esp
406e5f:	81 ec 8c 02 00 00    	sub    $0x28c,%esp
406e65:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
406e6a:	33 c4                	xor    %esp,%eax
406e6c:	89 84 24 88 02 00 00 	mov    %eax,0x288(%esp)
406e73:	8b 45 08             	mov    0x8(%ebp),%eax
406e76:	53                   	push   %ebx
406e77:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406e7a:	89 54 24 1c          	mov    %edx,0x1c(%esp)
406e7e:	33 d2                	xor    %edx,%edx
406e80:	56                   	push   %esi
406e81:	89 44 24 1c          	mov    %eax,0x1c(%esp)
406e85:	8b c2                	mov    %edx,%eax
406e87:	57                   	push   %edi
406e88:	8b fa                	mov    %edx,%edi
406e8a:	89 4c 24 14          	mov    %ecx,0x14(%esp)
406e8e:	c7 44 24 18 01 00 00 	movl   $0x1,0x18(%esp)
406e95:	00
406e96:	89 54 24 28          	mov    %edx,0x28(%esp)
406e9a:	89 44 24 1c          	mov    %eax,0x1c(%esp)
406e9e:	66 39 13             	cmp    %dx,(%ebx)
406ea1:	0f 84 96 00 00 00    	je     0x406f3d
406ea7:	80 3d 44 67 43 00 00 	cmpb   $0x0,0x436744
406eae:	0f 85 85 00 00 00    	jne    0x406f39
406eb4:	e8 87 b1 00 00       	call   0x412040
406eb9:	83 3d 9c 25 43 00 00 	cmpl   $0x0,0x43259c
406ec0:	0f 85 80 38 01 00    	jne    0x41a746
406ec6:	8b f3                	mov    %ebx,%esi
406ec8:	8d 4e 02             	lea    0x2(%esi),%ecx
406ecb:	66 8b 06             	mov    (%esi),%ax
406ece:	83 c6 02             	add    $0x2,%esi
406ed1:	66 3b c2             	cmp    %dx,%ax
406ed4:	75 f5                	jne    0x406ecb
406ed6:	2b f1                	sub    %ecx,%esi
406ed8:	8b cb                	mov    %ebx,%ecx
406eda:	6a 2a                	push   $0x2a
406edc:	d1 fe                	sar    $1,%esi
406ede:	5a                   	pop    %edx
406edf:	89 74 24 3c          	mov    %esi,0x3c(%esp)
406ee3:	e8 47 37 00 00       	call   0x40a62f
406ee8:	85 c0                	test   %eax,%eax
406eea:	75 71                	jne    0x406f5d
406eec:	6a 3f                	push   $0x3f
406eee:	5a                   	pop    %edx
406eef:	8b cb                	mov    %ebx,%ecx
406ef1:	e8 39 37 00 00       	call   0x40a62f
406ef6:	85 c0                	test   %eax,%eax
406ef8:	75 63                	jne    0x406f5d
406efa:	a1 3c 67 43 00       	mov    0x43673c,%eax
406eff:	8b 4c 24 20          	mov    0x20(%esp),%ecx
406f03:	8b 54 24 18          	mov    0x18(%esp),%edx
406f07:	89 1c 88             	mov    %ebx,(%eax,%ecx,4)
406f0a:	8b 44 24 14          	mov    0x14(%esp),%eax
406f0e:	8b 48 40             	mov    0x40(%eax),%ecx
406f11:	e8 a5 9c 00 00       	call   0x410bbb
406f16:	89 44 24 1c          	mov    %eax,0x1c(%esp)
406f1a:	85 ff                	test   %edi,%edi
406f1c:	75 36                	jne    0x406f54
406f1e:	8b 3d 78 67 43 00    	mov    0x436778,%edi
406f24:	33 d2                	xor    %edx,%edx
406f26:	89 54 24 18          	mov    %edx,0x18(%esp)
406f2a:	8d 1c 73             	lea    (%ebx,%esi,2),%ebx
406f2d:	83 c3 02             	add    $0x2,%ebx
406f30:	66 39 13             	cmp    %dx,(%ebx)
406f33:	0f 85 6e ff ff ff    	jne    0x406ea7
406f39:	8b 44 24 1c          	mov    0x1c(%esp),%eax
406f3d:	8b 8c 24 94 02 00 00 	mov    0x294(%esp),%ecx
406f44:	5f                   	pop    %edi
406f45:	5e                   	pop    %esi
406f46:	5b                   	pop    %ebx
406f47:	33 cc                	xor    %esp,%ecx
406f49:	e8 e2 fb 00 00       	call   0x416b30
406f4e:	8b e5                	mov    %ebp,%esp
406f50:	5d                   	pop    %ebp
406f51:	c2 0c 00             	ret    $0xc
406f54:	8b cf                	mov    %edi,%ecx
406f56:	e8 34 aa 00 00       	call   0x41198f
406f5b:	eb c7                	jmp    0x406f24
406f5d:	8b cb                	mov    %ebx,%ecx
406f5f:	e8 fc 90 00 00       	call   0x410060
406f64:	8b c8                	mov    %eax,%ecx
406f66:	e8 45 3d 00 00       	call   0x40acb0
406f6b:	8b d0                	mov    %eax,%edx
406f6d:	8b 44 24 14          	mov    0x14(%esp),%eax
406f71:	89 54 24 34          	mov    %edx,0x34(%esp)
406f75:	8b 48 48             	mov    0x48(%eax),%ecx
406f78:	80 e1 02             	and    $0x2,%cl
406f7b:	0f b6 c1             	movzbl %cl,%eax
406f7e:	8d 4c 24 30          	lea    0x30(%esp),%ecx
406f82:	51                   	push   %ecx
406f83:	f7 d8                	neg    %eax
406f85:	8d 4c 24 44          	lea    0x44(%esp),%ecx
406f89:	51                   	push   %ecx
406f8a:	1b c0                	sbb    %eax,%eax
406f8c:	33 c9                	xor    %ecx,%ecx
406f8e:	25 10 10 00 00       	and    $0x1010,%eax
406f93:	83 c0 25             	add    $0x25,%eax
406f96:	51                   	push   %ecx
406f97:	50                   	push   %eax
406f98:	b9 d0 59 41 00       	mov    $0x4159d0,%ecx
406f9d:	89 44 24 48          	mov    %eax,0x48(%esp)
406fa1:	e8 f4 e8 00 00       	call   0x41589a
406fa6:	84 c0                	test   %al,%al
406fa8:	0f 84 6f 01 00 00    	je     0x40711d
406fae:	8b 74 24 24          	mov    0x24(%esp),%esi
406fb2:	8b ce                	mov    %esi,%ecx
406fb4:	8b 44 24 34          	mov    0x34(%esp),%eax
406fb8:	89 06                	mov    %eax,(%esi)
406fba:	e8 62 1f 00 00       	call   0x408f21
406fbf:	8b 46 0c             	mov    0xc(%esi),%eax
406fc2:	8b 16                	mov    (%esi),%edx
406fc4:	85 c0                	test   %eax,%eax
406fc6:	0f 84 86 37 01 00    	je     0x41a752
406fcc:	2b c2                	sub    %edx,%eax
406fce:	d1 f8                	sar    $1,%eax
406fd0:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
406fd7:	8b ca                	mov    %edx,%ecx
406fd9:	89 44 24 2c          	mov    %eax,0x2c(%esp)
406fdd:	8d 71 02             	lea    0x2(%ecx),%esi
406fe0:	66 8b 01             	mov    (%ecx),%ax
406fe3:	83 c1 02             	add    $0x2,%ecx
406fe6:	66 3b 44 24 28       	cmp    0x28(%esp),%ax
406feb:	75 f3                	jne    0x406fe0
406fed:	2b ce                	sub    %esi,%ecx
406fef:	d1 f9                	sar    $1,%ecx
406ff1:	0f 84 0f 38 01 00    	je     0x41a806
406ff7:	8d 4a 02             	lea    0x2(%edx),%ecx
406ffa:	33 f6                	xor    %esi,%esi
406ffc:	66 8b 02             	mov    (%edx),%ax
406fff:	83 c2 02             	add    $0x2,%edx
407002:	66 3b c6             	cmp    %si,%ax
407005:	75 f5                	jne    0x406ffc
407007:	2b d1                	sub    %ecx,%edx
407009:	d1 fa                	sar    $1,%edx
40700b:	8d 42 01             	lea    0x1(%edx),%eax
40700e:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
407011:	89 44 24 10          	mov    %eax,0x10(%esp)
407015:	e8 b6 6c 00 00       	call   0x40dcd0
40701a:	8b f0                	mov    %eax,%esi
40701c:	85 f6                	test   %esi,%esi
40701e:	0f 84 e2 37 01 00    	je     0x41a806
407024:	8b 54 24 24          	mov    0x24(%esp),%edx
407028:	8b ce                	mov    %esi,%ecx
40702a:	ff 32                	push   (%edx)
40702c:	8b 54 24 14          	mov    0x14(%esp),%edx
407030:	e8 6b 83 00 00       	call   0x40f3a0
407035:	e8 06 b0 00 00       	call   0x412040
40703a:	8d 4c 24 6c          	lea    0x6c(%esp),%ecx
40703e:	8d 51 02             	lea    0x2(%ecx),%edx
407041:	66 8b 01             	mov    (%ecx),%ax
407044:	83 c1 02             	add    $0x2,%ecx
407047:	66 3b 44 24 28       	cmp    0x28(%esp),%ax
40704c:	75 f3                	jne    0x407041
40704e:	2b ca                	sub    %edx,%ecx
407050:	8b 54 24 10          	mov    0x10(%esp),%edx
407054:	d1 f9                	sar    $1,%ecx
407056:	8d 04 11             	lea    (%ecx,%edx,1),%eax
407059:	3b d0                	cmp    %eax,%edx
40705b:	73 2c                	jae    0x407089
40705d:	89 44 24 10          	mov    %eax,0x10(%esp)
407061:	8d 14 00             	lea    (%eax,%eax,1),%edx
407064:	85 f6                	test   %esi,%esi
407066:	0f 84 ed 36 01 00    	je     0x41a759
40706c:	8b ce                	mov    %esi,%ecx
40706e:	e8 ad 6c 00 00       	call   0x40dd20
407073:	85 c0                	test   %eax,%eax
407075:	0f 84 84 37 01 00    	je     0x41a7ff
40707b:	8b f0                	mov    %eax,%esi
40707d:	85 f6                	test   %esi,%esi
40707f:	0f 84 81 37 01 00    	je     0x41a806
407085:	8b 54 24 10          	mov    0x10(%esp),%edx
407089:	8b 44 24 2c          	mov    0x2c(%esp),%eax
40708d:	33 c9                	xor    %ecx,%ecx
40708f:	66 89 0c 30          	mov    %cx,(%eax,%esi,1)
407093:	8d 44 24 6c          	lea    0x6c(%esp),%eax
407097:	50                   	push   %eax
407098:	8b ce                	mov    %esi,%ecx
40709a:	e8 a1 8b 00 00       	call   0x40fc40
40709f:	8b 44 24 14          	mov    0x14(%esp),%eax
4070a3:	f6 40 48 02          	testb  $0x2,0x48(%eax)
4070a7:	0f 85 b8 36 01 00    	jne    0x41a765
4070ad:	a1 3c 67 43 00       	mov    0x43673c,%eax
4070b2:	8b 4c 24 20          	mov    0x20(%esp),%ecx
4070b6:	8b 54 24 18          	mov    0x18(%esp),%edx
4070ba:	89 34 88             	mov    %esi,(%eax,%ecx,4)
4070bd:	8b 44 24 14          	mov    0x14(%esp),%eax
4070c1:	8b 48 40             	mov    0x40(%eax),%ecx
4070c4:	e8 f2 9a 00 00       	call   0x410bbb
4070c9:	8b 4c 24 20          	mov    0x20(%esp),%ecx
4070cd:	33 d2                	xor    %edx,%edx
4070cf:	89 44 24 1c          	mov    %eax,0x1c(%esp)
4070d3:	a1 3c 67 43 00       	mov    0x43673c,%eax
4070d8:	89 54 24 18          	mov    %edx,0x18(%esp)
4070dc:	89 14 88             	mov    %edx,(%eax,%ecx,4)
4070df:	83 3d 9c 25 43 00 00 	cmpl   $0x0,0x43259c
4070e6:	75 45                	jne    0x40712d
4070e8:	ff 74 24 30          	push   0x30(%esp)
4070ec:	8d 54 24 44          	lea    0x44(%esp),%edx
4070f0:	b9 d0 59 41 00       	mov    $0x4159d0,%ecx
4070f5:	ff 74 24 3c          	push   0x3c(%esp)
4070f9:	e8 53 e7 00 00       	call   0x415851
4070fe:	84 c0                	test   %al,%al
407100:	0f 85 e7 36 01 00    	jne    0x41a7ed
407106:	85 ff                	test   %edi,%edi
407108:	75 2a                	jne    0x407134
40710a:	8b 3d 78 67 43 00    	mov    0x436778,%edi
407110:	8b 4c 24 30          	mov    0x30(%esp),%ecx
407114:	e8 34 1a 00 00       	call   0x408b4d
407119:	8b 74 24 3c          	mov    0x3c(%esp),%esi
40711d:	8b 4c 24 34          	mov    0x34(%esp),%ecx
407121:	e8 3a 6b 00 00       	call   0x40dc60