408bba:	68 8c 45 40 00       	push   $0x40458c
408bbf:	ff 76 fc             	push   -0x4(%esi)
408bc2:	ff 15 28 f1 40 00    	call   *0x40f128
408bc8:	59                   	pop    %ecx
408bc9:	59                   	pop    %ecx
408bca:	85 c0                	test   %eax,%eax
408bcc:	75 0f                	jne    0x408bdd
408bce:	8b 45 f8             	mov    -0x8(%ebp),%eax
408bd1:	3b 45 0c             	cmp    0xc(%ebp),%eax
408bd4:	73 07                	jae    0x408bdd
408bd6:	8b 0e                	mov    (%esi),%ecx
408bd8:	89 4d d8             	mov    %ecx,-0x28(%ebp)
408bdb:	eb 21                	jmp    0x408bfe
408bdd:	68 9c 45 40 00       	push   $0x40459c
408be2:	ff 76 fc             	push   -0x4(%esi)
408be5:	ff 15 28 f1 40 00    	call   *0x40f128
408beb:	59                   	pop    %ecx
408bec:	59                   	pop    %ecx
408bed:	85 c0                	test   %eax,%eax
408bef:	75 18                	jne    0x408c09
408bf1:	8b 45 f8             	mov    -0x8(%ebp),%eax
408bf4:	3b 45 0c             	cmp    0xc(%ebp),%eax
408bf7:	73 10                	jae    0x408c09
408bf9:	8b 0e                	mov    (%esi),%ecx
408bfb:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
408bfe:	8b 4d ec             	mov    -0x14(%ebp),%ecx
408c01:	8b 55 e8             	mov    -0x18(%ebp),%edx
408c04:	e9 5a 01 00 00       	jmp    0x408d63
408c09:	68 b0 45 40 00       	push   $0x4045b0
408c0e:	ff 76 fc             	push   -0x4(%esi)
408c11:	ff 15 28 f1 40 00    	call   *0x40f128
408c17:	59                   	pop    %ecx
408c18:	59                   	pop    %ecx
408c19:	85 c0                	test   %eax,%eax
408c1b:	0f 85 a7 01 00 00    	jne    0x408dc8
408c21:	8b 45 0c             	mov    0xc(%ebp),%eax
408c24:	39 45 f8             	cmp    %eax,-0x8(%ebp)
408c27:	0f 83 9b 01 00 00    	jae    0x408dc8
408c2d:	8b 0e                	mov    (%esi),%ecx
408c2f:	0f b7 01             	movzwl (%ecx),%eax
408c32:	66 85 c0             	test   %ax,%ax
408c35:	74 1b                	je     0x408c52
408c37:	6a 2f                	push   $0x2f
408c39:	8b d0                	mov    %eax,%edx
408c3b:	5e                   	pop    %esi
408c3c:	66 3b d6             	cmp    %si,%dx
408c3f:	75 01                	jne    0x408c42
408c41:	47                   	inc    %edi
408c42:	83 c1 02             	add    $0x2,%ecx
408c45:	0f b7 01             	movzwl (%ecx),%eax
408c48:	8b d0                	mov    %eax,%edx
408c4a:	66 85 c0             	test   %ax,%ax
408c4d:	75 ed                	jne    0x408c3c
408c4f:	8b 75 e0             	mov    -0x20(%ebp),%esi
408c52:	8d 47 02             	lea    0x2(%edi),%eax
408c55:	d1 e8                	shr    $1,%eax
408c57:	c1 e0 03             	shl    $0x3,%eax
408c5a:	50                   	push   %eax
408c5b:	6a 40                	push   $0x40
408c5d:	ff 15 64 f0 40 00    	call   *0x40f064
408c63:	89 45 f4             	mov    %eax,-0xc(%ebp)
408c66:	85 c0                	test   %eax,%eax
408c68:	0f 84 43 01 00 00    	je     0x408db1
408c6e:	8b 3e                	mov    (%esi),%edi
408c70:	8b cf                	mov    %edi,%ecx
408c72:	89 7d ec             	mov    %edi,-0x14(%ebp)
408c75:	89 5d f0             	mov    %ebx,-0x10(%ebp)
408c78:	8d 51 02             	lea    0x2(%ecx),%edx
408c7b:	66 8b 01             	mov    (%ecx),%ax
408c7e:	83 c1 02             	add    $0x2,%ecx
408c81:	66 3b c3             	cmp    %bx,%ax
408c84:	75 f5                	jne    0x408c7b
408c86:	2b ca                	sub    %edx,%ecx
408c88:	d1 f9                	sar    $1,%ecx
408c8a:	6a 2f                	push   $0x2f
408c8c:	8d 04 4f             	lea    (%edi,%ecx,2),%eax
408c8f:	89 45 d0             	mov    %eax,-0x30(%ebp)
408c92:	59                   	pop    %ecx
408c93:	66 89 08             	mov    %cx,(%eax)
408c96:	3b f8                	cmp    %eax,%edi
408c98:	0f 87 b6 00 00 00    	ja     0x408d54
408c9e:	8b 5d ec             	mov    -0x14(%ebp),%ebx
408ca1:	8b 75 f0             	mov    -0x10(%ebp),%esi
408ca4:	66 39 0f             	cmp    %cx,(%edi)
408ca7:	0f 85 97 00 00 00    	jne    0x408d44
408cad:	33 c0                	xor    %eax,%eax
408caf:	66 89 07             	mov    %ax,(%edi)
408cb2:	38 45 ff             	cmp    %al,-0x1(%ebp)
408cb5:	74 64                	je     0x408d1b
408cb7:	68 0c 46 40 00       	push   $0x40460c
408cbc:	53                   	push   %ebx
408cbd:	ff 15 28 f1 40 00    	call   *0x40f128
408cc3:	59                   	pop    %ecx
408cc4:	59                   	pop    %ecx
408cc5:	85 c0                	test   %eax,%eax
408cc7:	75 10                	jne    0x408cd9
408cc9:	8b 45 f4             	mov    -0xc(%ebp),%eax
408ccc:	83 4d e4 10          	orl    $0x10,-0x1c(%ebp)
408cd0:	c7 04 f0 01 00 00 00 	movl   $0x1,(%eax,%esi,8)
408cd7:	eb 5a                	jmp    0x408d33
408cd9:	68 1c 46 40 00       	push   $0x40461c
408cde:	53                   	push   %ebx
408cdf:	ff 15 28 f1 40 00    	call   *0x40f128
408ce5:	59                   	pop    %ecx
408ce6:	59                   	pop    %ecx
408ce7:	85 c0                	test   %eax,%eax
408ce9:	75 10                	jne    0x408cfb
408ceb:	8b 45 f4             	mov    -0xc(%ebp),%eax
408cee:	c6 45 fe 01          	movb   $0x1,-0x2(%ebp)
408cf2:	c7 04 f0 02 00 00 00 	movl   $0x2,(%eax,%esi,8)
408cf9:	eb 38                	jmp    0x408d33
408cfb:	68 2c 46 40 00       	push   $0x40462c
408d00:	53                   	push   %ebx
408d01:	ff 15 28 f1 40 00    	call   *0x40f128
408d07:	f7 d8                	neg    %eax
408d09:	59                   	pop    %ecx
408d0a:	59                   	pop    %ecx
408d0b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
408d0e:	1b c0                	sbb    %eax,%eax
408d10:	83 e0 fd             	and    $0xfffffffd,%eax
408d13:	83 c0 03             	add    $0x3,%eax
408d16:	89 04 f1             	mov    %eax,(%ecx,%esi,8)
408d19:	eb 18                	jmp    0x408d33
408d1b:	53                   	push   %ebx
408d1c:	ff 15 0c f1 40 00    	call   *0x40f10c
408d22:	8b 55 f0             	mov    -0x10(%ebp),%edx
408d25:	59                   	pop    %ecx
408d26:	8b 4d f4             	mov    -0xc(%ebp),%ecx
408d29:	89 44 d1 04          	mov    %eax,0x4(%ecx,%edx,8)
408d2d:	42                   	inc    %edx
408d2e:	89 55 f0             	mov    %edx,-0x10(%ebp)
408d31:	8b f2                	mov    %edx,%esi
408d33:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
408d37:	8d 5f 02             	lea    0x2(%edi),%ebx
408d3a:	8b 45 d0             	mov    -0x30(%ebp),%eax
408d3d:	6a 2f                	push   $0x2f
408d3f:	0f 94 45 ff          	sete   -0x1(%ebp)
408d43:	59                   	pop    %ecx
408d44:	83 c7 02             	add    $0x2,%edi
408d47:	3b f8                	cmp    %eax,%edi
408d49:	0f 86 55 ff ff ff    	jbe    0x408ca4
408d4f:	8b 75 e0             	mov    -0x20(%ebp),%esi
408d52:	33 db                	xor    %ebx,%ebx
408d54:	8b 7d f0             	mov    -0x10(%ebp),%edi
408d57:	33 c9                	xor    %ecx,%ecx
408d59:	8b 55 e8             	mov    -0x18(%ebp),%edx
408d5c:	41                   	inc    %ecx
408d5d:	89 4d ec             	mov    %ecx,-0x14(%ebp)
408d60:	8b 45 f8             	mov    -0x8(%ebp),%eax
408d63:	83 c0 02             	add    $0x2,%eax
408d66:	83 c6 08             	add    $0x8,%esi
408d69:	89 45 f8             	mov    %eax,-0x8(%ebp)
408d6c:	48                   	dec    %eax
408d6d:	89 75 e0             	mov    %esi,-0x20(%ebp)
408d70:	3b 45 0c             	cmp    0xc(%ebp),%eax
408d73:	0f 82 f2 fd ff ff    	jb     0x408b6b
408d79:	3b d1                	cmp    %ecx,%edx
408d7b:	74 0d                	je     0x408d8a
408d7d:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
408d84:	75 55                	jne    0x408ddb
408d86:	6a 6e                	push   $0x6e
408d88:	eb 49                	jmp    0x408dd3
408d8a:	80 7d fe 00          	cmpb   $0x0,-0x2(%ebp)
408d8e:	74 55                	je     0x408de5
408d90:	8d 45 fd             	lea    -0x3(%ebp),%eax
408d93:	50                   	push   %eax
408d94:	53                   	push   %ebx
408d95:	6a 01                	push   $0x1
408d97:	6a 13                	push   $0x13
408d99:	ff 15 40 f1 40 00    	call   *0x40f140
408d9f:	85 c0                	test   %eax,%eax
408da1:	79 42                	jns    0x408de5
408da3:	50                   	push   %eax
408da4:	ff 15 44 f1 40 00    	call   *0x40f144
408daa:	b9 38 46 40 00       	mov    $0x404638,%ecx
408daf:	eb 0b                	jmp    0x408dbc
408db1:	ff 15 40 f0 40 00    	call   *0x40f040
408db7:	b9 c8 45 40 00       	mov    $0x4045c8,%ecx
408dbc:	8b d0                	mov    %eax,%edx
408dbe:	e8 bd fb ff ff       	call   0x408980
408dc3:	e9 9f 00 00 00       	jmp    0x408e67
408dc8:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
408dcf:	75 0a                	jne    0x408ddb
408dd1:	6a 6a                	push   $0x6a
408dd3:	33 d2                	xor    %edx,%edx
408dd5:	59                   	pop    %ecx
408dd6:	e8 d4 17 00 00       	call   0x40a5af
408ddb:	e8 9d fc ff ff       	call   0x408a7d
408de0:	e9 82 00 00 00       	jmp    0x408e67
408de5:	8b 45 e4             	mov    -0x1c(%ebp),%eax
408de8:	8b 75 f4             	mov    -0xc(%ebp),%esi
408deb:	50                   	push   %eax
408dec:	ff 75 cc             	push   -0x34(%ebp)
408def:	ff 75 c8             	push   -0x38(%ebp)
408df2:	ff 15 3c 00 41 00    	call   *0x41003c
408df8:	8b c8                	mov    %eax,%ecx
408dfa:	8b 45 10             	mov    0x10(%ebp),%eax
408dfd:	89 08                	mov    %ecx,(%eax)
408dff:	85 c9                	test   %ecx,%ecx
408e01:	75 0d                	jne    0x408e10
408e03:	ff 15 40 f0 40 00    	call   *0x40f040
408e09:	b9 88 14 40 00       	mov    $0x401488,%ecx
408e0e:	eb ac                	jmp    0x408dbc
408e10:	8b 45 dc             	mov    -0x24(%ebp),%eax
408e13:	89 45 b4             	mov    %eax,-0x4c(%ebp)
408e16:	8b 45 d8             	mov    -0x28(%ebp),%eax
408e19:	89 45 b8             	mov    %eax,-0x48(%ebp)
408e1c:	8b 45 d4             	mov    -0x2c(%ebp),%eax
408e1f:	89 45 bc             	mov    %eax,-0x44(%ebp)
408e22:	8d 45 b4             	lea    -0x4c(%ebp),%eax
408e25:	50                   	push   %eax
408e26:	6a 02                	push   $0x2
408e28:	51                   	push   %ecx
408e29:	89 7d c0             	mov    %edi,-0x40(%ebp)
408e2c:	89 75 c4             	mov    %esi,-0x3c(%ebp)
408e2f:	ff 15 68 00 41 00    	call   *0x410068
408e35:	85 c0                	test   %eax,%eax
408e37:	75 1a                	jne    0x408e53
408e39:	ff 15 40 f0 40 00    	call   *0x40f040
408e3f:	8b d8                	mov    %eax,%ebx
408e41:	85 db                	test   %ebx,%ebx
408e43:	74 0e                	je     0x408e53
408e45:	8b d3                	mov    %ebx,%edx
408e47:	b9 3c 45 40 00       	mov    $0x40453c,%ecx
408e4c:	e8 2f fb ff ff       	call   0x408980
408e51:	eb 12                	jmp    0x408e65
408e53:	6a 64                	push   $0x64
408e55:	8d 55 c8             	lea    -0x38(%ebp),%edx
408e58:	c7 45 c8 3c 45 40 00 	movl   $0x40453c,-0x38(%ebp)
408e5f:	59                   	pop    %ecx
408e60:	e8 4a 17 00 00       	call   0x40a5af
408e65:	8b c3                	mov    %ebx,%eax
408e67:	5f                   	pop    %edi
408e68:	5e                   	pop    %esi
408e69:	5b                   	pop    %ebx
408e6a:	c9                   	leave
408e6b:	c2 0c 00             	ret    $0xc
408e6e:	8b ff                	mov    %edi,%edi
408e70:	55                   	push   %ebp
408e71:	8b ec                	mov    %esp,%ebp
408e73:	51                   	push   %ecx
408e74:	51                   	push   %ecx
408e75:	56                   	push   %esi
408e76:	6a 02                	push   $0x2
408e78:	52                   	push   %edx
408e79:	51                   	push   %ecx
408e7a:	33 f6                	xor    %esi,%esi
408e7c:	ff 15 3c 00 41 00    	call   *0x41003c
408e82:	8b c8                	mov    %eax,%ecx
408e84:	8b 45 0c             	mov    0xc(%ebp),%eax
408e87:	89 08                	mov    %ecx,(%eax)
408e89:	85 c9                	test   %ecx,%ecx
408e8b:	75 16                	jne    0x408ea3
408e8d:	ff 15 40 f0 40 00    	call   *0x40f040
408e93:	8b d0                	mov    %eax,%edx
408e95:	b9 88 14 40 00       	mov    $0x401488,%ecx
408e9a:	e8 e1 fa ff ff       	call   0x408980
408e9f:	8b f0                	mov    %eax,%esi
408ea1:	eb 43                	jmp    0x408ee6
408ea3:	8b 45 08             	mov    0x8(%ebp),%eax
408ea6:	89 45 fc             	mov    %eax,-0x4(%ebp)
408ea9:	8d 45 fc             	lea    -0x4(%ebp),%eax
408eac:	50                   	push   %eax
408ead:	6a 04                	push   $0x4
408eaf:	51                   	push   %ecx
408eb0:	ff 15 68 00 41 00    	call   *0x410068
408eb6:	85 c0                	test   %eax,%eax
408eb8:	75 1a                	jne    0x408ed4
408eba:	ff 15 40 f0 40 00    	call   *0x40f040
408ec0:	8b f0                	mov    %eax,%esi
408ec2:	85 f6                	test   %esi,%esi
408ec4:	74 0e                	je     0x408ed4
408ec6:	8b d6                	mov    %esi,%edx
408ec8:	b9 3c 45 40 00       	mov    $0x40453c,%ecx
408ecd:	e8 ae fa ff ff       	call   0x408980
408ed2:	eb 12                	jmp    0x408ee6
408ed4:	6a 64                	push   $0x64
408ed6:	8d 55 f8             	lea    -0x8(%ebp),%edx
408ed9:	c7 45 f8 3c 45 40 00 	movl   $0x40453c,-0x8(%ebp)
408ee0:	59                   	pop    %ecx
408ee1:	e8 c9 16 00 00       	call   0x40a5af
408ee6:	8b c6                	mov    %esi,%eax
408ee8:	5e                   	pop    %esi
408ee9:	c9                   	leave
408eea:	c2 08 00             	ret    $0x8
408eed:	8b ff                	mov    %edi,%edi
408eef:	55                   	push   %ebp
408ef0:	8b ec                	mov    %esp,%ebp
408ef2:	51                   	push   %ecx
408ef3:	51                   	push   %ecx
408ef4:	56                   	push   %esi
408ef5:	6a 02                	push   $0x2
408ef7:	52                   	push   %edx
408ef8:	51                   	push   %ecx
408ef9:	33 f6                	xor    %esi,%esi
408efb:	ff 15 3c 00 41 00    	call   *0x41003c
408f01:	8b c8                	mov    %eax,%ecx
408f03:	8b 45 0c             	mov    0xc(%ebp),%eax
408f06:	89 08                	mov    %ecx,(%eax)
408f08:	85 c9                	test   %ecx,%ecx
408f0a:	75 16                	jne    0x408f22
408f0c:	ff 15 40 f0 40 00    	call   *0x40f040
408f12:	8b d0                	mov    %eax,%edx
408f14:	b9 88 14 40 00       	mov    $0x401488,%ecx
408f19:	e8 62 fa ff ff       	call   0x408980
408f1e:	8b f0                	mov    %eax,%esi
408f20:	eb 43                	jmp    0x408f65
408f22:	8a 45 08             	mov    0x8(%ebp),%al
408f25:	88 45 ff             	mov    %al,-0x1(%ebp)
408f28:	8d 45 ff             	lea    -0x1(%ebp),%eax
408f2b:	50                   	push   %eax
408f2c:	6a 0b                	push   $0xb
408f2e:	51                   	push   %ecx
408f2f:	ff 15 68 00 41 00    	call   *0x410068
408f35:	85 c0                	test   %eax,%eax
408f37:	75 1a                	jne    0x408f53
408f39:	ff 15 40 f0 40 00    	call   *0x40f040
408f3f:	8b f0                	mov    %eax,%esi
408f41:	85 f6                	test   %esi,%esi
408f43:	74 0e                	je     0x408f53
408f45:	8b d6                	mov    %esi,%edx
408f47:	b9 3c 45 40 00       	mov    $0x40453c,%ecx
408f4c:	e8 2f fa ff ff       	call   0x408980
408f51:	eb 12                	jmp    0x408f65
408f53:	6a 64                	push   $0x64
408f55:	8d 55 f8             	lea    -0x8(%ebp),%edx
408f58:	c7 45 f8 3c 45 40 00 	movl   $0x40453c,-0x8(%ebp)
408f5f:	59                   	pop    %ecx
408f60:	e8 4a 16 00 00       	call   0x40a5af
408f65:	8b c6                	mov    %esi,%eax
408f67:	5e                   	pop    %esi
408f68:	c9                   	leave
408f69:	c2 08 00             	ret    $0x8
408f6c:	8b ff                	mov    %edi,%edi
408f6e:	55                   	push   %ebp
408f6f:	8b ec                	mov    %esp,%ebp
408f71:	51                   	push   %ecx
408f72:	51                   	push   %ecx
408f73:	56                   	push   %esi
408f74:	6a 02                	push   $0x2
408f76:	52                   	push   %edx
408f77:	33 f6                	xor    %esi,%esi
408f79:	51                   	push   %ecx
408f7a:	89 75 fc             	mov    %esi,-0x4(%ebp)
408f7d:	ff 15 3c 00 41 00    	call   *0x41003c
408f83:	8b c8                	mov    %eax,%ecx
408f85:	8b 45 0c             	mov    0xc(%ebp),%eax
408f88:	89 08                	mov    %ecx,(%eax)
408f8a:	85 c9                	test   %ecx,%ecx
408f8c:	75 16                	jne    0x408fa4