40fc78:	66 89 06             	mov    %ax,(%esi)
40fc7b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fc7e:	0f 57 c0             	xorps  %xmm0,%xmm0
40fc81:	8b 57 3c             	mov    0x3c(%edi),%edx
40fc84:	89 45 ec             	mov    %eax,-0x14(%ebp)
40fc87:	8b c2                	mov    %edx,%eax
40fc89:	24 22                	and    $0x22,%al
40fc8b:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40fc92:	66 0f d6 45 e4       	movq   %xmm0,-0x1c(%ebp)
40fc97:	3c 02                	cmp    $0x2,%al
40fc99:	74 1b                	je     0x40fcb6
40fc9b:	8b 47 20             	mov    0x20(%edi),%eax
40fc9e:	8b 08                	mov    (%eax),%ecx
40fca0:	85 c9                	test   %ecx,%ecx
40fca2:	74 12                	je     0x40fcb6
40fca4:	3b 4f 38             	cmp    0x38(%edi),%ecx
40fca7:	8b 47 10             	mov    0x10(%edi),%eax
40fcaa:	0f 42 4f 38          	cmovb  0x38(%edi),%ecx
40fcae:	8b 10                	mov    (%eax),%edx
40fcb0:	2b ca                	sub    %edx,%ecx
40fcb2:	d1 f9                	sar    $1,%ecx
40fcb4:	eb 28                	jmp    0x40fcde
40fcb6:	f6 c2 04             	test   $0x4,%dl
40fcb9:	75 1d                	jne    0x40fcd8
40fcbb:	8b 47 1c             	mov    0x1c(%edi),%eax
40fcbe:	8b 18                	mov    (%eax),%ebx
40fcc0:	85 db                	test   %ebx,%ebx
40fcc2:	74 14                	je     0x40fcd8
40fcc4:	8b 47 0c             	mov    0xc(%edi),%eax
40fcc7:	8b 10                	mov    (%eax),%edx
40fcc9:	8b 47 2c             	mov    0x2c(%edi),%eax
40fccc:	8b 08                	mov    (%eax),%ecx
40fcce:	03 c9                	add    %ecx,%ecx
40fcd0:	2b ca                	sub    %edx,%ecx
40fcd2:	03 cb                	add    %ebx,%ecx
40fcd4:	d1 f9                	sar    $1,%ecx
40fcd6:	eb 06                	jmp    0x40fcde
40fcd8:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40fcdb:	8b 55 e4             	mov    -0x1c(%ebp),%edx
40fcde:	85 d2                	test   %edx,%edx
40fce0:	74 09                	je     0x40fceb
40fce2:	51                   	push   %ecx
40fce3:	52                   	push   %edx
40fce4:	8b ce                	mov    %esi,%ecx
40fce6:	e8 05 32 ff ff       	call   0x402ef0
40fceb:	8b c6                	mov    %esi,%eax
40fced:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fcf0:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fcf7:	59                   	pop    %ecx
40fcf8:	5f                   	pop    %edi
40fcf9:	5e                   	pop    %esi
40fcfa:	5b                   	pop    %ebx
40fcfb:	8b e5                	mov    %ebp,%esp
40fcfd:	5d                   	pop    %ebp
40fcfe:	c2 04 00             	ret    $0x4
40fd01:	cc                   	int3
40fd02:	cc                   	int3
40fd03:	cc                   	int3
40fd04:	cc                   	int3
40fd05:	cc                   	int3
40fd06:	cc                   	int3
40fd07:	cc                   	int3
40fd08:	cc                   	int3
40fd09:	cc                   	int3
40fd0a:	cc                   	int3
40fd0b:	cc                   	int3
40fd0c:	cc                   	int3
40fd0d:	cc                   	int3
40fd0e:	cc                   	int3
40fd0f:	cc                   	int3
40fd10:	68 88 f0 44 00       	push   $0x44f088
40fd15:	e8 a0 91 00 00       	call   0x418eba
40fd1a:	cc                   	int3
40fd1b:	cc                   	int3
40fd1c:	cc                   	int3
40fd1d:	cc                   	int3
40fd1e:	cc                   	int3
40fd1f:	cc                   	int3
40fd20:	8b c1                	mov    %ecx,%eax
40fd22:	c3                   	ret
40fd23:	cc                   	int3
40fd24:	cc                   	int3
40fd25:	cc                   	int3
40fd26:	cc                   	int3
40fd27:	cc                   	int3
40fd28:	cc                   	int3
40fd29:	cc                   	int3
40fd2a:	cc                   	int3
40fd2b:	cc                   	int3
40fd2c:	cc                   	int3
40fd2d:	cc                   	int3
40fd2e:	cc                   	int3
40fd2f:	cc                   	int3
40fd30:	55                   	push   %ebp
40fd31:	8b ec                	mov    %esp,%ebp
40fd33:	51                   	push   %ecx
40fd34:	8b 45 08             	mov    0x8(%ebp),%eax
40fd37:	53                   	push   %ebx
40fd38:	8b d9                	mov    %ecx,%ebx
40fd3a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fd3d:	56                   	push   %esi
40fd3e:	8b 33                	mov    (%ebx),%esi
40fd40:	8b 76 04             	mov    0x4(%esi),%esi
40fd43:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40fd47:	75 33                	jne    0x40fd7c
40fd49:	57                   	push   %edi
40fd4a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
40fd50:	ff 76 08             	push   0x8(%esi)
40fd53:	8b cb                	mov    %ebx,%ecx
40fd55:	50                   	push   %eax
40fd56:	e8 b5 05 00 00       	call   0x410310
40fd5b:	8b fe                	mov    %esi,%edi
40fd5d:	8b 36                	mov    (%esi),%esi
40fd5f:	8d 4f 10             	lea    0x10(%edi),%ecx
40fd62:	e8 a9 0f 00 00       	call   0x410d10
40fd67:	6a 40                	push   $0x40
40fd69:	57                   	push   %edi
40fd6a:	e8 49 9e 00 00       	call   0x419bb8
40fd6f:	8b 45 fc             	mov    -0x4(%ebp),%eax
40fd72:	83 c4 08             	add    $0x8,%esp
40fd75:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40fd79:	74 d5                	je     0x40fd50
40fd7b:	5f                   	pop    %edi
40fd7c:	6a 40                	push   $0x40
40fd7e:	ff 33                	push   (%ebx)
40fd80:	e8 33 9e 00 00       	call   0x419bb8
40fd85:	83 c4 08             	add    $0x8,%esp
40fd88:	5e                   	pop    %esi
40fd89:	5b                   	pop    %ebx
40fd8a:	8b e5                	mov    %ebp,%esp
40fd8c:	5d                   	pop    %ebp
40fd8d:	c2 04 00             	ret    $0x4
40fd90:	55                   	push   %ebp
40fd91:	8b ec                	mov    %esp,%ebp
40fd93:	83 e4 f8             	and    $0xfffffff8,%esp
40fd96:	81 ec 14 01 00 00    	sub    $0x114,%esp
40fd9c:	a1 14 50 45 00       	mov    0x455014,%eax
40fda1:	33 c4                	xor    %esp,%eax
40fda3:	89 84 24 10 01 00 00 	mov    %eax,0x110(%esp)
40fdaa:	8b 45 0c             	mov    0xc(%ebp),%eax
40fdad:	53                   	push   %ebx
40fdae:	8b 5d 10             	mov    0x10(%ebp),%ebx
40fdb1:	89 44 24 08          	mov    %eax,0x8(%esp)
40fdb5:	56                   	push   %esi
40fdb6:	8b f2                	mov    %edx,%esi
40fdb8:	57                   	push   %edi
40fdb9:	8b f9                	mov    %ecx,%edi
40fdbb:	85 db                	test   %ebx,%ebx
40fdbd:	0f 84 03 01 00 00    	je     0x40fec6
40fdc3:	85 f6                	test   %esi,%esi
40fdc5:	0f 84 fb 00 00 00    	je     0x40fec6
40fdcb:	68 00 01 00 00       	push   $0x100
40fdd0:	8d 44 24 1c          	lea    0x1c(%esp),%eax
40fdd4:	6a 00                	push   $0x0
40fdd6:	50                   	push   %eax
40fdd7:	e8 34 be 00 00       	call   0x41bc10
40fddc:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40fde0:	83 c4 0c             	add    $0xc,%esp
40fde3:	8b c8                	mov    %eax,%ecx
40fde5:	c7 44 24 14 00 01 00 	movl   $0x100,0x14(%esp)
40fdec:	00
40fded:	8d 14 58             	lea    (%eax,%ebx,2),%edx
40fdf0:	3b c2                	cmp    %edx,%eax
40fdf2:	74 19                	je     0x40fe0d
40fdf4:	0f b7 01             	movzwl (%ecx),%eax
40fdf7:	66 3b 44 24 14       	cmp    0x14(%esp),%ax
40fdfc:	73 3e                	jae    0x40fe3c
40fdfe:	0f b6 c0             	movzbl %al,%eax
40fe01:	83 c1 02             	add    $0x2,%ecx
40fe04:	c6 44 04 18 01       	movb   $0x1,0x18(%esp,%eax,1)
40fe09:	3b ca                	cmp    %edx,%ecx
40fe0b:	75 e7                	jne    0x40fdf4
40fe0d:	8b 54 24 14          	mov    0x14(%esp),%edx
40fe11:	8d 46 ff             	lea    -0x1(%esi),%eax
40fe14:	83 c9 ff             	or     $0xffffffff,%ecx
40fe17:	3b c1                	cmp    %ecx,%eax
40fe19:	0f 42 c8             	cmovb  %eax,%ecx
40fe1c:	8d 0c 4f             	lea    (%edi,%ecx,2),%ecx
40fe1f:	90                   	nop
40fe20:	0f b7 01             	movzwl (%ecx),%eax
40fe23:	66 3b c2             	cmp    %dx,%ax
40fe26:	73 07                	jae    0x40fe2f
40fe28:	80 7c 04 18 00       	cmpb   $0x0,0x18(%esp,%eax,1)
40fe2d:	75 7c                	jne    0x40feab
40fe2f:	3b cf                	cmp    %edi,%ecx
40fe31:	0f 84 8f 00 00 00    	je     0x40fec6
40fe37:	83 e9 02             	sub    $0x2,%ecx
40fe3a:	eb e4                	jmp    0x40fe20
40fe3c:	8d 46 ff             	lea    -0x1(%esi),%eax
40fe3f:	83 c9 ff             	or     $0xffffffff,%ecx
40fe42:	3b c1                	cmp    %ecx,%eax
40fe44:	0f 42 c8             	cmovb  %eax,%ecx
40fe47:	8d 14 4f             	lea    (%edi,%ecx,2),%edx
40fe4a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
40fe50:	8b 44 24 10          	mov    0x10(%esp),%eax
40fe54:	8b cb                	mov    %ebx,%ecx
40fe56:	85 db                	test   %ebx,%ebx
40fe58:	74 13                	je     0x40fe6d
40fe5a:	0f b7 32             	movzwl (%edx),%esi
40fe5d:	0f 1f 00             	nopl   (%eax)
40fe60:	66 39 30             	cmp    %si,(%eax)
40fe63:	74 11                	je     0x40fe76
40fe65:	83 c0 02             	add    $0x2,%eax
40fe68:	83 e9 01             	sub    $0x1,%ecx
40fe6b:	75 f3                	jne    0x40fe60
40fe6d:	3b d7                	cmp    %edi,%edx
40fe6f:	74 20                	je     0x40fe91
40fe71:	83 ea 02             	sub    $0x2,%edx
40fe74:	eb da                	jmp    0x40fe50
40fe76:	2b d7                	sub    %edi,%edx
40fe78:	d1 fa                	sar    $1,%edx
40fe7a:	8b c2                	mov    %edx,%eax
40fe7c:	5f                   	pop    %edi
40fe7d:	5e                   	pop    %esi
40fe7e:	5b                   	pop    %ebx
40fe7f:	8b 8c 24 10 01 00 00 	mov    0x110(%esp),%ecx
40fe86:	33 cc                	xor    %esp,%ecx
40fe88:	e8 1d 9d 00 00       	call   0x419baa
40fe8d:	8b e5                	mov    %ebp,%esp
40fe8f:	5d                   	pop    %ebp
40fe90:	c3                   	ret
40fe91:	83 ca ff             	or     $0xffffffff,%edx
40fe94:	8b c2                	mov    %edx,%eax
40fe96:	5f                   	pop    %edi
40fe97:	5e                   	pop    %esi
40fe98:	5b                   	pop    %ebx
40fe99:	8b 8c 24 10 01 00 00 	mov    0x110(%esp),%ecx
40fea0:	33 cc                	xor    %esp,%ecx
40fea2:	e8 03 9d 00 00       	call   0x419baa
40fea7:	8b e5                	mov    %ebp,%esp
40fea9:	5d                   	pop    %ebp
40feaa:	c3                   	ret
40feab:	2b cf                	sub    %edi,%ecx
40fead:	d1 f9                	sar    $1,%ecx
40feaf:	8b c1                	mov    %ecx,%eax
40feb1:	5f                   	pop    %edi
40feb2:	5e                   	pop    %esi
40feb3:	5b                   	pop    %ebx
40feb4:	8b 8c 24 10 01 00 00 	mov    0x110(%esp),%ecx
40febb:	33 cc                	xor    %esp,%ecx
40febd:	e8 e8 9c 00 00       	call   0x419baa
40fec2:	8b e5                	mov    %ebp,%esp
40fec4:	5d                   	pop    %ebp
40fec5:	c3                   	ret
40fec6:	8b 8c 24 1c 01 00 00 	mov    0x11c(%esp),%ecx
40fecd:	83 c8 ff             	or     $0xffffffff,%eax
40fed0:	5f                   	pop    %edi
40fed1:	5e                   	pop    %esi
40fed2:	5b                   	pop    %ebx
40fed3:	33 cc                	xor    %esp,%ecx
40fed5:	e8 d0 9c 00 00       	call   0x419baa
40feda:	8b e5                	mov    %ebp,%esp
40fedc:	5d                   	pop    %ebp
40fedd:	c3                   	ret
40fede:	cc                   	int3
40fedf:	cc                   	int3
40fee0:	55                   	push   %ebp
40fee1:	8b ec                	mov    %esp,%ebp
40fee3:	83 ec 14             	sub    $0x14,%esp
40fee6:	53                   	push   %ebx
40fee7:	8b 5d 10             	mov    0x10(%ebp),%ebx
40feea:	56                   	push   %esi
40feeb:	8b f1                	mov    %ecx,%esi
40feed:	57                   	push   %edi
40feee:	8b 7d 0c             	mov    0xc(%ebp),%edi
40fef1:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
40fef7:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40fefe:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
40ff05:	8b 57 10             	mov    0x10(%edi),%edx
40ff08:	8b 4b 10             	mov    0x10(%ebx),%ecx
40ff0b:	89 55 f4             	mov    %edx,-0xc(%ebp)
40ff0e:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40ff11:	8d 04 11             	lea    (%ecx,%edx,1),%eax
40ff14:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ff17:	8b 47 14             	mov    0x14(%edi),%eax
40ff1a:	2b c2                	sub    %edx,%eax
40ff1c:	3b c8                	cmp    %eax,%ecx
40ff1e:	8b 43 14             	mov    0x14(%ebx),%eax
40ff21:	77 60                	ja     0x40ff83
40ff23:	3b 47 14             	cmp    0x14(%edi),%eax
40ff26:	77 5b                	ja     0x40ff83
40ff28:	0f 10 07             	movups (%edi),%xmm0
40ff2b:	33 c0                	xor    %eax,%eax
40ff2d:	0f 11 06             	movups %xmm0,(%esi)
40ff30:	f3 0f 7e 47 10       	movq   0x10(%edi),%xmm0
40ff35:	66 0f d6 46 10       	movq   %xmm0,0x10(%esi)
40ff3a:	c7 47 10 00 00 00 00 	movl   $0x0,0x10(%edi)
40ff41:	c7 47 14 07 00 00 00 	movl   $0x7,0x14(%edi)
40ff48:	66 89 07             	mov    %ax,(%edi)
40ff4b:	8b fe                	mov    %esi,%edi
40ff4d:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40ff51:	72 02                	jb     0x40ff55
40ff53:	8b 3e                	mov    (%esi),%edi
40ff55:	83 7b 14 08          	cmpl   $0x8,0x14(%ebx)
40ff59:	72 02                	jb     0x40ff5d
40ff5b:	8b 1b                	mov    (%ebx),%ebx
40ff5d:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
40ff64:	50                   	push   %eax
40ff65:	8d 04 57             	lea    (%edi,%edx,2),%eax
40ff68:	53                   	push   %ebx
40ff69:	50                   	push   %eax
40ff6a:	e8 11 b7 00 00       	call   0x41b680
40ff6f:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ff72:	83 c4 0c             	add    $0xc,%esp
40ff75:	89 46 10             	mov    %eax,0x10(%esi)
40ff78:	8b c6                	mov    %esi,%eax
40ff7a:	5f                   	pop    %edi
40ff7b:	5e                   	pop    %esi
40ff7c:	5b                   	pop    %ebx
40ff7d:	8b e5                	mov    %ebp,%esp
40ff7f:	5d                   	pop    %ebp
40ff80:	c2 0c 00             	ret    $0xc
40ff83:	2b c1                	sub    %ecx,%eax
40ff85:	3b d0                	cmp    %eax,%edx
40ff87:	77 65                	ja     0x40ffee
40ff89:	0f 10 03             	movups (%ebx),%xmm0
40ff8c:	33 c0                	xor    %eax,%eax
40ff8e:	03 d2                	add    %edx,%edx
40ff90:	89 55 f8             	mov    %edx,-0x8(%ebp)
40ff93:	0f 11 06             	movups %xmm0,(%esi)
40ff96:	f3 0f 7e 43 10       	movq   0x10(%ebx),%xmm0
40ff9b:	66 0f d6 46 10       	movq   %xmm0,0x10(%esi)
40ffa0:	66 89 03             	mov    %ax,(%ebx)
40ffa3:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
40ffaa:	c7 43 10 00 00 00 00 	movl   $0x0,0x10(%ebx)
40ffb1:	c7 43 14 07 00 00 00 	movl   $0x7,0x14(%ebx)
40ffb8:	8b 1e                	mov    (%esi),%ebx
40ffba:	50                   	push   %eax
40ffbb:	53                   	push   %ebx
40ffbc:	8d 04 1a             	lea    (%edx,%ebx,1),%eax
40ffbf:	50                   	push   %eax
40ffc0:	e8 bb b6 00 00       	call   0x41b680
40ffc5:	83 c4 0c             	add    $0xc,%esp
40ffc8:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
40ffcc:	72 02                	jb     0x40ffd0
40ffce:	8b 3f                	mov    (%edi),%edi
40ffd0:	ff 75 f8             	push   -0x8(%ebp)
40ffd3:	57                   	push   %edi
40ffd4:	53                   	push   %ebx
40ffd5:	e8 a6 b6 00 00       	call   0x41b680
40ffda:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ffdd:	83 c4 0c             	add    $0xc,%esp
40ffe0:	89 46 10             	mov    %eax,0x10(%esi)
40ffe3:	8b c6                	mov    %esi,%eax
40ffe5:	5f                   	pop    %edi
40ffe6:	5e                   	pop    %esi
40ffe7:	5b                   	pop    %ebx
40ffe8:	8b e5                	mov    %ebp,%esp
40ffea:	5d                   	pop    %ebp
40ffeb:	c2 0c 00             	ret    $0xc