40cd62:	c2 0c 00             	ret    $0xc
40cd65:	8b 55 fc             	mov    -0x4(%ebp),%edx
40cd68:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
40cd6d:	2b c2                	sub    %edx,%eax
40cd6f:	3b c1                	cmp    %ecx,%eax
40cd71:	0f 82 e3 00 00 00    	jb     0x40ce5a
40cd77:	8b 45 f4             	mov    -0xc(%ebp),%eax
40cd7a:	83 c8 07             	or     $0x7,%eax
40cd7d:	3d fe ff ff 7f       	cmp    $0x7ffffffe,%eax
40cd82:	76 07                	jbe    0x40cd8b
40cd84:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
40cd89:	eb 0a                	jmp    0x40cd95
40cd8b:	b9 0a 00 00 00       	mov    $0xa,%ecx
40cd90:	3b c1                	cmp    %ecx,%eax
40cd92:	0f 42 c1             	cmovb  %ecx,%eax
40cd95:	33 c9                	xor    %ecx,%ecx
40cd97:	89 45 f8             	mov    %eax,-0x8(%ebp)
40cd9a:	83 c0 01             	add    $0x1,%eax
40cd9d:	0f 92 c1             	setb   %cl
40cda0:	f7 d9                	neg    %ecx
40cda2:	0b c8                	or     %eax,%ecx
40cda4:	81 f9 ff ff ff 7f    	cmp    $0x7fffffff,%ecx
40cdaa:	0f 87 a5 00 00 00    	ja     0x40ce55
40cdb0:	03 c9                	add    %ecx,%ecx
40cdb2:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40cdb8:	72 2a                	jb     0x40cde4
40cdba:	8d 41 23             	lea    0x23(%ecx),%eax
40cdbd:	3b c1                	cmp    %ecx,%eax
40cdbf:	0f 86 90 00 00 00    	jbe    0x40ce55
40cdc5:	50                   	push   %eax
40cdc6:	e8 13 eb 00 00       	call   0x41b8de
40cdcb:	83 c4 04             	add    $0x4,%esp
40cdce:	85 c0                	test   %eax,%eax
40cdd0:	0f 84 89 00 00 00    	je     0x40ce5f
40cdd6:	8b 55 fc             	mov    -0x4(%ebp),%edx
40cdd9:	8d 48 23             	lea    0x23(%eax),%ecx
40cddc:	83 e1 e0             	and    $0xffffffe0,%ecx
40cddf:	89 41 fc             	mov    %eax,-0x4(%ecx)
40cde2:	eb 19                	jmp    0x40cdfd
40cde4:	85 c9                	test   %ecx,%ecx
40cde6:	74 13                	je     0x40cdfb
40cde8:	51                   	push   %ecx
40cde9:	e8 f0 ea 00 00       	call   0x41b8de
40cdee:	8b 55 fc             	mov    -0x4(%ebp),%edx
40cdf1:	83 c4 04             	add    $0x4,%esp
40cdf4:	8b c8                	mov    %eax,%ecx
40cdf6:	89 45 f0             	mov    %eax,-0x10(%ebp)
40cdf9:	eb 05                	jmp    0x40ce00
40cdfb:	33 c9                	xor    %ecx,%ecx
40cdfd:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40ce00:	8b 45 f4             	mov    -0xc(%ebp),%eax
40ce03:	89 47 10             	mov    %eax,0x10(%edi)
40ce06:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ce09:	89 0f                	mov    %ecx,(%edi)
40ce0b:	89 47 14             	mov    %eax,0x14(%edi)
40ce0e:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40ce12:	72 02                	jb     0x40ce16
40ce14:	8b 36                	mov    (%esi),%esi
40ce16:	8d 04 12             	lea    (%edx,%edx,1),%eax
40ce19:	50                   	push   %eax
40ce1a:	56                   	push   %esi
40ce1b:	51                   	push   %ecx
40ce1c:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ce1f:	e8 2c 06 01 00       	call   0x41d450
40ce24:	83 c4 0c             	add    $0xc,%esp
40ce27:	83 7b 14 08          	cmpl   $0x8,0x14(%ebx)
40ce2b:	72 02                	jb     0x40ce2f
40ce2d:	8b 1b                	mov    (%ebx),%ebx
40ce2f:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40ce32:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40ce39:	51                   	push   %ecx
40ce3a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ce3d:	03 4d f0             	add    -0x10(%ebp),%ecx
40ce40:	53                   	push   %ebx
40ce41:	51                   	push   %ecx
40ce42:	e8 09 06 01 00       	call   0x41d450
40ce47:	83 c4 0c             	add    $0xc,%esp
40ce4a:	8b c7                	mov    %edi,%eax
40ce4c:	5f                   	pop    %edi
40ce4d:	5e                   	pop    %esi
40ce4e:	5b                   	pop    %ebx
40ce4f:	8b e5                	mov    %ebp,%esp
40ce51:	5d                   	pop    %ebp
40ce52:	c2 0c 00             	ret    $0xc
40ce55:	e8 a6 43 ff ff       	call   0x401200
40ce5a:	e8 41 44 ff ff       	call   0x4012a0
40ce5f:	e8 1b 3c 01 00       	call   0x420a7f
40ce64:	cc                   	int3
40ce65:	cc                   	int3
40ce66:	cc                   	int3
40ce67:	cc                   	int3
40ce68:	cc                   	int3
40ce69:	cc                   	int3
40ce6a:	cc                   	int3
40ce6b:	cc                   	int3
40ce6c:	cc                   	int3
40ce6d:	cc                   	int3
40ce6e:	cc                   	int3
40ce6f:	cc                   	int3
40ce70:	55                   	push   %ebp
40ce71:	8b ec                	mov    %esp,%ebp
40ce73:	83 ec 10             	sub    $0x10,%esp
40ce76:	8b 45 10             	mov    0x10(%ebp),%eax
40ce79:	8b 55 1c             	mov    0x1c(%ebp),%edx
40ce7c:	53                   	push   %ebx
40ce7d:	8b d9                	mov    %ecx,%ebx
40ce7f:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ce82:	8b 45 14             	mov    0x14(%ebp),%eax
40ce85:	03 d0                	add    %eax,%edx
40ce87:	8b 4d 18             	mov    0x18(%ebp),%ecx
40ce8a:	56                   	push   %esi
40ce8b:	be 07 00 00 00       	mov    $0x7,%esi
40ce90:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ce93:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40ce96:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
40ce9c:	c7 43 10 00 00 00 00 	movl   $0x0,0x10(%ebx)
40cea3:	c7 43 14 00 00 00 00 	movl   $0x0,0x14(%ebx)
40ceaa:	89 55 fc             	mov    %edx,-0x4(%ebp)
40cead:	57                   	push   %edi
40ceae:	8b fb                	mov    %ebx,%edi
40ceb0:	3b d6                	cmp    %esi,%edx
40ceb2:	76 7f                	jbe    0x40cf33
40ceb4:	8b f2                	mov    %edx,%esi
40ceb6:	83 ce 07             	or     $0x7,%esi
40ceb9:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
40cebf:	76 07                	jbe    0x40cec8
40cec1:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40cec6:	eb 0a                	jmp    0x40ced2
40cec8:	b8 0a 00 00 00       	mov    $0xa,%eax
40cecd:	3b f0                	cmp    %eax,%esi
40cecf:	0f 42 f0             	cmovb  %eax,%esi
40ced2:	33 c9                	xor    %ecx,%ecx
40ced4:	8b c6                	mov    %esi,%eax
40ced6:	83 c0 01             	add    $0x1,%eax
40ced9:	0f 92 c1             	setb   %cl
40cedc:	f7 d9                	neg    %ecx
40cede:	0b c8                	or     %eax,%ecx
40cee0:	81 f9 ff ff ff 7f    	cmp    $0x7fffffff,%ecx
40cee6:	0f 87 84 00 00 00    	ja     0x40cf70
40ceec:	03 c9                	add    %ecx,%ecx
40ceee:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40cef4:	72 22                	jb     0x40cf18
40cef6:	8d 41 23             	lea    0x23(%ecx),%eax
40cef9:	3b c1                	cmp    %ecx,%eax
40cefb:	76 73                	jbe    0x40cf70
40cefd:	50                   	push   %eax
40cefe:	e8 db e9 00 00       	call   0x41b8de
40cf03:	83 c4 04             	add    $0x4,%esp
40cf06:	85 c0                	test   %eax,%eax
40cf08:	74 6b                	je     0x40cf75
40cf0a:	8b 55 fc             	mov    -0x4(%ebp),%edx
40cf0d:	8d 78 23             	lea    0x23(%eax),%edi
40cf10:	83 e7 e0             	and    $0xffffffe0,%edi
40cf13:	89 47 fc             	mov    %eax,-0x4(%edi)
40cf16:	eb 16                	jmp    0x40cf2e
40cf18:	85 c9                	test   %ecx,%ecx
40cf1a:	74 10                	je     0x40cf2c
40cf1c:	51                   	push   %ecx
40cf1d:	e8 bc e9 00 00       	call   0x41b8de
40cf22:	8b 55 fc             	mov    -0x4(%ebp),%edx
40cf25:	83 c4 04             	add    $0x4,%esp
40cf28:	8b f8                	mov    %eax,%edi
40cf2a:	eb 02                	jmp    0x40cf2e
40cf2c:	33 ff                	xor    %edi,%edi
40cf2e:	8b 45 f8             	mov    -0x8(%ebp),%eax
40cf31:	89 3b                	mov    %edi,(%ebx)
40cf33:	89 73 14             	mov    %esi,0x14(%ebx)
40cf36:	8d 34 00             	lea    (%eax,%eax,1),%esi
40cf39:	56                   	push   %esi
40cf3a:	ff 75 f4             	push   -0xc(%ebp)
40cf3d:	89 53 10             	mov    %edx,0x10(%ebx)
40cf40:	57                   	push   %edi
40cf41:	e8 0a 05 01 00       	call   0x41d450
40cf46:	8b 45 1c             	mov    0x1c(%ebp),%eax
40cf49:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
40cf4c:	51                   	push   %ecx
40cf4d:	ff 75 f0             	push   -0x10(%ebp)
40cf50:	8d 0c 3e             	lea    (%esi,%edi,1),%ecx
40cf53:	51                   	push   %ecx
40cf54:	e8 f7 04 01 00       	call   0x41d450
40cf59:	8b 45 fc             	mov    -0x4(%ebp),%eax
40cf5c:	83 c4 18             	add    $0x18,%esp
40cf5f:	33 c9                	xor    %ecx,%ecx
40cf61:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
40cf65:	8b c3                	mov    %ebx,%eax
40cf67:	5f                   	pop    %edi
40cf68:	5e                   	pop    %esi
40cf69:	5b                   	pop    %ebx
40cf6a:	8b e5                	mov    %ebp,%esp
40cf6c:	5d                   	pop    %ebp
40cf6d:	c2 18 00             	ret    $0x18
40cf70:	e8 8b 42 ff ff       	call   0x401200
40cf75:	e8 05 3b 01 00       	call   0x420a7f
40cf7a:	cc                   	int3
40cf7b:	cc                   	int3
40cf7c:	cc                   	int3
40cf7d:	cc                   	int3
40cf7e:	cc                   	int3
40cf7f:	cc                   	int3
40cf80:	56                   	push   %esi
40cf81:	8b 31                	mov    (%ecx),%esi
40cf83:	85 f6                	test   %esi,%esi
40cf85:	74 1b                	je     0x40cfa2
40cf87:	ff 76 08             	push   0x8(%esi)
40cf8a:	e8 be 90 01 00       	call   0x42604d
40cf8f:	ff 76 10             	push   0x10(%esi)
40cf92:	e8 b6 90 01 00       	call   0x42604d
40cf97:	ff 76 14             	push   0x14(%esi)
40cf9a:	e8 ae 90 01 00       	call   0x42604d
40cf9f:	83 c4 0c             	add    $0xc,%esp
40cfa2:	5e                   	pop    %esi
40cfa3:	c3                   	ret
40cfa4:	cc                   	int3
40cfa5:	cc                   	int3
40cfa6:	cc                   	int3
40cfa7:	cc                   	int3
40cfa8:	cc                   	int3
40cfa9:	cc                   	int3
40cfaa:	cc                   	int3
40cfab:	cc                   	int3
40cfac:	cc                   	int3
40cfad:	cc                   	int3
40cfae:	cc                   	int3
40cfaf:	cc                   	int3
40cfb0:	55                   	push   %ebp
40cfb1:	8b ec                	mov    %esp,%ebp
40cfb3:	51                   	push   %ecx
40cfb4:	8b 45 08             	mov    0x8(%ebp),%eax
40cfb7:	53                   	push   %ebx
40cfb8:	57                   	push   %edi
40cfb9:	8b 7d 0c             	mov    0xc(%ebp),%edi
40cfbc:	8b d9                	mov    %ecx,%ebx
40cfbe:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cfc1:	80 7f 0d 00          	cmpb   $0x0,0xd(%edi)
40cfc5:	75 71                	jne    0x40d038
40cfc7:	56                   	push   %esi
40cfc8:	ff 77 08             	push   0x8(%edi)
40cfcb:	8b cb                	mov    %ebx,%ecx
40cfcd:	50                   	push   %eax
40cfce:	e8 dd ff ff ff       	call   0x40cfb0
40cfd3:	8b f7                	mov    %edi,%esi
40cfd5:	8b 3f                	mov    (%edi),%edi
40cfd7:	8b 4e 24             	mov    0x24(%esi),%ecx
40cfda:	83 f9 08             	cmp    $0x8,%ecx
40cfdd:	72 2e                	jb     0x40d00d
40cfdf:	8b 46 10             	mov    0x10(%esi),%eax
40cfe2:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40cfe9:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40cfef:	72 12                	jb     0x40d003
40cff1:	8b 50 fc             	mov    -0x4(%eax),%edx
40cff4:	83 c1 23             	add    $0x23,%ecx
40cff7:	2b c2                	sub    %edx,%eax
40cff9:	83 c0 fc             	add    $0xfffffffc,%eax
40cffc:	83 f8 1f             	cmp    $0x1f,%eax
40cfff:	77 3f                	ja     0x40d040
40d001:	8b c2                	mov    %edx,%eax
40d003:	51                   	push   %ecx
40d004:	50                   	push   %eax
40d005:	e8 04 e9 00 00       	call   0x41b90e
40d00a:	83 c4 08             	add    $0x8,%esp
40d00d:	33 c0                	xor    %eax,%eax
40d00f:	c7 46 20 00 00 00 00 	movl   $0x0,0x20(%esi)
40d016:	6a 2c                	push   $0x2c
40d018:	56                   	push   %esi
40d019:	c7 46 24 07 00 00 00 	movl   $0x7,0x24(%esi)
40d020:	66 89 46 10          	mov    %ax,0x10(%esi)
40d024:	e8 e5 e8 00 00       	call   0x41b90e
40d029:	83 c4 08             	add    $0x8,%esp
40d02c:	80 7f 0d 00          	cmpb   $0x0,0xd(%edi)
40d030:	75 05                	jne    0x40d037
40d032:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d035:	eb 91                	jmp    0x40cfc8
40d037:	5e                   	pop    %esi
40d038:	5f                   	pop    %edi
40d039:	5b                   	pop    %ebx
40d03a:	8b e5                	mov    %ebp,%esp
40d03c:	5d                   	pop    %ebp
40d03d:	c2 08 00             	ret    $0x8
40d040:	e8 3a 3a 01 00       	call   0x420a7f
40d045:	cc                   	int3
40d046:	cc                   	int3
40d047:	cc                   	int3
40d048:	cc                   	int3
40d049:	cc                   	int3
40d04a:	cc                   	int3
40d04b:	cc                   	int3
40d04c:	cc                   	int3
40d04d:	cc                   	int3
40d04e:	cc                   	int3
40d04f:	cc                   	int3
40d050:	55                   	push   %ebp
40d051:	8b ec                	mov    %esp,%ebp
40d053:	6a ff                	push   $0xffffffff
40d055:	68 00 de 43 00       	push   $0x43de00
40d05a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40d060:	50                   	push   %eax
40d061:	83 ec 24             	sub    $0x24,%esp
40d064:	53                   	push   %ebx
40d065:	56                   	push   %esi
40d066:	57                   	push   %edi
40d067:	a1 14 40 45 00       	mov    0x454014,%eax
40d06c:	33 c5                	xor    %ebp,%eax
40d06e:	50                   	push   %eax
40d06f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d072:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40d078:	89 65 f0             	mov    %esp,-0x10(%ebp)
40d07b:	8b f9                	mov    %ecx,%edi
40d07d:	8b 45 08             	mov    0x8(%ebp),%eax
40d080:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40d083:	8b 1f                	mov    (%edi),%ebx
40d085:	89 45 e0             	mov    %eax,-0x20(%ebp)
40d088:	89 4d dc             	mov    %ecx,-0x24(%ebp)
40d08b:	8b c8                	mov    %eax,%ecx
40d08d:	2b cb                	sub    %ebx,%ecx
40d08f:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d094:	f7 e9                	imul   %ecx
40d096:	8b 4f 04             	mov    0x4(%edi),%ecx
40d099:	c1 fa 02             	sar    $0x2,%edx
40d09c:	2b cb                	sub    %ebx,%ecx
40d09e:	8b c2                	mov    %edx,%eax
40d0a0:	c1 e8 1f             	shr    $0x1f,%eax
40d0a3:	03 c2                	add    %edx,%eax
40d0a5:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40d0a8:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d0ad:	f7 e9                	imul   %ecx
40d0af:	c1 fa 02             	sar    $0x2,%edx
40d0b2:	8b c2                	mov    %edx,%eax
40d0b4:	c1 e8 1f             	shr    $0x1f,%eax
40d0b7:	03 c2                	add    %edx,%eax
40d0b9:	89 45 d8             	mov    %eax,-0x28(%ebp)
40d0bc:	3d aa aa aa 0a       	cmp    $0xaaaaaaa,%eax
40d0c1:	0f 84 66 01 00 00    	je     0x40d22d
40d0c7:	8b 4f 08             	mov    0x8(%edi),%ecx
40d0ca:	8d 70 01             	lea    0x1(%eax),%esi
40d0cd:	2b cb                	sub    %ebx,%ecx
40d0cf:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d0d4:	f7 e9                	imul   %ecx
40d0d6:	b8 aa aa aa 0a       	mov    $0xaaaaaaa,%eax
40d0db:	c1 fa 02             	sar    $0x2,%edx
40d0de:	8b ca                	mov    %edx,%ecx
40d0e0:	c1 e9 1f             	shr    $0x1f,%ecx
40d0e3:	03 ca                	add    %edx,%ecx
40d0e5:	8b d1                	mov    %ecx,%edx
40d0e7:	d1 ea                	shr    $1,%edx
40d0e9:	2b c2                	sub    %edx,%eax
40d0eb:	3b c8                	cmp    %eax,%ecx
40d0ed:	0f 87 35 01 00 00    	ja     0x40d228
40d0f3:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
40d0f6:	8b de                	mov    %esi,%ebx
40d0f8:	3b c6                	cmp    %esi,%eax