406e8d:	0f 10 45 d8          	movups -0x28(%ebp),%xmm0
406e91:	8b 45 c4             	mov    -0x3c(%ebp),%eax
406e94:	8d 8d e0 fe ff ff    	lea    -0x120(%ebp),%ecx
406e9a:	51                   	push   %ecx
406e9b:	0f 11 85 78 ff ff ff 	movups %xmm0,-0x88(%ebp)
406ea2:	f3 0f 7e 45 e8       	movq   -0x18(%ebp),%xmm0
406ea7:	66 0f d6 45 88       	movq   %xmm0,-0x78(%ebp)
406eac:	3b 45 c8             	cmp    -0x38(%ebp),%eax
406eaf:	74 0d                	je     0x406ebe
406eb1:	8b c8                	mov    %eax,%ecx
406eb3:	e8 08 b4 ff ff       	call   0x4022c0
406eb8:	83 45 c4 18          	addl   $0x18,-0x3c(%ebp)
406ebc:	eb 09                	jmp    0x406ec7
406ebe:	50                   	push   %eax
406ebf:	8d 4d c0             	lea    -0x40(%ebp),%ecx
406ec2:	e8 89 61 00 00       	call   0x40d050
406ec7:	c6 45 fc 0a          	movb   $0xa,-0x4(%ebp)
406ecb:	8b 8d f4 fe ff ff    	mov    -0x10c(%ebp),%ecx
406ed1:	83 f9 08             	cmp    $0x8,%ecx
406ed4:	72 35                	jb     0x406f0b
406ed6:	8b 95 e0 fe ff ff    	mov    -0x120(%ebp),%edx
406edc:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
406ee3:	8b c2                	mov    %edx,%eax
406ee5:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
406eeb:	72 14                	jb     0x406f01
406eed:	8b 50 fc             	mov    -0x4(%eax),%edx
406ef0:	83 c1 23             	add    $0x23,%ecx
406ef3:	2b c2                	sub    %edx,%eax
406ef5:	83 c0 fc             	add    $0xfffffffc,%eax
406ef8:	83 f8 1f             	cmp    $0x1f,%eax
406efb:	0f 87 c4 0d 00 00    	ja     0x407cc5
406f01:	51                   	push   %ecx
406f02:	52                   	push   %edx
406f03:	e8 06 4a 01 00       	call   0x41b90e
406f08:	83 c4 08             	add    $0x8,%esp
406f0b:	c6 45 fc 09          	movb   $0x9,-0x4(%ebp)
406f0f:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
406f12:	83 f9 08             	cmp    $0x8,%ecx
406f15:	72 32                	jb     0x406f49
406f17:	8b 55 90             	mov    -0x70(%ebp),%edx
406f1a:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
406f21:	8b c2                	mov    %edx,%eax
406f23:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
406f29:	72 14                	jb     0x406f3f
406f2b:	8b 50 fc             	mov    -0x4(%eax),%edx
406f2e:	83 c1 23             	add    $0x23,%ecx
406f31:	2b c2                	sub    %edx,%eax
406f33:	83 c0 fc             	add    $0xfffffffc,%eax
406f36:	83 f8 1f             	cmp    $0x1f,%eax
406f39:	0f 87 86 0d 00 00    	ja     0x407cc5
406f3f:	51                   	push   %ecx
406f40:	52                   	push   %edx
406f41:	e8 c8 49 01 00       	call   0x41b90e
406f46:	83 c4 08             	add    $0x8,%esp
406f49:	33 c0                	xor    %eax,%eax
406f4b:	c6 45 fc 08          	movb   $0x8,-0x4(%ebp)
406f4f:	8b 8d 6c ff ff ff    	mov    -0x94(%ebp),%ecx
406f55:	c7 45 a0 00 00 00 00 	movl   $0x0,-0x60(%ebp)
406f5c:	c7 45 a4 07 00 00 00 	movl   $0x7,-0x5c(%ebp)
406f63:	66 89 45 90          	mov    %ax,-0x70(%ebp)
406f67:	83 f9 08             	cmp    $0x8,%ecx
406f6a:	72 35                	jb     0x406fa1
406f6c:	8b 95 58 ff ff ff    	mov    -0xa8(%ebp),%edx
406f72:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
406f79:	8b c2                	mov    %edx,%eax
406f7b:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
406f81:	72 14                	jb     0x406f97
406f83:	8b 50 fc             	mov    -0x4(%eax),%edx
406f86:	83 c1 23             	add    $0x23,%ecx
406f89:	2b c2                	sub    %edx,%eax
406f8b:	83 c0 fc             	add    $0xfffffffc,%eax
406f8e:	83 f8 1f             	cmp    $0x1f,%eax
406f91:	0f 87 2e 0d 00 00    	ja     0x407cc5
406f97:	51                   	push   %ecx
406f98:	52                   	push   %edx
406f99:	e8 70 49 01 00       	call   0x41b90e
406f9e:	83 c4 08             	add    $0x8,%esp
406fa1:	8b b5 50 fc ff ff    	mov    -0x3b0(%ebp),%esi
406fa7:	4e                   	dec    %esi
406fa8:	89 b5 50 fc ff ff    	mov    %esi,-0x3b0(%ebp)
406fae:	83 fe fc             	cmp    $0xfffffffc,%esi
406fb1:	0f 8f 89 fa ff ff    	jg     0x406a40
406fb7:	83 7d 8c 08          	cmpl   $0x8,-0x74(%ebp)
406fbb:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406fc1:	8b 8d 24 ff ff ff    	mov    -0xdc(%ebp),%ecx
406fc7:	0f 43 85 78 ff ff ff 	cmovae -0x88(%ebp),%eax
406fce:	8b 55 88             	mov    -0x78(%ebp),%edx
406fd1:	3b d1                	cmp    %ecx,%edx
406fd3:	77 2c                	ja     0x407001
406fd5:	8d 34 12             	lea    (%edx,%edx,1),%esi
406fd8:	89 95 20 ff ff ff    	mov    %edx,-0xe0(%ebp)
406fde:	83 f9 08             	cmp    $0x8,%ecx
406fe1:	8d bd 10 ff ff ff    	lea    -0xf0(%ebp),%edi
406fe7:	56                   	push   %esi
406fe8:	0f 43 bd 10 ff ff ff 	cmovae -0xf0(%ebp),%edi
406fef:	50                   	push   %eax
406ff0:	57                   	push   %edi
406ff1:	e8 5a 64 01 00       	call   0x41d450
406ff6:	83 c4 0c             	add    $0xc,%esp
406ff9:	33 c0                	xor    %eax,%eax
406ffb:	66 89 04 3e          	mov    %ax,(%esi,%edi,1)
406fff:	eb 1a                	jmp    0x40701b
407001:	50                   	push   %eax
407002:	c6 85 54 fc ff ff 00 	movb   $0x0,-0x3ac(%ebp)
407009:	8d 8d 10 ff ff ff    	lea    -0xf0(%ebp),%ecx
40700f:	ff b5 54 fc ff ff    	push   -0x3ac(%ebp)
407015:	52                   	push   %edx
407016:	e8 f5 b5 ff ff       	call   0x402610
40701b:	8b b5 78 ff ff ff    	mov    -0x88(%ebp),%esi
407021:	8d 95 c8 fe ff ff    	lea    -0x138(%ebp),%edx
407027:	8d 8d 10 ff ff ff    	lea    -0xf0(%ebp),%ecx
40702d:	e8 ce da 00 00       	call   0x414b00
407032:	8b 8d 50 ff ff ff    	mov    -0xb0(%ebp),%ecx
407038:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
40703d:	2b c1                	sub    %ecx,%eax
40703f:	83 f8 01             	cmp    $0x1,%eax
407042:	0f 82 78 0c 00 00    	jb     0x407cc0
407048:	83 bd 54 ff ff ff 08 	cmpl   $0x8,-0xac(%ebp)
40704f:	8d 85 40 ff ff ff    	lea    -0xc0(%ebp),%eax
407055:	6a 01                	push   $0x1
407057:	0f 43 85 40 ff ff ff 	cmovae -0xc0(%ebp),%eax
40705e:	68 0c dc 44 00       	push   $0x44dc0c
407063:	51                   	push   %ecx
407064:	50                   	push   %eax
407065:	51                   	push   %ecx
407066:	ff b5 4c fc ff ff    	push   -0x3b4(%ebp)
40706c:	8d 4d 90             	lea    -0x70(%ebp),%ecx
40706f:	e8 fc 5d 00 00       	call   0x40ce70
407074:	c6 45 fc 0d          	movb   $0xd,-0x4(%ebp)
407078:	8d 95 78 ff ff ff    	lea    -0x88(%ebp),%edx
40707e:	83 7d 8c 08          	cmpl   $0x8,-0x74(%ebp)
407082:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
407085:	8b c1                	mov    %ecx,%eax
407087:	8b 7d a0             	mov    -0x60(%ebp),%edi
40708a:	0f 43 d6             	cmovae %esi,%edx
40708d:	8b 75 88             	mov    -0x78(%ebp),%esi
407090:	2b c7                	sub    %edi,%eax
407092:	3b f0                	cmp    %eax,%esi
407094:	77 33                	ja     0x4070c9
407096:	8d 04 37             	lea    (%edi,%esi,1),%eax
407099:	83 f9 08             	cmp    $0x8,%ecx
40709c:	89 45 a0             	mov    %eax,-0x60(%ebp)
40709f:	8d 75 90             	lea    -0x70(%ebp),%esi
4070a2:	0f 43 75 90          	cmovae -0x70(%ebp),%esi
4070a6:	8b 45 88             	mov    -0x78(%ebp),%eax
4070a9:	03 c0                	add    %eax,%eax
4070ab:	50                   	push   %eax
4070ac:	8d 0c 7e             	lea    (%esi,%edi,2),%ecx
4070af:	52                   	push   %edx
4070b0:	51                   	push   %ecx
4070b1:	e8 9a 63 01 00       	call   0x41d450
4070b6:	8b 45 88             	mov    -0x78(%ebp),%eax
4070b9:	83 c4 0c             	add    $0xc,%esp
4070bc:	03 c7                	add    %edi,%eax
4070be:	33 c9                	xor    %ecx,%ecx
4070c0:	66 89 0c 46          	mov    %cx,(%esi,%eax,2)
4070c4:	8d 45 90             	lea    -0x70(%ebp),%eax
4070c7:	eb 18                	jmp    0x4070e1
4070c9:	56                   	push   %esi
4070ca:	52                   	push   %edx
4070cb:	c6 85 54 fc ff ff 00 	movb   $0x0,-0x3ac(%ebp)
4070d2:	8d 4d 90             	lea    -0x70(%ebp),%ecx
4070d5:	ff b5 54 fc ff ff    	push   -0x3ac(%ebp)
4070db:	56                   	push   %esi
4070dc:	e8 5f b6 ff ff       	call   0x402740
4070e1:	c7 85 28 fc ff ff 00 	movl   $0x0,-0x3d8(%ebp)
4070e8:	00 00 00
4070eb:	33 c9                	xor    %ecx,%ecx
4070ed:	c7 85 38 fc ff ff 00 	movl   $0x0,-0x3c8(%ebp)
4070f4:	00 00 00
4070f7:	c7 85 3c fc ff ff 00 	movl   $0x0,-0x3c4(%ebp)
4070fe:	00 00 00
407101:	0f 10 00             	movups (%eax),%xmm0
407104:	0f 11 85 28 fc ff ff 	movups %xmm0,-0x3d8(%ebp)
40710b:	f3 0f 7e 40 10       	movq   0x10(%eax),%xmm0
407110:	66 0f d6 85 38 fc ff 	movq   %xmm0,-0x3c8(%ebp)
407117:	ff
407118:	c7 40 10 00 00 00 00 	movl   $0x0,0x10(%eax)
40711f:	c7 40 14 07 00 00 00 	movl   $0x7,0x14(%eax)
407126:	66 89 08             	mov    %cx,(%eax)
407129:	68 10 dc 44 00       	push   $0x44dc10
40712e:	8d 95 28 fc ff ff    	lea    -0x3d8(%ebp),%edx
407134:	c6 45 fc 0e          	movb   $0xe,-0x4(%ebp)
407138:	8d 8d b0 fe ff ff    	lea    -0x150(%ebp),%ecx
40713e:	e8 8d b2 ff ff       	call   0x4023d0
407143:	83 c4 04             	add    $0x4,%esp
407146:	c6 45 fc 10          	movb   $0x10,-0x4(%ebp)
40714a:	8b 8d 3c fc ff ff    	mov    -0x3c4(%ebp),%ecx
407150:	83 f9 08             	cmp    $0x8,%ecx
407153:	72 35                	jb     0x40718a
407155:	8b 95 28 fc ff ff    	mov    -0x3d8(%ebp),%edx
40715b:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407162:	8b c2                	mov    %edx,%eax
407164:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40716a:	72 14                	jb     0x407180
40716c:	8b 50 fc             	mov    -0x4(%eax),%edx
40716f:	83 c1 23             	add    $0x23,%ecx
407172:	2b c2                	sub    %edx,%eax
407174:	83 c0 fc             	add    $0xfffffffc,%eax
407177:	83 f8 1f             	cmp    $0x1f,%eax
40717a:	0f 87 45 0b 00 00    	ja     0x407cc5
407180:	51                   	push   %ecx
407181:	52                   	push   %edx
407182:	e8 87 47 01 00       	call   0x41b90e
407187:	83 c4 08             	add    $0x8,%esp
40718a:	33 c0                	xor    %eax,%eax
40718c:	c7 85 38 fc ff ff 00 	movl   $0x0,-0x3c8(%ebp)
407193:	00 00 00
407196:	c7 85 3c fc ff ff 07 	movl   $0x7,-0x3c4(%ebp)
40719d:	00 00 00
4071a0:	66 89 85 28 fc ff ff 	mov    %ax,-0x3d8(%ebp)
4071a7:	c6 45 fc 11          	movb   $0x11,-0x4(%ebp)
4071ab:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
4071ae:	83 f9 08             	cmp    $0x8,%ecx
4071b1:	72 32                	jb     0x4071e5
4071b3:	8b 55 90             	mov    -0x70(%ebp),%edx
4071b6:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4071bd:	8b c2                	mov    %edx,%eax
4071bf:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4071c5:	72 14                	jb     0x4071db
4071c7:	8b 50 fc             	mov    -0x4(%eax),%edx
4071ca:	83 c1 23             	add    $0x23,%ecx
4071cd:	2b c2                	sub    %edx,%eax
4071cf:	83 c0 fc             	add    $0xfffffffc,%eax
4071d2:	83 f8 1f             	cmp    $0x1f,%eax
4071d5:	0f 87 ea 0a 00 00    	ja     0x407cc5
4071db:	51                   	push   %ecx
4071dc:	52                   	push   %edx
4071dd:	e8 2c 47 01 00       	call   0x41b90e
4071e2:	83 c4 08             	add    $0x8,%esp
4071e5:	33 c0                	xor    %eax,%eax
4071e7:	c7 45 a0 00 00 00 00 	movl   $0x0,-0x60(%ebp)
4071ee:	83 bd c4 fe ff ff 08 	cmpl   $0x8,-0x13c(%ebp)
4071f5:	8d 8d 60 fc ff ff    	lea    -0x3a0(%ebp),%ecx
4071fb:	66 89 45 90          	mov    %ax,-0x70(%ebp)
4071ff:	8d 85 b0 fe ff ff    	lea    -0x150(%ebp),%eax
407205:	0f 43 85 b0 fe ff ff 	cmovae -0x150(%ebp),%eax
40720c:	51                   	push   %ecx
40720d:	50                   	push   %eax
40720e:	c7 45 a4 07 00 00 00 	movl   $0x7,-0x5c(%ebp)
407215:	ff 15 44 f0 43 00    	call   *0x43f044
40721b:	89 85 4c fc ff ff    	mov    %eax,-0x3b4(%ebp)
407221:	83 f8 ff             	cmp    $0xffffffff,%eax
407224:	75 1a                	jne    0x407240
407226:	ff 15 60 f0 43 00    	call   *0x43f060
40722c:	e9 29 07 00 00       	jmp    0x40795a
407231:	0f 1f 40 00          	nopl   0x0(%eax)
407235:	66 66 66 0f 1f 84 00 	data16 data16 nopw 0x0(%eax,%eax,1)
40723c:	00 00 00 00
407240:	8d 8d 8c fc ff ff    	lea    -0x374(%ebp),%ecx
407246:	c6 85 5f fc ff ff 00 	movb   $0x0,-0x3a1(%ebp)
40724d:	8d 51 02             	lea    0x2(%ecx),%edx
407250:	66 8b 01             	mov    (%ecx),%ax
407253:	83 c1 02             	add    $0x2,%ecx
407256:	66 85 c0             	test   %ax,%ax
407259:	75 f5                	jne    0x407250
40725b:	8b 45 bc             	mov    -0x44(%ebp),%eax
40725e:	2b ca                	sub    %edx,%ecx
407260:	d1 f9                	sar    $1,%ecx
407262:	3b c8                	cmp    %eax,%ecx
407264:	77 29                	ja     0x40728f
407266:	83 f8 08             	cmp    $0x8,%eax
407269:	89 4d b8             	mov    %ecx,-0x48(%ebp)
40726c:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
40726f:	56                   	push   %esi
407270:	8d 85 8c fc ff ff    	lea    -0x374(%ebp),%eax
407276:	8d 7d a8             	lea    -0x58(%ebp),%edi
407279:	0f 43 7d a8          	cmovae -0x58(%ebp),%edi
40727d:	50                   	push   %eax
40727e:	57                   	push   %edi
40727f:	e8 cc 61 01 00       	call   0x41d450
407284:	83 c4 0c             	add    $0xc,%esp
407287:	33 c0                	xor    %eax,%eax
407289:	66 89 04 3e          	mov    %ax,(%esi,%edi,1)
40728d:	eb 1d                	jmp    0x4072ac
40728f:	8d 85 8c fc ff ff    	lea    -0x374(%ebp),%eax
407295:	c6 85 44 fc ff ff 00 	movb   $0x0,-0x3bc(%ebp)
40729c:	50                   	push   %eax
40729d:	ff b5 44 fc ff ff    	push   -0x3bc(%ebp)
4072a3:	51                   	push   %ecx
4072a4:	8d 4d a8             	lea    -0x58(%ebp),%ecx
4072a7:	e8 64 b3 ff ff       	call   0x402610
4072ac:	b9 14 dc 44 00       	mov    $0x44dc14,%ecx
4072b1:	8d 85 8c fc ff ff    	lea    -0x374(%ebp),%eax
4072b7:	66 8b 10             	mov    (%eax),%dx
4072ba:	66 3b 11             	cmp    (%ecx),%dx
4072bd:	75 1e                	jne    0x4072dd
4072bf:	66 85 d2             	test   %dx,%dx
4072c2:	74 15                	je     0x4072d9
4072c4:	66 8b 50 02          	mov    0x2(%eax),%dx
4072c8:	66 3b 51 02          	cmp    0x2(%ecx),%dx
4072cc:	75 0f                	jne    0x4072dd
4072ce:	83 c0 04             	add    $0x4,%eax
4072d1:	83 c1 04             	add    $0x4,%ecx
4072d4:	66 85 d2             	test   %dx,%dx
4072d7:	75 de                	jne    0x4072b7
4072d9:	33 c0                	xor    %eax,%eax
4072db:	eb 05                	jmp    0x4072e2
4072dd:	1b c0                	sbb    %eax,%eax
4072df:	83 c8 01             	or     $0x1,%eax
4072e2:	85 c0                	test   %eax,%eax
4072e4:	0f 84 4e 05 00 00    	je     0x407838
4072ea:	b9 18 dc 44 00       	mov    $0x44dc18,%ecx
4072ef:	8d 85 8c fc ff ff    	lea    -0x374(%ebp),%eax
4072f5:	66 8b 10             	mov    (%eax),%dx
4072f8:	66 3b 11             	cmp    (%ecx),%dx
4072fb:	75 1e                	jne    0x40731b
4072fd:	66 85 d2             	test   %dx,%dx
407300:	74 15                	je     0x407317
407302:	66 8b 50 02          	mov    0x2(%eax),%dx
407306:	66 3b 51 02          	cmp    0x2(%ecx),%dx
40730a:	75 0f                	jne    0x40731b
40730c:	83 c0 04             	add    $0x4,%eax
40730f:	83 c1 04             	add    $0x4,%ecx
407312:	66 85 d2             	test   %dx,%dx
407315:	75 de                	jne    0x4072f5
407317:	33 c0                	xor    %eax,%eax
407319:	eb 05                	jmp    0x407320
40731b:	1b c0                	sbb    %eax,%eax
40731d:	83 c8 01             	or     $0x1,%eax
407320:	85 c0                	test   %eax,%eax
407322:	0f 84 10 05 00 00    	je     0x407838
407328:	8b 75 c4             	mov    -0x3c(%ebp),%esi
40732b:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
407330:	8b 7d c0             	mov    -0x40(%ebp),%edi
407333:	8b ce                	mov    %esi,%ecx
407335:	2b cf                	sub    %edi,%ecx
407337:	c7 85 50 fc ff ff 00 	movl   $0x0,-0x3b0(%ebp)
40733e:	00 00 00
407341:	f7 e9                	imul   %ecx
407343:	c1 fa 02             	sar    $0x2,%edx
407346:	8b c2                	mov    %edx,%eax
407348:	c1 e8 1f             	shr    $0x1f,%eax
40734b:	03 c2                	add    %edx,%eax
40734d:	0f 84 b9 03 00 00    	je     0x40770c
407353:	8b 8d 50 fc ff ff    	mov    -0x3b0(%ebp),%ecx
407359:	c7 85 58 fc ff ff 00 	movl   $0x0,-0x3a8(%ebp)
407360:	00 00 00
407363:	2b f7                	sub    %edi,%esi
407365:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40736a:	f7 ee                	imul   %esi
40736c:	c1 fa 02             	sar    $0x2,%edx
40736f:	8b c2                	mov    %edx,%eax
407371:	c1 e8 1f             	shr    $0x1f,%eax
407374:	03 c2                	add    %edx,%eax
407376:	3b c1                	cmp    %ecx,%eax
407378:	0f 86 51 09 00 00    	jbe    0x407ccf
40737e:	8b 85 58 fc ff ff    	mov    -0x3a8(%ebp),%eax
407384:	8d 4d d8             	lea    -0x28(%ebp),%ecx
407387:	03 c7                	add    %edi,%eax