406ea2:	0f af c1             	imul   %ecx,%eax
406ea5:	3b f0                	cmp    %eax,%esi
406ea7:	73 13                	jae    0x406ebc
406ea9:	8b f8                	mov    %eax,%edi
406eab:	b8 00 08 00 00       	mov    $0x800,%eax
406eb0:	2b c1                	sub    %ecx,%eax
406eb2:	c1 e8 05             	shr    $0x5,%eax
406eb5:	03 c2                	add    %edx,%eax
406eb7:	0f b7 c0             	movzwl %ax,%eax
406eba:	eb 12                	jmp    0x406ece
406ebc:	2b f0                	sub    %eax,%esi
406ebe:	c1 e9 05             	shr    $0x5,%ecx
406ec1:	2b f8                	sub    %eax,%edi
406ec3:	89 75 f8             	mov    %esi,-0x8(%ebp)
406ec6:	ff 45 bc             	incl   -0x44(%ebp)
406ec9:	2b d1                	sub    %ecx,%edx
406ecb:	0f b7 c2             	movzwl %dx,%eax
406ece:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
406ed1:	66 89 01             	mov    %ax,(%ecx)
406ed4:	8b 45 bc             	mov    -0x44(%ebp),%eax
406ed7:	03 c0                	add    %eax,%eax
406ed9:	89 45 bc             	mov    %eax,-0x44(%ebp)
406edc:	03 45 cc             	add    -0x34(%ebp),%eax
406edf:	89 45 9c             	mov    %eax,-0x64(%ebp)
406ee2:	0f b7 10             	movzwl (%eax),%edx
406ee5:	8b ca                	mov    %edx,%ecx
406ee7:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
406eed:	73 12                	jae    0x406f01
406eef:	0f b6 03             	movzbl (%ebx),%eax
406ef2:	c1 e6 08             	shl    $0x8,%esi
406ef5:	0b f0                	or     %eax,%esi
406ef7:	c1 e7 08             	shl    $0x8,%edi
406efa:	43                   	inc    %ebx
406efb:	89 75 f8             	mov    %esi,-0x8(%ebp)
406efe:	89 5d f4             	mov    %ebx,-0xc(%ebp)
406f01:	8b c7                	mov    %edi,%eax
406f03:	c1 e8 0b             	shr    $0xb,%eax
406f06:	0f af c1             	imul   %ecx,%eax
406f09:	3b f0                	cmp    %eax,%esi
406f0b:	73 13                	jae    0x406f20
406f0d:	8b f8                	mov    %eax,%edi
406f0f:	b8 00 08 00 00       	mov    $0x800,%eax
406f14:	2b c1                	sub    %ecx,%eax
406f16:	c1 e8 05             	shr    $0x5,%eax
406f19:	03 c2                	add    %edx,%eax
406f1b:	0f b7 c0             	movzwl %ax,%eax
406f1e:	eb 12                	jmp    0x406f32
406f20:	2b f0                	sub    %eax,%esi
406f22:	c1 e9 05             	shr    $0x5,%ecx
406f25:	2b f8                	sub    %eax,%edi
406f27:	89 75 f8             	mov    %esi,-0x8(%ebp)
406f2a:	ff 45 bc             	incl   -0x44(%ebp)
406f2d:	2b d1                	sub    %ecx,%edx
406f2f:	0f b7 c2             	movzwl %dx,%eax
406f32:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
406f35:	8b 55 bc             	mov    -0x44(%ebp),%edx
406f38:	03 d2                	add    %edx,%edx
406f3a:	66 89 01             	mov    %ax,(%ecx)
406f3d:	8b 45 cc             	mov    -0x34(%ebp),%eax
406f40:	03 c2                	add    %edx,%eax
406f42:	89 45 9c             	mov    %eax,-0x64(%ebp)
406f45:	0f b7 00             	movzwl (%eax),%eax
406f48:	89 45 b4             	mov    %eax,-0x4c(%ebp)
406f4b:	0f b7 c8             	movzwl %ax,%ecx
406f4e:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
406f54:	73 12                	jae    0x406f68
406f56:	0f b6 03             	movzbl (%ebx),%eax
406f59:	c1 e6 08             	shl    $0x8,%esi
406f5c:	0b f0                	or     %eax,%esi
406f5e:	c1 e7 08             	shl    $0x8,%edi
406f61:	43                   	inc    %ebx
406f62:	89 75 f8             	mov    %esi,-0x8(%ebp)
406f65:	89 5d f4             	mov    %ebx,-0xc(%ebp)
406f68:	8b c7                	mov    %edi,%eax
406f6a:	c1 e8 0b             	shr    $0xb,%eax
406f6d:	0f af c1             	imul   %ecx,%eax
406f70:	3b f0                	cmp    %eax,%esi
406f72:	73 11                	jae    0x406f85
406f74:	8b f8                	mov    %eax,%edi
406f76:	b8 00 08 00 00       	mov    $0x800,%eax
406f7b:	2b c1                	sub    %ecx,%eax
406f7d:	c1 e8 05             	shr    $0x5,%eax
406f80:	03 45 b4             	add    -0x4c(%ebp),%eax
406f83:	eb 10                	jmp    0x406f95
406f85:	2b f0                	sub    %eax,%esi
406f87:	c1 e9 05             	shr    $0x5,%ecx
406f8a:	2b f8                	sub    %eax,%edi
406f8c:	89 75 f8             	mov    %esi,-0x8(%ebp)
406f8f:	8b 45 b4             	mov    -0x4c(%ebp),%eax
406f92:	42                   	inc    %edx
406f93:	2b c1                	sub    %ecx,%eax
406f95:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
406f98:	83 ea 40             	sub    $0x40,%edx
406f9b:	0f b7 c0             	movzwl %ax,%eax
406f9e:	66 89 01             	mov    %ax,(%ecx)
406fa1:	83 fa 04             	cmp    $0x4,%edx
406fa4:	0f 82 be 02 00 00    	jb     0x407268
406faa:	8b c2                	mov    %edx,%eax
406fac:	8b ca                	mov    %edx,%ecx
406fae:	d1 e9                	shr    $1,%ecx
406fb0:	83 e2 01             	and    $0x1,%edx
406fb3:	49                   	dec    %ecx
406fb4:	89 45 9c             	mov    %eax,-0x64(%ebp)
406fb7:	83 ca 02             	or     $0x2,%edx
406fba:	83 f8 0e             	cmp    $0xe,%eax
406fbd:	0f 83 9e 00 00 00    	jae    0x407061
406fc3:	8b 5d f0             	mov    -0x10(%ebp),%ebx
406fc6:	d3 e2                	shl    %cl,%edx
406fc8:	81 c3 5e 05 00 00    	add    $0x55e,%ebx
406fce:	8b c2                	mov    %edx,%eax
406fd0:	2b 45 9c             	sub    -0x64(%ebp),%eax
406fd3:	8d 04 43             	lea    (%ebx,%eax,2),%eax
406fd6:	89 45 9c             	mov    %eax,-0x64(%ebp)
406fd9:	33 c0                	xor    %eax,%eax
406fdb:	40                   	inc    %eax
406fdc:	89 45 c0             	mov    %eax,-0x40(%ebp)
406fdf:	8b 5d f4             	mov    -0xc(%ebp),%ebx
406fe2:	03 c0                	add    %eax,%eax
406fe4:	89 45 c4             	mov    %eax,-0x3c(%ebp)
406fe7:	03 45 9c             	add    -0x64(%ebp),%eax
406fea:	89 45 b4             	mov    %eax,-0x4c(%ebp)
406fed:	0f b7 00             	movzwl (%eax),%eax
406ff0:	89 45 cc             	mov    %eax,-0x34(%ebp)
406ff3:	0f b7 c0             	movzwl %ax,%eax
406ff6:	89 45 bc             	mov    %eax,-0x44(%ebp)
406ff9:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
406fff:	73 0f                	jae    0x407010
407001:	0f b6 03             	movzbl (%ebx),%eax
407004:	c1 e6 08             	shl    $0x8,%esi
407007:	c1 e7 08             	shl    $0x8,%edi
40700a:	0b f0                	or     %eax,%esi
40700c:	43                   	inc    %ebx
40700d:	89 5d f4             	mov    %ebx,-0xc(%ebp)
407010:	8b c7                	mov    %edi,%eax
407012:	c1 e8 0b             	shr    $0xb,%eax
407015:	0f af 45 bc          	imul   -0x44(%ebp),%eax
407019:	3b f0                	cmp    %eax,%esi
40701b:	73 12                	jae    0x40702f
40701d:	8b f8                	mov    %eax,%edi
40701f:	b8 00 08 00 00       	mov    $0x800,%eax
407024:	2b 45 bc             	sub    -0x44(%ebp),%eax
407027:	c1 e8 05             	shr    $0x5,%eax
40702a:	03 45 cc             	add    -0x34(%ebp),%eax
40702d:	eb 16                	jmp    0x407045
40702f:	0b 55 c0             	or     -0x40(%ebp),%edx
407032:	2b f8                	sub    %eax,%edi
407034:	2b f0                	sub    %eax,%esi
407036:	8b 45 bc             	mov    -0x44(%ebp),%eax
407039:	ff 45 c4             	incl   -0x3c(%ebp)
40703c:	c1 e8 05             	shr    $0x5,%eax
40703f:	29 45 cc             	sub    %eax,-0x34(%ebp)
407042:	8b 45 cc             	mov    -0x34(%ebp),%eax
407045:	8b 5d b4             	mov    -0x4c(%ebp),%ebx
407048:	d1 65 c0             	shll   $1,-0x40(%ebp)
40704b:	0f b7 c0             	movzwl %ax,%eax
40704e:	66 89 03             	mov    %ax,(%ebx)
407051:	8b 45 c4             	mov    -0x3c(%ebp),%eax
407054:	83 e9 01             	sub    $0x1,%ecx
407057:	75 86                	jne    0x406fdf
407059:	89 75 f8             	mov    %esi,-0x8(%ebp)
40705c:	e9 07 02 00 00       	jmp    0x407268
407061:	83 e9 04             	sub    $0x4,%ecx
407064:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40706a:	73 0c                	jae    0x407078
40706c:	0f b6 03             	movzbl (%ebx),%eax
40706f:	c1 e6 08             	shl    $0x8,%esi
407072:	c1 e7 08             	shl    $0x8,%edi
407075:	0b f0                	or     %eax,%esi
407077:	43                   	inc    %ebx
407078:	d1 ef                	shr    $1,%edi
40707a:	8d 14 55 01 00 00 00 	lea    0x1(,%edx,2),%edx
407081:	2b f7                	sub    %edi,%esi
407083:	8b c6                	mov    %esi,%eax
407085:	c1 e8 1f             	shr    $0x1f,%eax
407088:	f7 d8                	neg    %eax
40708a:	03 d0                	add    %eax,%edx
40708c:	23 c7                	and    %edi,%eax
40708e:	03 f0                	add    %eax,%esi
407090:	83 e9 01             	sub    $0x1,%ecx
407093:	75 cf                	jne    0x407064
407095:	8b 45 f0             	mov    -0x10(%ebp),%eax
407098:	c1 e2 04             	shl    $0x4,%edx
40709b:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40709e:	89 75 f8             	mov    %esi,-0x8(%ebp)
4070a1:	0f b7 80 46 06 00 00 	movzwl 0x646(%eax),%eax
4070a8:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4070ab:	0f b7 c8             	movzwl %ax,%ecx
4070ae:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4070b4:	73 12                	jae    0x4070c8
4070b6:	0f b6 03             	movzbl (%ebx),%eax
4070b9:	c1 e6 08             	shl    $0x8,%esi
4070bc:	0b f0                	or     %eax,%esi
4070be:	c1 e7 08             	shl    $0x8,%edi
4070c1:	43                   	inc    %ebx
4070c2:	89 75 f8             	mov    %esi,-0x8(%ebp)
4070c5:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4070c8:	8b c7                	mov    %edi,%eax
4070ca:	c1 e8 0b             	shr    $0xb,%eax
4070cd:	0f af c1             	imul   %ecx,%eax
4070d0:	3b f0                	cmp    %eax,%esi
4070d2:	73 13                	jae    0x4070e7
4070d4:	8b f8                	mov    %eax,%edi
4070d6:	b8 00 08 00 00       	mov    $0x800,%eax
4070db:	2b c1                	sub    %ecx,%eax
4070dd:	c1 e8 05             	shr    $0x5,%eax
4070e0:	03 45 b4             	add    -0x4c(%ebp),%eax
4070e3:	6a 04                	push   $0x4
4070e5:	eb 14                	jmp    0x4070fb
4070e7:	2b f0                	sub    %eax,%esi
4070e9:	c1 e9 05             	shr    $0x5,%ecx
4070ec:	2b f8                	sub    %eax,%edi
4070ee:	89 75 f8             	mov    %esi,-0x8(%ebp)
4070f1:	8b 45 b4             	mov    -0x4c(%ebp),%eax
4070f4:	83 ca 01             	or     $0x1,%edx
4070f7:	2b c1                	sub    %ecx,%eax
4070f9:	6a 06                	push   $0x6
4070fb:	8b 5d f0             	mov    -0x10(%ebp),%ebx
4070fe:	0f b7 c8             	movzwl %ax,%ecx
407101:	58                   	pop    %eax
407102:	89 45 cc             	mov    %eax,-0x34(%ebp)
407105:	66 89 8b 46 06 00 00 	mov    %cx,0x646(%ebx)
40710c:	8b cb                	mov    %ebx,%ecx
40710e:	8b 5d f4             	mov    -0xc(%ebp),%ebx
407111:	81 c1 44 06 00 00    	add    $0x644,%ecx
407117:	03 c1                	add    %ecx,%eax
407119:	89 45 9c             	mov    %eax,-0x64(%ebp)
40711c:	0f b7 00             	movzwl (%eax),%eax
40711f:	89 45 b4             	mov    %eax,-0x4c(%ebp)
407122:	0f b7 c8             	movzwl %ax,%ecx
407125:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40712b:	73 12                	jae    0x40713f
40712d:	0f b6 03             	movzbl (%ebx),%eax
407130:	c1 e6 08             	shl    $0x8,%esi
407133:	0b f0                	or     %eax,%esi
407135:	c1 e7 08             	shl    $0x8,%edi
407138:	43                   	inc    %ebx
407139:	89 75 f8             	mov    %esi,-0x8(%ebp)
40713c:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40713f:	8b c7                	mov    %edi,%eax
407141:	c1 e8 0b             	shr    $0xb,%eax
407144:	0f af c1             	imul   %ecx,%eax
407147:	3b f0                	cmp    %eax,%esi
407149:	73 11                	jae    0x40715c
40714b:	8b f8                	mov    %eax,%edi
40714d:	b8 00 08 00 00       	mov    $0x800,%eax
407152:	2b c1                	sub    %ecx,%eax
407154:	c1 e8 05             	shr    $0x5,%eax
407157:	03 45 b4             	add    -0x4c(%ebp),%eax
40715a:	eb 15                	jmp    0x407171
40715c:	2b f0                	sub    %eax,%esi
40715e:	c1 e9 05             	shr    $0x5,%ecx
407161:	2b f8                	sub    %eax,%edi
407163:	89 75 f8             	mov    %esi,-0x8(%ebp)
407166:	8b 45 b4             	mov    -0x4c(%ebp),%eax
407169:	83 ca 02             	or     $0x2,%edx
40716c:	ff 45 cc             	incl   -0x34(%ebp)
40716f:	2b c1                	sub    %ecx,%eax
407171:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
407174:	0f b7 c0             	movzwl %ax,%eax
407177:	66 89 01             	mov    %ax,(%ecx)
40717a:	8b 45 cc             	mov    -0x34(%ebp),%eax
40717d:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407180:	03 c0                	add    %eax,%eax
407182:	81 c1 44 06 00 00    	add    $0x644,%ecx
407188:	89 45 cc             	mov    %eax,-0x34(%ebp)
40718b:	03 c1                	add    %ecx,%eax
40718d:	89 45 9c             	mov    %eax,-0x64(%ebp)
407190:	0f b7 00             	movzwl (%eax),%eax
407193:	89 45 b4             	mov    %eax,-0x4c(%ebp)
407196:	0f b7 c8             	movzwl %ax,%ecx
407199:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40719f:	73 12                	jae    0x4071b3
4071a1:	0f b6 03             	movzbl (%ebx),%eax
4071a4:	c1 e6 08             	shl    $0x8,%esi
4071a7:	0b f0                	or     %eax,%esi
4071a9:	c1 e7 08             	shl    $0x8,%edi
4071ac:	43                   	inc    %ebx
4071ad:	89 75 f8             	mov    %esi,-0x8(%ebp)
4071b0:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4071b3:	8b c7                	mov    %edi,%eax
4071b5:	c1 e8 0b             	shr    $0xb,%eax
4071b8:	0f af c1             	imul   %ecx,%eax
4071bb:	3b f0                	cmp    %eax,%esi
4071bd:	73 11                	jae    0x4071d0
4071bf:	8b f8                	mov    %eax,%edi
4071c1:	b8 00 08 00 00       	mov    $0x800,%eax
4071c6:	2b c1                	sub    %ecx,%eax
4071c8:	c1 e8 05             	shr    $0x5,%eax
4071cb:	03 45 b4             	add    -0x4c(%ebp),%eax
4071ce:	eb 15                	jmp    0x4071e5
4071d0:	2b f0                	sub    %eax,%esi
4071d2:	c1 e9 05             	shr    $0x5,%ecx
4071d5:	2b f8                	sub    %eax,%edi
4071d7:	89 75 f8             	mov    %esi,-0x8(%ebp)
4071da:	8b 45 b4             	mov    -0x4c(%ebp),%eax
4071dd:	83 ca 04             	or     $0x4,%edx
4071e0:	ff 45 cc             	incl   -0x34(%ebp)
4071e3:	2b c1                	sub    %ecx,%eax
4071e5:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
4071e8:	0f b7 c0             	movzwl %ax,%eax
4071eb:	66 89 01             	mov    %ax,(%ecx)
4071ee:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4071f1:	8b 45 cc             	mov    -0x34(%ebp),%eax
4071f4:	0f b7 84 41 44 06 00 	movzwl 0x644(%ecx,%eax,2),%eax
4071fb:	00
4071fc:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4071ff:	0f b7 c8             	movzwl %ax,%ecx
407202:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407208:	73 12                	jae    0x40721c
40720a:	0f b6 03             	movzbl (%ebx),%eax
40720d:	c1 e6 08             	shl    $0x8,%esi
407210:	0b f0                	or     %eax,%esi
407212:	c1 e7 08             	shl    $0x8,%edi
407215:	43                   	inc    %ebx
407216:	89 75 f8             	mov    %esi,-0x8(%ebp)
407219:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40721c:	8b c7                	mov    %edi,%eax
40721e:	c1 e8 0b             	shr    $0xb,%eax
407221:	0f af c1             	imul   %ecx,%eax
407224:	3b f0                	cmp    %eax,%esi
407226:	73 11                	jae    0x407239
407228:	8b f8                	mov    %eax,%edi
40722a:	b8 00 08 00 00       	mov    $0x800,%eax
40722f:	2b c1                	sub    %ecx,%eax
407231:	c1 e8 05             	shr    $0x5,%eax
407234:	03 45 b4             	add    -0x4c(%ebp),%eax
407237:	eb 12                	jmp    0x40724b
407239:	2b f0                	sub    %eax,%esi
40723b:	c1 e9 05             	shr    $0x5,%ecx
40723e:	2b f8                	sub    %eax,%edi
407240:	89 75 f8             	mov    %esi,-0x8(%ebp)
407243:	8b 45 b4             	mov    -0x4c(%ebp),%eax
407246:	83 ca 08             	or     $0x8,%edx
407249:	2b c1                	sub    %ecx,%eax
40724b:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40724e:	8b 4d cc             	mov    -0x34(%ebp),%ecx
407251:	0f b7 c0             	movzwl %ax,%eax
407254:	66 89 84 4b 44 06 00 	mov    %ax,0x644(%ebx,%ecx,2)
40725b:	00
40725c:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40725f:	83 fa ff             	cmp    $0xffffffff,%edx
407262:	0f 84 2f 01 00 00    	je     0x407397
407268:	8b 45 d0             	mov    -0x30(%ebp),%eax
40726b:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40726e:	89 45 c4             	mov    %eax,-0x3c(%ebp)
407271:	8b 45 dc             	mov    -0x24(%ebp),%eax
407274:	89 45 d4             	mov    %eax,-0x2c(%ebp)
407277:	8d 42 01             	lea    0x1(%edx),%eax
40727a:	89 45 dc             	mov    %eax,-0x24(%ebp)
40727d:	8b 45 b8             	mov    -0x48(%ebp),%eax