408bd2:	1b c9                	sbb    %ecx,%ecx
408bd4:	0b c1                	or     %ecx,%eax
408bd6:	59                   	pop    %ecx
408bd7:	e9 34 21 00 00       	jmp    0x40ad10
408bdc:	8b ff                	mov    %edi,%edi
408bde:	55                   	push   %ebp
408bdf:	8b ec                	mov    %esp,%ebp
408be1:	83 ec 0c             	sub    $0xc,%esp
408be4:	a1 04 f0 41 00       	mov    0x41f004,%eax
408be9:	33 c5                	xor    %ebp,%eax
408beb:	89 45 fc             	mov    %eax,-0x4(%ebp)
408bee:	6a 06                	push   $0x6
408bf0:	8d 45 f4             	lea    -0xc(%ebp),%eax
408bf3:	50                   	push   %eax
408bf4:	68 04 10 00 00       	push   $0x1004
408bf9:	ff 75 08             	push   0x8(%ebp)
408bfc:	c6 45 fa 00          	movb   $0x0,-0x6(%ebp)
408c00:	ff 15 18 d1 41 00    	call   *0x41d118
408c06:	85 c0                	test   %eax,%eax
408c08:	75 05                	jne    0x408c0f
408c0a:	83 c8 ff             	or     $0xffffffff,%eax
408c0d:	eb 0a                	jmp    0x408c19
408c0f:	8d 45 f4             	lea    -0xc(%ebp),%eax
408c12:	50                   	push   %eax
408c13:	e8 f9 01 00 00       	call   0x408e11
408c18:	59                   	pop    %ecx
408c19:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408c1c:	33 cd                	xor    %ebp,%ecx
408c1e:	e8 dd 83 ff ff       	call   0x401000
408c23:	c9                   	leave
408c24:	c3                   	ret
408c25:	8b ff                	mov    %edi,%edi
408c27:	55                   	push   %ebp
408c28:	8b ec                	mov    %esp,%ebp
408c2a:	83 ec 34             	sub    $0x34,%esp
408c2d:	a1 04 f0 41 00       	mov    0x41f004,%eax
408c32:	33 c5                	xor    %ebp,%eax
408c34:	89 45 fc             	mov    %eax,-0x4(%ebp)
408c37:	8b 45 10             	mov    0x10(%ebp),%eax
408c3a:	8b 4d 18             	mov    0x18(%ebp),%ecx
408c3d:	89 45 d8             	mov    %eax,-0x28(%ebp)
408c40:	8b 45 14             	mov    0x14(%ebp),%eax
408c43:	53                   	push   %ebx
408c44:	89 45 d0             	mov    %eax,-0x30(%ebp)
408c47:	8b 00                	mov    (%eax),%eax
408c49:	56                   	push   %esi
408c4a:	89 45 dc             	mov    %eax,-0x24(%ebp)
408c4d:	8b 45 08             	mov    0x8(%ebp),%eax
408c50:	57                   	push   %edi
408c51:	33 ff                	xor    %edi,%edi
408c53:	89 4d cc             	mov    %ecx,-0x34(%ebp)
408c56:	89 7d e0             	mov    %edi,-0x20(%ebp)
408c59:	89 7d d4             	mov    %edi,-0x2c(%ebp)
408c5c:	3b 45 0c             	cmp    0xc(%ebp),%eax
408c5f:	0f 84 5f 01 00 00    	je     0x408dc4
408c65:	8b 35 f4 d0 41 00    	mov    0x41d0f4,%esi
408c6b:	8d 4d e8             	lea    -0x18(%ebp),%ecx
408c6e:	51                   	push   %ecx
408c6f:	50                   	push   %eax
408c70:	ff d6                	call   *%esi
408c72:	8b 1d 20 d1 41 00    	mov    0x41d120,%ebx
408c78:	85 c0                	test   %eax,%eax
408c7a:	74 5e                	je     0x408cda
408c7c:	83 7d e8 01          	cmpl   $0x1,-0x18(%ebp)
408c80:	75 58                	jne    0x408cda
408c82:	8d 45 e8             	lea    -0x18(%ebp),%eax
408c85:	50                   	push   %eax
408c86:	ff 75 0c             	push   0xc(%ebp)
408c89:	ff d6                	call   *%esi
408c8b:	85 c0                	test   %eax,%eax
408c8d:	74 4b                	je     0x408cda
408c8f:	83 7d e8 01          	cmpl   $0x1,-0x18(%ebp)
408c93:	75 45                	jne    0x408cda
408c95:	8b 75 dc             	mov    -0x24(%ebp),%esi
408c98:	c7 45 d4 01 00 00 00 	movl   $0x1,-0x2c(%ebp)
408c9f:	83 fe ff             	cmp    $0xffffffff,%esi
408ca2:	75 0c                	jne    0x408cb0
408ca4:	ff 75 d8             	push   -0x28(%ebp)
408ca7:	e8 e4 b7 ff ff       	call   0x404490
408cac:	8b f0                	mov    %eax,%esi
408cae:	59                   	pop    %ecx
408caf:	46                   	inc    %esi
408cb0:	3b f7                	cmp    %edi,%esi
408cb2:	7e 5b                	jle    0x408d0f
408cb4:	81 fe f0 ff ff 7f    	cmp    $0x7ffffff0,%esi
408cba:	77 53                	ja     0x408d0f
408cbc:	8d 44 36 08          	lea    0x8(%esi,%esi,1),%eax
408cc0:	3d 00 04 00 00       	cmp    $0x400,%eax
408cc5:	77 2f                	ja     0x408cf6
408cc7:	e8 e4 fe ff ff       	call   0x408bb0
408ccc:	8b c4                	mov    %esp,%eax
408cce:	3b c7                	cmp    %edi,%eax
408cd0:	74 38                	je     0x408d0a
408cd2:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
408cd8:	eb 2d                	jmp    0x408d07
408cda:	57                   	push   %edi
408cdb:	57                   	push   %edi
408cdc:	ff 75 dc             	push   -0x24(%ebp)
408cdf:	ff 75 d8             	push   -0x28(%ebp)
408ce2:	6a 01                	push   $0x1
408ce4:	ff 75 08             	push   0x8(%ebp)
408ce7:	ff d3                	call   *%ebx
408ce9:	8b f0                	mov    %eax,%esi
408ceb:	3b f7                	cmp    %edi,%esi
408ced:	75 c3                	jne    0x408cb2
408cef:	33 c0                	xor    %eax,%eax
408cf1:	e9 d1 00 00 00       	jmp    0x408dc7
408cf6:	50                   	push   %eax
408cf7:	e8 3e e9 ff ff       	call   0x40763a
408cfc:	59                   	pop    %ecx
408cfd:	3b c7                	cmp    %edi,%eax
408cff:	74 09                	je     0x408d0a
408d01:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
408d07:	83 c0 08             	add    $0x8,%eax
408d0a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
408d0d:	eb 03                	jmp    0x408d12
408d0f:	89 7d e4             	mov    %edi,-0x1c(%ebp)
408d12:	39 7d e4             	cmp    %edi,-0x1c(%ebp)
408d15:	74 d8                	je     0x408cef
408d17:	8d 04 36             	lea    (%esi,%esi,1),%eax
408d1a:	50                   	push   %eax
408d1b:	57                   	push   %edi
408d1c:	ff 75 e4             	push   -0x1c(%ebp)
408d1f:	e8 1c e1 ff ff       	call   0x406e40
408d24:	83 c4 0c             	add    $0xc,%esp
408d27:	56                   	push   %esi
408d28:	ff 75 e4             	push   -0x1c(%ebp)
408d2b:	ff 75 dc             	push   -0x24(%ebp)
408d2e:	ff 75 d8             	push   -0x28(%ebp)
408d31:	6a 01                	push   $0x1
408d33:	ff 75 08             	push   0x8(%ebp)
408d36:	ff d3                	call   *%ebx
408d38:	85 c0                	test   %eax,%eax
408d3a:	74 7f                	je     0x408dbb
408d3c:	8b 5d cc             	mov    -0x34(%ebp),%ebx
408d3f:	3b df                	cmp    %edi,%ebx
408d41:	74 1d                	je     0x408d60
408d43:	57                   	push   %edi
408d44:	57                   	push   %edi
408d45:	ff 75 1c             	push   0x1c(%ebp)
408d48:	53                   	push   %ebx
408d49:	56                   	push   %esi
408d4a:	ff 75 e4             	push   -0x1c(%ebp)
408d4d:	57                   	push   %edi
408d4e:	ff 75 0c             	push   0xc(%ebp)
408d51:	ff 15 98 d0 41 00    	call   *0x41d098
408d57:	85 c0                	test   %eax,%eax
408d59:	74 60                	je     0x408dbb
408d5b:	89 5d e0             	mov    %ebx,-0x20(%ebp)
408d5e:	eb 5b                	jmp    0x408dbb
408d60:	8b 1d 98 d0 41 00    	mov    0x41d098,%ebx
408d66:	39 7d d4             	cmp    %edi,-0x2c(%ebp)
408d69:	75 14                	jne    0x408d7f
408d6b:	57                   	push   %edi
408d6c:	57                   	push   %edi
408d6d:	57                   	push   %edi
408d6e:	57                   	push   %edi
408d6f:	56                   	push   %esi
408d70:	ff 75 e4             	push   -0x1c(%ebp)
408d73:	57                   	push   %edi
408d74:	ff 75 0c             	push   0xc(%ebp)
408d77:	ff d3                	call   *%ebx
408d79:	8b f0                	mov    %eax,%esi
408d7b:	3b f7                	cmp    %edi,%esi
408d7d:	74 3c                	je     0x408dbb
408d7f:	56                   	push   %esi
408d80:	6a 01                	push   $0x1
408d82:	e8 ef c0 ff ff       	call   0x404e76
408d87:	59                   	pop    %ecx
408d88:	59                   	pop    %ecx
408d89:	89 45 e0             	mov    %eax,-0x20(%ebp)
408d8c:	3b c7                	cmp    %edi,%eax
408d8e:	74 2b                	je     0x408dbb
408d90:	57                   	push   %edi
408d91:	57                   	push   %edi
408d92:	56                   	push   %esi
408d93:	50                   	push   %eax
408d94:	56                   	push   %esi
408d95:	ff 75 e4             	push   -0x1c(%ebp)
408d98:	57                   	push   %edi
408d99:	ff 75 0c             	push   0xc(%ebp)
408d9c:	ff d3                	call   *%ebx
408d9e:	3b c7                	cmp    %edi,%eax
408da0:	75 0e                	jne    0x408db0
408da2:	ff 75 e0             	push   -0x20(%ebp)
408da5:	e8 f9 bf ff ff       	call   0x404da3
408daa:	59                   	pop    %ecx
408dab:	89 7d e0             	mov    %edi,-0x20(%ebp)
408dae:	eb 0b                	jmp    0x408dbb
408db0:	83 7d dc ff          	cmpl   $0xffffffff,-0x24(%ebp)
408db4:	74 05                	je     0x408dbb
408db6:	8b 4d d0             	mov    -0x30(%ebp),%ecx
408db9:	89 01                	mov    %eax,(%ecx)
408dbb:	ff 75 e4             	push   -0x1c(%ebp)
408dbe:	e8 22 e2 ff ff       	call   0x406fe5
408dc3:	59                   	pop    %ecx
408dc4:	8b 45 e0             	mov    -0x20(%ebp),%eax
408dc7:	8d 65 c0             	lea    -0x40(%ebp),%esp
408dca:	5f                   	pop    %edi
408dcb:	5e                   	pop    %esi
408dcc:	5b                   	pop    %ebx
408dcd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408dd0:	33 cd                	xor    %ebp,%ecx
408dd2:	e8 29 82 ff ff       	call   0x401000
408dd7:	c9                   	leave
408dd8:	c3                   	ret
408dd9:	8b ff                	mov    %edi,%edi
408ddb:	55                   	push   %ebp
408ddc:	8b ec                	mov    %esp,%ebp
408dde:	83 ec 10             	sub    $0x10,%esp
408de1:	ff 75 0c             	push   0xc(%ebp)
408de4:	8d 4d f0             	lea    -0x10(%ebp),%ecx
408de7:	e8 e2 b7 ff ff       	call   0x4045ce
408dec:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
408df0:	8b 4d f0             	mov    -0x10(%ebp),%ecx
408df3:	8b 89 c8 00 00 00    	mov    0xc8(%ecx),%ecx
408df9:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
408dfd:	25 00 80 00 00       	and    $0x8000,%eax
408e02:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
408e06:	74 07                	je     0x408e0f
408e08:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408e0b:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
408e0f:	c9                   	leave
408e10:	c3                   	ret
408e11:	8b ff                	mov    %edi,%edi
408e13:	55                   	push   %ebp
408e14:	8b ec                	mov    %esp,%ebp
408e16:	6a 0a                	push   $0xa
408e18:	6a 00                	push   $0x0
408e1a:	ff 75 08             	push   0x8(%ebp)
408e1d:	e8 48 21 00 00       	call   0x40af6a
408e22:	83 c4 0c             	add    $0xc,%esp
408e25:	5d                   	pop    %ebp
408e26:	c3                   	ret
408e27:	8b ff                	mov    %edi,%edi
408e29:	55                   	push   %ebp
408e2a:	8b ec                	mov    %esp,%ebp
408e2c:	83 ec 2c             	sub    $0x2c,%esp
408e2f:	8b 45 08             	mov    0x8(%ebp),%eax
408e32:	0f b7 48 0a          	movzwl 0xa(%eax),%ecx
408e36:	53                   	push   %ebx
408e37:	8b d9                	mov    %ecx,%ebx
408e39:	81 e1 00 80 00 00    	and    $0x8000,%ecx
408e3f:	89 4d ec             	mov    %ecx,-0x14(%ebp)
408e42:	8b 48 06             	mov    0x6(%eax),%ecx
408e45:	89 4d e0             	mov    %ecx,-0x20(%ebp)
408e48:	8b 48 02             	mov    0x2(%eax),%ecx
408e4b:	0f b7 00             	movzwl (%eax),%eax
408e4e:	81 e3 ff 7f 00 00    	and    $0x7fff,%ebx
408e54:	81 eb ff 3f 00 00    	sub    $0x3fff,%ebx
408e5a:	c1 e0 10             	shl    $0x10,%eax
408e5d:	57                   	push   %edi
408e5e:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
408e61:	89 45 e8             	mov    %eax,-0x18(%ebp)
408e64:	81 fb 01 c0 ff ff    	cmp    $0xffffc001,%ebx
408e6a:	75 27                	jne    0x408e93
408e6c:	33 db                	xor    %ebx,%ebx
408e6e:	33 c0                	xor    %eax,%eax
408e70:	39 5c 85 e0          	cmp    %ebx,-0x20(%ebp,%eax,4)
408e74:	75 0d                	jne    0x408e83
408e76:	40                   	inc    %eax
408e77:	83 f8 03             	cmp    $0x3,%eax
408e7a:	7c f4                	jl     0x408e70
408e7c:	33 c0                	xor    %eax,%eax
408e7e:	e9 a5 04 00 00       	jmp    0x409328
408e83:	33 c0                	xor    %eax,%eax
408e85:	8d 7d e0             	lea    -0x20(%ebp),%edi
408e88:	ab                   	stos   %eax,%es:(%edi)
408e89:	ab                   	stos   %eax,%es:(%edi)
408e8a:	6a 02                	push   $0x2
408e8c:	ab                   	stos   %eax,%es:(%edi)
408e8d:	58                   	pop    %eax
408e8e:	e9 95 04 00 00       	jmp    0x409328
408e93:	83 65 08 00          	andl   $0x0,0x8(%ebp)
408e97:	56                   	push   %esi
408e98:	8d 75 e0             	lea    -0x20(%ebp),%esi
408e9b:	8d 7d d4             	lea    -0x2c(%ebp),%edi
408e9e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408e9f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408ea0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408ea1:	8b 35 28 fd 41 00    	mov    0x41fd28,%esi
408ea7:	4e                   	dec    %esi
408ea8:	8d 4e 01             	lea    0x1(%esi),%ecx
408eab:	8b c1                	mov    %ecx,%eax
408ead:	99                   	cltd
408eae:	83 e2 1f             	and    $0x1f,%edx
408eb1:	03 c2                	add    %edx,%eax
408eb3:	c1 f8 05             	sar    $0x5,%eax
408eb6:	8b d1                	mov    %ecx,%edx
408eb8:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
408ebe:	89 5d f0             	mov    %ebx,-0x10(%ebp)
408ec1:	89 45 f4             	mov    %eax,-0xc(%ebp)
408ec4:	79 05                	jns    0x408ecb
408ec6:	4a                   	dec    %edx
408ec7:	83 ca e0             	or     $0xffffffe0,%edx
408eca:	42                   	inc    %edx
408ecb:	8d 7c 85 e0          	lea    -0x20(%ebp,%eax,4),%edi
408ecf:	6a 1f                	push   $0x1f
408ed1:	33 c0                	xor    %eax,%eax
408ed3:	59                   	pop    %ecx
408ed4:	2b ca                	sub    %edx,%ecx
408ed6:	40                   	inc    %eax
408ed7:	d3 e0                	shl    %cl,%eax
408ed9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
408edc:	85 07                	test   %eax,(%edi)
408ede:	0f 84 8d 00 00 00    	je     0x408f71
408ee4:	8b 45 f4             	mov    -0xc(%ebp),%eax
408ee7:	83 ca ff             	or     $0xffffffff,%edx
408eea:	d3 e2                	shl    %cl,%edx
408eec:	f7 d2                	not    %edx
408eee:	85 54 85 e0          	test   %edx,-0x20(%ebp,%eax,4)
408ef2:	eb 05                	jmp    0x408ef9
408ef4:	83 7c 85 e0 00       	cmpl   $0x0,-0x20(%ebp,%eax,4)
408ef9:	75 08                	jne    0x408f03
408efb:	40                   	inc    %eax
408efc:	83 f8 03             	cmp    $0x3,%eax
408eff:	7c f3                	jl     0x408ef4
408f01:	eb 6e                	jmp    0x408f71
408f03:	8b c6                	mov    %esi,%eax
408f05:	99                   	cltd
408f06:	6a 1f                	push   $0x1f
408f08:	59                   	pop    %ecx
408f09:	23 d1                	and    %ecx,%edx
408f0b:	03 c2                	add    %edx,%eax
408f0d:	c1 f8 05             	sar    $0x5,%eax
408f10:	81 e6 1f 00 00 80    	and    $0x8000001f,%esi
408f16:	79 05                	jns    0x408f1d
408f18:	4e                   	dec    %esi
408f19:	83 ce e0             	or     $0xffffffe0,%esi
408f1c:	46                   	inc    %esi
408f1d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408f21:	2b ce                	sub    %esi,%ecx
408f23:	33 d2                	xor    %edx,%edx
408f25:	42                   	inc    %edx
408f26:	d3 e2                	shl    %cl,%edx
408f28:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
408f2c:	8b 31                	mov    (%ecx),%esi
408f2e:	03 f2                	add    %edx,%esi
408f30:	89 75 08             	mov    %esi,0x8(%ebp)
408f33:	8b 31                	mov    (%ecx),%esi
408f35:	39 75 08             	cmp    %esi,0x8(%ebp)
408f38:	72 22                	jb     0x408f5c
408f3a:	39 55 08             	cmp    %edx,0x8(%ebp)
408f3d:	eb 1b                	jmp    0x408f5a
408f3f:	85 c9                	test   %ecx,%ecx
408f41:	74 2b                	je     0x408f6e
408f43:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408f47:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
408f4b:	8b 11                	mov    (%ecx),%edx
408f4d:	8d 72 01             	lea    0x1(%edx),%esi