407caf:	5e                   	pop    %esi
407cb0:	5b                   	pop    %ebx
407cb1:	c9                   	leave
407cb2:	c3                   	ret
407cb3:	55                   	push   %ebp
407cb4:	8b ec                	mov    %esp,%ebp
407cb6:	83 e4 f8             	and    $0xfffffff8,%esp
407cb9:	81 ec 5c 02 00 00    	sub    $0x25c,%esp
407cbf:	53                   	push   %ebx
407cc0:	56                   	push   %esi
407cc1:	57                   	push   %edi
407cc2:	33 ff                	xor    %edi,%edi
407cc4:	8d 44 24 60          	lea    0x60(%esp),%eax
407cc8:	68 08 02 00 00       	push   $0x208
407ccd:	57                   	push   %edi
407cce:	50                   	push   %eax
407ccf:	89 7c 24 20          	mov    %edi,0x20(%esp)
407cd3:	e8 7a 93 ff ff       	call   0x401052
407cd8:	8b 45 0c             	mov    0xc(%ebp),%eax
407cdb:	83 c4 0c             	add    $0xc,%esp
407cde:	8b f7                	mov    %edi,%esi
407ce0:	89 74 24 10          	mov    %esi,0x10(%esp)
407ce4:	83 e8 01             	sub    $0x1,%eax
407ce7:	0f 84 21 03 00 00    	je     0x40800e
407ced:	83 e8 0f             	sub    $0xf,%eax
407cf0:	0f 84 0f 03 00 00    	je     0x408005
407cf6:	2d ef 00 00 00       	sub    $0xef,%eax
407cfb:	74 19                	je     0x407d16
407cfd:	ff 75 14             	push   0x14(%ebp)
407d00:	ff 75 10             	push   0x10(%ebp)
407d03:	ff 75 0c             	push   0xc(%ebp)
407d06:	ff 75 08             	push   0x8(%ebp)
407d09:	ff 15 b8 22 41 00    	call   *0x4122b8
407d0f:	8b f8                	mov    %eax,%edi
407d11:	e9 25 03 00 00       	jmp    0x40803b
407d16:	6a 10                	push   $0x10
407d18:	8d 44 24 18          	lea    0x18(%esp),%eax
407d1c:	50                   	push   %eax
407d1d:	57                   	push   %edi
407d1e:	68 03 00 00 10       	push   $0x10000003
407d23:	ff 75 14             	push   0x14(%ebp)
407d26:	ff 15 b0 22 41 00    	call   *0x4122b0
407d2c:	83 f8 ff             	cmp    $0xffffffff,%eax
407d2f:	0f 84 06 03 00 00    	je     0x40803b
407d35:	8b 4c 24 14          	mov    0x14(%esp),%ecx
407d39:	e8 9d dd ff ff       	call   0x405adb
407d3e:	8b d8                	mov    %eax,%ebx
407d40:	89 5c 24 2c          	mov    %ebx,0x2c(%esp)
407d44:	85 db                	test   %ebx,%ebx
407d46:	0f 84 ef 02 00 00    	je     0x40803b
407d4c:	6a 10                	push   $0x10
407d4e:	8d 44 24 18          	lea    0x18(%esp),%eax
407d52:	50                   	push   %eax
407d53:	53                   	push   %ebx
407d54:	68 03 00 00 10       	push   $0x10000003
407d59:	ff 75 14             	push   0x14(%ebp)
407d5c:	ff 15 b0 22 41 00    	call   *0x4122b0
407d62:	3b 44 24 14          	cmp    0x14(%esp),%eax
407d66:	0f 85 cf 02 00 00    	jne    0x40803b
407d6c:	81 7b 18 00 01 00 00 	cmpl   $0x100,0x18(%ebx)
407d73:	0f 85 c2 02 00 00    	jne    0x40803b
407d79:	ff 15 c4 22 41 00    	call   *0x4122c4
407d7f:	68 04 01 00 00       	push   $0x104
407d84:	8d 4c 24 64          	lea    0x64(%esp),%ecx
407d88:	51                   	push   %ecx
407d89:	50                   	push   %eax
407d8a:	ff 15 a4 22 41 00    	call   *0x4122a4
407d90:	85 c0                	test   %eax,%eax
407d92:	7e 23                	jle    0x407db7
407d94:	8d 44 24 60          	lea    0x60(%esp),%eax
407d98:	50                   	push   %eax
407d99:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
407d9d:	e8 70 b6 ff ff       	call   0x403412
407da2:	50                   	push   %eax
407da3:	8d 4c 24 14          	lea    0x14(%esp),%ecx
407da7:	e8 b8 b4 ff ff       	call   0x403264
407dac:	8b 4c 24 18          	mov    0x18(%esp),%ecx
407db0:	e8 78 dc ff ff       	call   0x405a2d
407db5:	eb 0e                	jmp    0x407dc5
407db7:	68 90 29 41 00       	push   $0x412990
407dbc:	8d 4c 24 14          	lea    0x14(%esp),%ecx
407dc0:	e8 67 b3 ff ff       	call   0x40312c
407dc5:	8a 53 16             	mov    0x16(%ebx),%dl
407dc8:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
407dcc:	e8 62 03 00 00       	call   0x408133
407dd1:	8d 44 24 10          	lea    0x10(%esp),%eax
407dd5:	50                   	push   %eax
407dd6:	8d 4c 24 20          	lea    0x20(%esp),%ecx
407dda:	e8 85 b4 ff ff       	call   0x403264
407ddf:	a1 90 66 41 00       	mov    0x416690,%eax
407de4:	8d 4c 24 28          	lea    0x28(%esp),%ecx
407de8:	83 c0 10             	add    $0x10,%eax
407deb:	50                   	push   %eax
407dec:	e8 a6 b4 ff ff       	call   0x403297
407df1:	a1 90 66 41 00       	mov    0x416690,%eax
407df6:	39 38                	cmp    %edi,(%eax)
407df8:	74 67                	je     0x407e61
407dfa:	83 ec 10             	sub    $0x10,%esp
407dfd:	05 18 0a 00 00       	add    $0xa18,%eax
407e02:	8b cc                	mov    %esp,%ecx
407e04:	50                   	push   %eax
407e05:	e8 f7 94 ff ff       	call   0x401301
407e0a:	83 ec 10             	sub    $0x10,%esp
407e0d:	8d 44 24 3c          	lea    0x3c(%esp),%eax
407e11:	8b f4                	mov    %esp,%esi
407e13:	8b ce                	mov    %esi,%ecx
407e15:	50                   	push   %eax
407e16:	e8 3f b6 ff ff       	call   0x40345a
407e1b:	8b 44 24 40          	mov    0x40(%esp),%eax
407e1f:	8d 4e 0c             	lea    0xc(%esi),%ecx
407e22:	89 46 04             	mov    %eax,0x4(%esi)
407e25:	66 8b 44 24 44       	mov    0x44(%esp),%ax
407e2a:	66 89 46 08          	mov    %ax,0x8(%esi)
407e2e:	8d 44 24 48          	lea    0x48(%esp),%eax
407e32:	50                   	push   %eax
407e33:	e8 22 b6 ff ff       	call   0x40345a
407e38:	8d 4c 24 5c          	lea    0x5c(%esp),%ecx
407e3c:	e8 ca c7 ff ff       	call   0x40460b
407e41:	8b 0d 90 66 41 00    	mov    0x416690,%ecx
407e47:	50                   	push   %eax
407e48:	8b 89 50 0a 00 00    	mov    0xa50(%ecx),%ecx
407e4e:	e8 00 cd ff ff       	call   0x404b53
407e53:	8d 4c 24 3c          	lea    0x3c(%esp),%ecx
407e57:	e8 85 c7 ff ff       	call   0x4045e1
407e5c:	a1 90 66 41 00       	mov    0x416690,%eax
407e61:	39 b8 14 0a 00 00    	cmp    %edi,0xa14(%eax)
407e67:	0f 84 7c 01 00 00    	je     0x407fe9
407e6d:	05 10 02 00 00       	add    $0x210,%eax
407e72:	50                   	push   %eax
407e73:	ff 15 fc 21 41 00    	call   *0x4121fc
407e79:	33 db                	xor    %ebx,%ebx
407e7b:	43                   	inc    %ebx
407e7c:	85 c0                	test   %eax,%eax
407e7e:	a1 90 66 41 00       	mov    0x416690,%eax
407e83:	74 39                	je     0x407ebe
407e85:	05 10 02 00 00       	add    $0x210,%eax
407e8a:	8d 4c 24 18          	lea    0x18(%esp),%ecx
407e8e:	50                   	push   %eax
407e8f:	e8 7e b5 ff ff       	call   0x403412
407e94:	50                   	push   %eax
407e95:	8d 4c 24 14          	lea    0x14(%esp),%ecx
407e99:	e8 d7 b1 ff ff       	call   0x403075
407e9e:	8b 4c 24 18          	mov    0x18(%esp),%ecx
407ea2:	8b f0                	mov    %eax,%esi
407ea4:	e8 84 db ff ff       	call   0x405a2d
407ea9:	a1 90 66 41 00       	mov    0x416690,%eax
407eae:	89 7c 24 18          	mov    %edi,0x18(%esp)
407eb2:	85 f6                	test   %esi,%esi
407eb4:	74 08                	je     0x407ebe
407eb6:	89 98 10 0a 00 00    	mov    %ebx,0xa10(%eax)
407ebc:	eb 1b                	jmp    0x407ed9
407ebe:	ff 74 24 1c          	push   0x1c(%esp)
407ec2:	05 10 02 00 00       	add    $0x210,%eax
407ec7:	50                   	push   %eax
407ec8:	ff 15 cc 21 41 00    	call   *0x4121cc
407ece:	a1 90 66 41 00       	mov    0x416690,%eax
407ed3:	89 b8 10 0a 00 00    	mov    %edi,0xa10(%eax)
407ed9:	57                   	push   %edi
407eda:	68 80 00 00 00       	push   $0x80
407edf:	6a 04                	push   $0x4
407ee1:	57                   	push   %edi
407ee2:	53                   	push   %ebx
407ee3:	6a 04                	push   $0x4
407ee5:	ff 70 0c             	push   0xc(%eax)
407ee8:	ff 15 94 20 41 00    	call   *0x412094
407eee:	8b 0d 90 66 41 00    	mov    0x416690,%ecx
407ef4:	8b 1d 90 20 41 00    	mov    0x412090,%ebx
407efa:	89 41 04             	mov    %eax,0x4(%ecx)
407efd:	39 b9 10 0a 00 00    	cmp    %edi,0xa10(%ecx)
407f03:	0f 85 a4 00 00 00    	jne    0x407fad
407f09:	57                   	push   %edi
407f0a:	8d 41 08             	lea    0x8(%ecx),%eax
407f0d:	be a0 29 41 00       	mov    $0x4129a0,%esi
407f12:	50                   	push   %eax
407f13:	56                   	push   %esi
407f14:	ff 15 fc 21 41 00    	call   *0x4121fc
407f1a:	50                   	push   %eax
407f1b:	a1 90 66 41 00       	mov    0x416690,%eax
407f20:	56                   	push   %esi
407f21:	ff 70 04             	push   0x4(%eax)
407f24:	ff d3                	call   *%ebx
407f26:	a1 90 66 41 00       	mov    0x416690,%eax
407f2b:	57                   	push   %edi
407f2c:	83 c0 08             	add    $0x8,%eax
407f2f:	50                   	push   %eax
407f30:	56                   	push   %esi
407f31:	ff 15 fc 21 41 00    	call   *0x4121fc
407f37:	50                   	push   %eax
407f38:	a1 90 66 41 00       	mov    0x416690,%eax
407f3d:	56                   	push   %esi
407f3e:	ff 70 04             	push   0x4(%eax)
407f41:	ff d3                	call   *%ebx
407f43:	a1 90 66 41 00       	mov    0x416690,%eax
407f48:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
407f4c:	8b 74 24 1c          	mov    0x1c(%esp),%esi
407f50:	83 c0 08             	add    $0x8,%eax
407f53:	57                   	push   %edi
407f54:	50                   	push   %eax
407f55:	e8 34 b1 ff ff       	call   0x40308e
407f5a:	03 c0                	add    %eax,%eax
407f5c:	50                   	push   %eax
407f5d:	a1 90 66 41 00       	mov    0x416690,%eax
407f62:	56                   	push   %esi
407f63:	ff 70 04             	push   0x4(%eax)
407f66:	ff d3                	call   *%ebx
407f68:	a1 90 66 41 00       	mov    0x416690,%eax
407f6d:	be a0 29 41 00       	mov    $0x4129a0,%esi
407f72:	57                   	push   %edi
407f73:	83 c0 08             	add    $0x8,%eax
407f76:	50                   	push   %eax
407f77:	56                   	push   %esi
407f78:	ff 15 fc 21 41 00    	call   *0x4121fc
407f7e:	50                   	push   %eax
407f7f:	a1 90 66 41 00       	mov    0x416690,%eax
407f84:	56                   	push   %esi
407f85:	ff 70 04             	push   0x4(%eax)
407f88:	ff d3                	call   *%ebx
407f8a:	a1 90 66 41 00       	mov    0x416690,%eax
407f8f:	57                   	push   %edi
407f90:	83 c0 08             	add    $0x8,%eax
407f93:	50                   	push   %eax
407f94:	56                   	push   %esi
407f95:	ff 15 fc 21 41 00    	call   *0x4121fc
407f9b:	50                   	push   %eax
407f9c:	a1 90 66 41 00       	mov    0x416690,%eax
407fa1:	56                   	push   %esi
407fa2:	ff 70 04             	push   0x4(%eax)
407fa5:	ff d3                	call   *%ebx
407fa7:	8b 0d 90 66 41 00    	mov    0x416690,%ecx
407fad:	8b 74 24 2c          	mov    0x2c(%esp),%esi
407fb1:	8d 41 08             	lea    0x8(%ecx),%eax
407fb4:	57                   	push   %edi
407fb5:	50                   	push   %eax
407fb6:	8a 4e 16             	mov    0x16(%esi),%cl
407fb9:	e8 8f 00 00 00       	call   0x40804d
407fbe:	50                   	push   %eax
407fbf:	ff 15 fc 21 41 00    	call   *0x4121fc
407fc5:	8a 4e 16             	mov    0x16(%esi),%cl
407fc8:	03 c0                	add    %eax,%eax
407fca:	50                   	push   %eax
407fcb:	e8 7d 00 00 00       	call   0x40804d
407fd0:	50                   	push   %eax
407fd1:	a1 90 66 41 00       	mov    0x416690,%eax
407fd6:	ff 70 04             	push   0x4(%eax)
407fd9:	ff d3                	call   *%ebx
407fdb:	a1 90 66 41 00       	mov    0x416690,%eax
407fe0:	ff 70 04             	push   0x4(%eax)
407fe3:	ff 15 00 22 41 00    	call   *0x412200
407fe9:	8b 4c 24 28          	mov    0x28(%esp),%ecx
407fed:	e8 3b da ff ff       	call   0x405a2d
407ff2:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
407ff6:	89 7c 24 28          	mov    %edi,0x28(%esp)
407ffa:	e8 2e da ff ff       	call   0x405a2d
407fff:	8b 74 24 10          	mov    0x10(%esp),%esi
408003:	eb 36                	jmp    0x40803b
408005:	57                   	push   %edi
408006:	ff 15 cc 22 41 00    	call   *0x4122cc
40800c:	eb 2d                	jmp    0x40803b
40800e:	6a 06                	push   $0x6
408010:	58                   	pop    %eax
408011:	33 db                	xor    %ebx,%ebx
408013:	66 89 44 24 32       	mov    %ax,0x32(%esp)
408018:	8b 45 08             	mov    0x8(%ebp),%eax
40801b:	43                   	inc    %ebx
40801c:	6a 0c                	push   $0xc
40801e:	89 44 24 3c          	mov    %eax,0x3c(%esp)
408022:	8d 44 24 34          	lea    0x34(%esp),%eax
408026:	53                   	push   %ebx
408027:	50                   	push   %eax
408028:	c7 44 24 40 30 01 00 	movl   $0x130,0x40(%esp)
40802f:	00
408030:	66 89 5c 24 3c       	mov    %bx,0x3c(%esp)
408035:	ff 15 bc 22 41 00    	call   *0x4122bc
40803b:	8b ce                	mov    %esi,%ecx
40803d:	e8 eb d9 ff ff       	call   0x405a2d
408042:	8b c7                	mov    %edi,%eax
408044:	5f                   	pop    %edi
408045:	5e                   	pop    %esi
408046:	5b                   	pop    %ebx
408047:	8b e5                	mov    %ebp,%esp
408049:	5d                   	pop    %ebp
40804a:	c2 10 00             	ret    $0x10
40804d:	55                   	push   %ebp
40804e:	8b ec                	mov    %esp,%ebp
408050:	81 ec 04 01 00 00    	sub    $0x104,%esp
408056:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
40805c:	53                   	push   %ebx
40805d:	56                   	push   %esi
40805e:	57                   	push   %edi
40805f:	68 00 01 00 00       	push   $0x100
408064:	6a 00                	push   $0x0
408066:	50                   	push   %eax
408067:	8a d9                	mov    %cl,%bl
408069:	e8 e4 8f ff ff       	call   0x401052
40806e:	83 c4 0c             	add    $0xc,%esp
408071:	0f b6 f3             	movzbl %bl,%esi
408074:	6a 00                	push   $0x0
408076:	56                   	push   %esi
408077:	ff 15 d4 22 41 00    	call   *0x4122d4
40807d:	8b f8                	mov    %eax,%edi
40807f:	83 fe 5c             	cmp    $0x5c,%esi
408082:	77 38                	ja     0x4080bc
408084:	83 fe 5b             	cmp    $0x5b,%esi
408087:	73 78                	jae    0x408101
408089:	83 fe 14             	cmp    $0x14,%esi
40808c:	77 1d                	ja     0x4080ab
40808e:	74 71                	je     0x408101
408090:	83 fe 08             	cmp    $0x8,%esi
408093:	72 72                	jb     0x408107
408095:	83 fe 09             	cmp    $0x9,%esi
408098:	76 67                	jbe    0x408101
40809a:	83 fe 0d             	cmp    $0xd,%esi
40809d:	74 62                	je     0x408101
40809f:	83 fe 0f             	cmp    $0xf,%esi
4080a2:	76 63                	jbe    0x408107
4080a4:	83 fe 12             	cmp    $0x12,%esi
4080a7:	76 58                	jbe    0x408101
4080a9:	eb 5c                	jmp    0x408107
4080ab:	83 fe 20             	cmp    $0x20,%esi
4080ae:	72 57                	jb     0x408107
4080b0:	83 fe 28             	cmp    $0x28,%esi
4080b3:	76 4c                	jbe    0x408101
4080b5:	83 fe 2e             	cmp    $0x2e,%esi
4080b8:	74 47                	je     0x408101
4080ba:	eb 4b                	jmp    0x408107
4080bc:	81 fe b3 00 00 00    	cmp    $0xb3,%esi
4080c2:	77 22                	ja     0x4080e6
4080c4:	81 fe b2 00 00 00    	cmp    $0xb2,%esi
4080ca:	73 35                	jae    0x408101
4080cc:	83 fe 60             	cmp    $0x60,%esi
4080cf:	72 36                	jb     0x408107
4080d1:	83 fe 69             	cmp    $0x69,%esi
4080d4:	76 2b                	jbe    0x408101
4080d6:	81 fe ac 00 00 00    	cmp    $0xac,%esi
4080dc:	76 29                	jbe    0x408107
4080de:	81 fe af 00 00 00    	cmp    $0xaf,%esi
4080e4:	eb c1                	jmp    0x4080a7
4080e6:	81 fe ba 00 00 00    	cmp    $0xba,%esi
4080ec:	72 19                	jb     0x408107
4080ee:	81 fe c0 00 00 00    	cmp    $0xc0,%esi
4080f4:	76 0b                	jbe    0x408101
4080f6:	8d 86 25 ff ff ff    	lea    -0xdb(%esi),%eax
4080fc:	83 f8 03             	cmp    $0x3,%eax
4080ff:	77 06                	ja     0x408107
408101:	81 cf 00 01 00 00    	or     $0x100,%edi
408107:	56                   	push   %esi
408108:	ff 15 88 22 41 00    	call   *0x412288
40810e:	6a 00                	push   $0x0
408110:	6a 01                	push   $0x1
408112:	88 45 ff             	mov    %al,-0x1(%ebp)