7ca88c:	8b c2                	mov    %edx,%eax
7ca88e:	83 eb 02             	sub    $0x2,%ebx
7ca891:	c1 ea 02             	shr    $0x2,%edx
7ca894:	89 54 24 28          	mov    %edx,0x28(%esp)
7ca898:	83 e0 03             	and    $0x3,%eax
7ca89b:	0f 85 a4 01 00 00    	jne    0x7caa45
7ca8a1:	8b cb                	mov    %ebx,%ecx
7ca8a3:	83 e1 07             	and    $0x7,%ecx
7ca8a6:	d3 ea                	shr    %cl,%edx
7ca8a8:	2b d9                	sub    %ecx,%ebx
7ca8aa:	33 c9                	xor    %ecx,%ecx
7ca8ac:	89 54 24 28          	mov    %edx,0x28(%esp)
7ca8b0:	89 4c 24 18          	mov    %ecx,0x18(%esp)
7ca8b4:	83 fb 08             	cmp    $0x8,%ebx
7ca8b7:	7c 28                	jl     0x7ca8e1
7ca8b9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
7ca8c0:	83 f9 04             	cmp    $0x4,%ecx
7ca8c3:	0f 84 a1 06 00 00    	je     0x7caf6a
7ca8c9:	88 54 0c 1c          	mov    %dl,0x1c(%esp,%ecx,1)
7ca8cd:	83 eb 08             	sub    $0x8,%ebx
7ca8d0:	c1 ea 08             	shr    $0x8,%edx
7ca8d3:	41                   	inc    %ecx
7ca8d4:	89 54 24 28          	mov    %edx,0x28(%esp)
7ca8d8:	89 4c 24 18          	mov    %ecx,0x18(%esp)
7ca8dc:	83 fb 08             	cmp    $0x8,%ebx
7ca8df:	7d df                	jge    0x7ca8c0
7ca8e1:	85 db                	test   %ebx,%ebx
7ca8e3:	0f 85 81 06 00 00    	jne    0x7caf6a
7ca8e9:	83 f9 04             	cmp    $0x4,%ecx
7ca8ec:	73 3a                	jae    0x7ca928
7ca8ee:	66 90                	xchg   %ax,%ax
7ca8f0:	3b fd                	cmp    %ebp,%edi
7ca8f2:	72 1f                	jb     0x7ca913
7ca8f4:	56                   	push   %esi
7ca8f5:	e8 86 12 00 00       	call   0x7cbb80
7ca8fa:	83 c4 04             	add    $0x4,%esp
7ca8fd:	85 c0                	test   %eax,%eax
7ca8ff:	0f 85 5a 06 00 00    	jne    0x7caf5f
7ca905:	8b 6e 28             	mov    0x28(%esi),%ebp
7ca908:	8b 7e 24             	mov    0x24(%esi),%edi
7ca90b:	8b 4c 24 18          	mov    0x18(%esp),%ecx
7ca90f:	89 6c 24 10          	mov    %ebp,0x10(%esp)
7ca913:	8a 07                	mov    (%edi),%al
7ca915:	47                   	inc    %edi
7ca916:	88 44 0c 1c          	mov    %al,0x1c(%esp,%ecx,1)
7ca91a:	41                   	inc    %ecx
7ca91b:	89 4c 24 18          	mov    %ecx,0x18(%esp)
7ca91f:	83 f9 04             	cmp    $0x4,%ecx
7ca922:	72 cc                	jb     0x7ca8f0
7ca924:	8b 54 24 28          	mov    0x28(%esp),%edx
7ca928:	8b 44 24 1c          	mov    0x1c(%esp),%eax
7ca92c:	0f b6 cc             	movzbl %ah,%ecx
7ca92f:	c1 e1 08             	shl    $0x8,%ecx
7ca932:	0f b6 c0             	movzbl %al,%eax
7ca935:	0b c8                	or     %eax,%ecx
7ca937:	0f b6 44 24 1e       	movzbl 0x1e(%esp),%eax
7ca93c:	89 4c 24 14          	mov    %ecx,0x14(%esp)
7ca940:	0f b6 4c 24 1f       	movzbl 0x1f(%esp),%ecx
7ca945:	c1 e1 08             	shl    $0x8,%ecx
7ca948:	0b c8                	or     %eax,%ecx
7ca94a:	f7 d1                	not    %ecx
7ca94c:	0f b7 c1             	movzwl %cx,%eax
7ca94f:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7ca953:	3b c8                	cmp    %eax,%ecx
7ca955:	0f 85 29 06 00 00    	jne    0x7caf84
7ca95b:	85 c9                	test   %ecx,%ecx
7ca95d:	0f 84 a4 00 00 00    	je     0x7caa07
7ca963:	3b fd                	cmp    %ebp,%edi
7ca965:	72 1f                	jb     0x7ca986
7ca967:	56                   	push   %esi
7ca968:	e8 13 12 00 00       	call   0x7cbb80
7ca96d:	83 c4 04             	add    $0x4,%esp
7ca970:	85 c0                	test   %eax,%eax
7ca972:	0f 85 e7 05 00 00    	jne    0x7caf5f
7ca978:	8b 6e 28             	mov    0x28(%esi),%ebp
7ca97b:	8b 7e 24             	mov    0x24(%esi),%edi
7ca97e:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7ca982:	89 6c 24 10          	mov    %ebp,0x10(%esp)
7ca986:	8b d5                	mov    %ebp,%edx
7ca988:	b8 00 80 00 00       	mov    $0x8000,%eax
7ca98d:	2b d7                	sub    %edi,%edx
7ca98f:	3b ca                	cmp    %edx,%ecx
7ca991:	0f 46 d1             	cmovbe %ecx,%edx
7ca994:	2b 46 0c             	sub    0xc(%esi),%eax
7ca997:	89 54 24 18          	mov    %edx,0x18(%esp)
7ca99b:	3b d0                	cmp    %eax,%edx
7ca99d:	76 0c                	jbe    0x7ca9ab
7ca99f:	ba 00 80 00 00       	mov    $0x8000,%edx
7ca9a4:	2b 56 0c             	sub    0xc(%esi),%edx
7ca9a7:	89 54 24 18          	mov    %edx,0x18(%esp)
7ca9ab:	8b 46 0c             	mov    0xc(%esi),%eax
7ca9ae:	8b 0e                	mov    (%esi),%ecx
7ca9b0:	05 84 0b 00 00       	add    $0xb84,%eax
7ca9b5:	52                   	push   %edx
7ca9b6:	03 c6                	add    %esi,%eax
7ca9b8:	50                   	push   %eax
7ca9b9:	8b 41 24             	mov    0x24(%ecx),%eax
7ca9bc:	57                   	push   %edi
7ca9bd:	ff d0                	call   *%eax
7ca9bf:	8b 44 24 24          	mov    0x24(%esp),%eax
7ca9c3:	83 c4 0c             	add    $0xc,%esp
7ca9c6:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7ca9ca:	03 f8                	add    %eax,%edi
7ca9cc:	01 46 0c             	add    %eax,0xc(%esi)
7ca9cf:	2b c8                	sub    %eax,%ecx
7ca9d1:	81 7e 0c 00 80 00 00 	cmpl   $0x8000,0xc(%esi)
7ca9d8:	89 4c 24 14          	mov    %ecx,0x14(%esp)
7ca9dc:	75 1d                	jne    0x7ca9fb
7ca9de:	8b 46 10             	mov    0x10(%esi),%eax
7ca9e1:	68 00 80 00 00       	push   $0x8000
7ca9e6:	56                   	push   %esi
7ca9e7:	ff d0                	call   *%eax
7ca9e9:	83 c4 08             	add    $0x8,%esp
7ca9ec:	85 c0                	test   %eax,%eax
7ca9ee:	0f 85 83 05 00 00    	jne    0x7caf77
7ca9f4:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7ca9f8:	89 46 0c             	mov    %eax,0xc(%esi)
7ca9fb:	85 c9                	test   %ecx,%ecx
7ca9fd:	0f 85 60 ff ff ff    	jne    0x7ca963
7caa03:	8b 54 24 28          	mov    0x28(%esp),%edx
7caa07:	83 7c 24 20 00       	cmpl   $0x0,0x20(%esp)
7caa0c:	0f 84 ee fd ff ff    	je     0x7ca800
7caa12:	8b 46 0c             	mov    0xc(%esi),%eax
7caa15:	85 c0                	test   %eax,%eax
7caa17:	74 12                	je     0x7caa2b
7caa19:	50                   	push   %eax
7caa1a:	8b 46 10             	mov    0x10(%esi),%eax
7caa1d:	56                   	push   %esi
7caa1e:	ff d0                	call   *%eax
7caa20:	83 c4 08             	add    $0x8,%esp
7caa23:	85 c0                	test   %eax,%eax
7caa25:	0f 85 4c 05 00 00    	jne    0x7caf77
7caa2b:	8b 44 24 28          	mov    0x28(%esp),%eax
7caa2f:	89 7e 24             	mov    %edi,0x24(%esi)
7caa32:	5f                   	pop    %edi
7caa33:	89 6e 28             	mov    %ebp,0x28(%esi)
7caa36:	89 46 38             	mov    %eax,0x38(%esi)
7caa39:	33 c0                	xor    %eax,%eax
7caa3b:	89 5e 3c             	mov    %ebx,0x3c(%esi)
7caa3e:	5e                   	pop    %esi
7caa3f:	5d                   	pop    %ebp
7caa40:	5b                   	pop    %ebx
7caa41:	83 c4 14             	add    $0x14,%esp
7caa44:	c3                   	ret
7caa45:	83 f8 01             	cmp    $0x1,%eax
7caa48:	74 3f                	je     0x7caa89
7caa4a:	83 f8 02             	cmp    $0x2,%eax
7caa4d:	0f 85 3e 05 00 00    	jne    0x7caf91
7caa53:	56                   	push   %esi
7caa54:	89 7e 24             	mov    %edi,0x24(%esi)
7caa57:	89 6e 28             	mov    %ebp,0x28(%esi)
7caa5a:	89 56 38             	mov    %edx,0x38(%esi)
7caa5d:	89 5e 3c             	mov    %ebx,0x3c(%esi)
7caa60:	e8 8b 11 00 00       	call   0x7cbbf0
7caa65:	83 c4 04             	add    $0x4,%esp
7caa68:	85 c0                	test   %eax,%eax
7caa6a:	0f 85 65 05 00 00    	jne    0x7cafd5
7caa70:	8b 6e 28             	mov    0x28(%esi),%ebp
7caa73:	8b 46 38             	mov    0x38(%esi),%eax
7caa76:	8b 7e 24             	mov    0x24(%esi),%edi
7caa79:	8b 5e 3c             	mov    0x3c(%esi),%ebx
7caa7c:	89 6c 24 10          	mov    %ebp,0x10(%esp)
7caa80:	89 44 24 28          	mov    %eax,0x28(%esp)
7caa84:	e9 b1 00 00 00       	jmp    0x7cab3a
7caa89:	0f 28 05 b0 c2 c2 00 	movaps 0xc2c2b0,%xmm0
7caa90:	0f 11 46 44          	movups %xmm0,0x44(%esi)
7caa94:	0f 11 46 54          	movups %xmm0,0x54(%esi)
7caa98:	0f 11 46 64          	movups %xmm0,0x64(%esi)
7caa9c:	0f 11 46 74          	movups %xmm0,0x74(%esi)
7caaa0:	0f 11 86 84 00 00 00 	movups %xmm0,0x84(%esi)
7caaa7:	0f 11 86 94 00 00 00 	movups %xmm0,0x94(%esi)
7caaae:	0f 11 86 a4 00 00 00 	movups %xmm0,0xa4(%esi)
7caab5:	0f 11 86 b4 00 00 00 	movups %xmm0,0xb4(%esi)
7caabc:	0f 11 86 c4 00 00 00 	movups %xmm0,0xc4(%esi)
7caac3:	0f 28 05 d0 c2 c2 00 	movaps 0xc2c2d0,%xmm0
7caaca:	0f 11 86 d4 00 00 00 	movups %xmm0,0xd4(%esi)
7caad1:	0f 11 86 e4 00 00 00 	movups %xmm0,0xe4(%esi)
7caad8:	0f 11 86 f4 00 00 00 	movups %xmm0,0xf4(%esi)
7caadf:	0f 11 86 04 01 00 00 	movups %xmm0,0x104(%esi)
7caae6:	0f 11 86 14 01 00 00 	movups %xmm0,0x114(%esi)
7caaed:	0f 11 86 24 01 00 00 	movups %xmm0,0x124(%esi)
7caaf4:	0f 11 86 34 01 00 00 	movups %xmm0,0x134(%esi)
7caafb:	0f 28 05 90 c2 c2 00 	movaps 0xc2c290,%xmm0
7cab02:	0f 11 86 44 01 00 00 	movups %xmm0,0x144(%esi)
7cab09:	66 0f d6 86 54 01 00 	movq   %xmm0,0x154(%esi)
7cab10:	00
7cab11:	0f 28 05 70 c2 c2 00 	movaps 0xc2c270,%xmm0
7cab18:	c7 86 5c 01 00 00 08 	movl   $0x8080808,0x15c(%esi)
7cab1f:	08 08 08
7cab22:	c7 86 60 01 00 00 08 	movl   $0x8080808,0x160(%esi)
7cab29:	08 08 08
7cab2c:	0f 11 86 64 01 00 00 	movups %xmm0,0x164(%esi)
7cab33:	0f 11 86 74 01 00 00 	movups %xmm0,0x174(%esi)
7cab3a:	8d 86 84 01 00 00    	lea    0x184(%esi),%eax
7cab40:	50                   	push   %eax
7cab41:	8d 4e 44             	lea    0x44(%esi),%ecx
7cab44:	51                   	push   %ecx
7cab45:	6a 09                	push   $0x9
7cab47:	68 20 01 00 00       	push   $0x120
7cab4c:	e8 8f 06 00 00       	call   0x7cb1e0
7cab51:	83 c4 10             	add    $0x10,%esp
7cab54:	85 c0                	test   %eax,%eax
7cab56:	0f 85 74 04 00 00    	jne    0x7cafd0
7cab5c:	8d 86 84 0a 00 00    	lea    0xa84(%esi),%eax
7cab62:	50                   	push   %eax
7cab63:	8d 8e 64 01 00 00    	lea    0x164(%esi),%ecx
7cab69:	51                   	push   %ecx
7cab6a:	6a 06                	push   $0x6
7cab6c:	6a 20                	push   $0x20
7cab6e:	e8 6d 06 00 00       	call   0x7cb1e0
7cab73:	83 c4 10             	add    $0x10,%esp
7cab76:	85 c0                	test   %eax,%eax
7cab78:	0f 85 45 04 00 00    	jne    0x7cafc3
7cab7e:	8b 54 24 28          	mov    0x28(%esp),%edx
7cab82:	eb 10                	jmp    0x7cab94
7cab84:	8b 54 24 28          	mov    0x28(%esp),%edx
7cab88:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
7cab8f:	00
7cab90:	8b 6c 24 10          	mov    0x10(%esp),%ebp
7cab94:	83 fb 10             	cmp    $0x10,%ebx
7cab97:	7d 40                	jge    0x7cabd9
7cab99:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
7caba0:	3b fd                	cmp    %ebp,%edi
7caba2:	72 1f                	jb     0x7cabc3
7caba4:	56                   	push   %esi
7caba5:	e8 d6 0f 00 00       	call   0x7cbb80
7cabaa:	83 c4 04             	add    $0x4,%esp
7cabad:	85 c0                	test   %eax,%eax
7cabaf:	0f 85 aa 03 00 00    	jne    0x7caf5f
7cabb5:	8b 6e 28             	mov    0x28(%esi),%ebp
7cabb8:	8b 7e 24             	mov    0x24(%esi),%edi
7cabbb:	8b 54 24 28          	mov    0x28(%esp),%edx
7cabbf:	89 6c 24 10          	mov    %ebp,0x10(%esp)
7cabc3:	0f b6 07             	movzbl (%edi),%eax
7cabc6:	8b cb                	mov    %ebx,%ecx
7cabc8:	d3 e0                	shl    %cl,%eax
7cabca:	83 c3 08             	add    $0x8,%ebx
7cabcd:	0b d0                	or     %eax,%edx
7cabcf:	47                   	inc    %edi
7cabd0:	89 54 24 28          	mov    %edx,0x28(%esp)
7cabd4:	83 fb 10             	cmp    $0x10,%ebx
7cabd7:	7c c7                	jl     0x7caba0
7cabd9:	8b c2                	mov    %edx,%eax
7cabdb:	b9 20 01 00 00       	mov    $0x120,%ecx
7cabe0:	25 ff 01 00 00       	and    $0x1ff,%eax
7cabe5:	0f b7 84 46 84 01 00 	movzwl 0x184(%esi,%eax,2),%eax
7cabec:	00
7cabed:	89 44 24 18          	mov    %eax,0x18(%esp)
7cabf1:	66 3b c1             	cmp    %cx,%ax
7cabf4:	72 40                	jb     0x7cac36
7cabf6:	b9 08 00 00 00       	mov    $0x8,%ecx
7cabfb:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
7cac00:	8b c1                	mov    %ecx,%eax
7cac02:	41                   	inc    %ecx
7cac03:	83 f8 10             	cmp    $0x10,%eax
7cac06:	0f 87 90 03 00 00    	ja     0x7caf9c
7cac0c:	8b 44 24 18          	mov    0x18(%esp),%eax
7cac10:	d3 ea                	shr    %cl,%edx
7cac12:	83 e2 01             	and    $0x1,%edx
7cac15:	0f b7 c0             	movzwl %ax,%eax
7cac18:	03 c0                	add    %eax,%eax
7cac1a:	0b d0                	or     %eax,%edx
7cac1c:	0f b7 84 56 84 01 00 	movzwl 0x184(%esi,%edx,2),%eax
7cac23:	00
7cac24:	ba 20 01 00 00       	mov    $0x120,%edx
7cac29:	66 3b c2             	cmp    %dx,%ax
7cac2c:	89 44 24 18          	mov    %eax,0x18(%esp)
7cac30:	8b 54 24 28          	mov    0x28(%esp),%edx
7cac34:	73 ca                	jae    0x7cac00
7cac36:	0f b7 c0             	movzwl %ax,%eax
7cac39:	89 44 24 18          	mov    %eax,0x18(%esp)
7cac3d:	0f b6 4c 30 44       	movzbl 0x44(%eax,%esi,1),%ecx
7cac42:	d3 ea                	shr    %cl,%edx
7cac44:	2b d9                	sub    %ecx,%ebx
7cac46:	89 54 24 28          	mov    %edx,0x28(%esp)
7cac4a:	3d 00 01 00 00       	cmp    $0x100,%eax
7cac4f:	73 40                	jae    0x7cac91
7cac51:	8b 46 0c             	mov    0xc(%esi),%eax
7cac54:	8b 4c 24 18          	mov    0x18(%esp),%ecx
7cac58:	88 8c 30 84 0b 00 00 	mov    %cl,0xb84(%eax,%esi,1)
7cac5f:	ff 46 0c             	incl   0xc(%esi)
7cac62:	81 7e 0c 00 80 00 00 	cmpl   $0x8000,0xc(%esi)
7cac69:	0f 85 25 ff ff ff    	jne    0x7cab94
7cac6f:	8b 46 10             	mov    0x10(%esi),%eax
7cac72:	68 00 80 00 00       	push   $0x8000
7cac77:	56                   	push   %esi
7cac78:	ff d0                	call   *%eax
7cac7a:	83 c4 08             	add    $0x8,%esp
7cac7d:	85 c0                	test   %eax,%eax
7cac7f:	0f 85 f2 02 00 00    	jne    0x7caf77
7cac85:	8b 54 24 28          	mov    0x28(%esp),%edx
7cac89:	89 46 0c             	mov    %eax,0xc(%esi)
7cac8c:	e9 03 ff ff ff       	jmp    0x7cab94
7cac91:	0f 84 70 fd ff ff    	je     0x7caa07
7cac97:	2d 01 01 00 00       	sub    $0x101,%eax
7cac9c:	89 44 24 18          	mov    %eax,0x18(%esp)
7caca0:	83 f8 1d             	cmp    $0x1d,%eax
7caca3:	0f 83 0d 03 00 00    	jae    0x7cafb6
7caca9:	0f b6 80 c0 c1 c2 00 	movzbl 0xc2c1c0(%eax),%eax
7cacb0:	3b d8                	cmp    %eax,%ebx
7cacb2:	7d 43                	jge    0x7cacf7
7cacb4:	3b fd                	cmp    %ebp,%edi
7cacb6:	72 1f                	jb     0x7cacd7
7cacb8:	56                   	push   %esi
7cacb9:	e8 c2 0e 00 00       	call   0x7cbb80
7cacbe:	83 c4 04             	add    $0x4,%esp
7cacc1:	85 c0                	test   %eax,%eax
7cacc3:	0f 85 96 02 00 00    	jne    0x7caf5f
7cacc9:	8b 6e 28             	mov    0x28(%esi),%ebp
7caccc:	8b 7e 24             	mov    0x24(%esi),%edi
7caccf:	8b 54 24 28          	mov    0x28(%esp),%edx
7cacd3:	89 6c 24 10          	mov    %ebp,0x10(%esp)
7cacd7:	0f b6 07             	movzbl (%edi),%eax
7cacda:	8b cb                	mov    %ebx,%ecx
7cacdc:	d3 e0                	shl    %cl,%eax
7cacde:	83 c3 08             	add    $0x8,%ebx
7cace1:	0b d0                	or     %eax,%edx
7cace3:	47                   	inc    %edi
7cace4:	8b 44 24 18          	mov    0x18(%esp),%eax
7cace8:	89 54 24 28          	mov    %edx,0x28(%esp)
7cacec:	0f b6 80 c0 c1 c2 00 	movzbl 0xc2c1c0(%eax),%eax
7cacf3:	3b d8                	cmp    %eax,%ebx
7cacf5:	7c bd                	jl     0x7cacb4
7cacf7:	8b 44 24 18          	mov    0x18(%esp),%eax
7cacfb:	0f b6 88 c0 c1 c2 00 	movzbl 0xc2c1c0(%eax),%ecx
7cad02:	2b d9                	sub    %ecx,%ebx
7cad04:	0f b7 04 4d 24 c1 c2 	movzwl 0xc2c124(,%ecx,2),%eax
7cad0b:	00
7cad0c:	23 c2                	and    %edx,%eax
7cad0e:	d3 ea                	shr    %cl,%edx
7cad10:	89 44 24 14          	mov    %eax,0x14(%esp)
7cad14:	8b 44 24 18          	mov    0x18(%esp),%eax
7cad18:	89 54 24 28          	mov    %edx,0x28(%esp)
7cad1c:	0f b7 04 45 48 c1 c2 	movzwl 0xc2c148(,%eax,2),%eax
7cad23:	00
7cad24:	01 44 24 14          	add    %eax,0x14(%esp)
7cad28:	83 fb 10             	cmp    $0x10,%ebx
7cad2b:	7d 3c                	jge    0x7cad69
7cad2d:	0f 1f 00             	nopl   (%eax)
7cad30:	3b fd                	cmp    %ebp,%edi
7cad32:	72 1f                	jb     0x7cad53
7cad34:	56                   	push   %esi
7cad35:	e8 46 0e 00 00       	call   0x7cbb80
7cad3a:	83 c4 04             	add    $0x4,%esp
7cad3d:	85 c0                	test   %eax,%eax
7cad3f:	0f 85 1a 02 00 00    	jne    0x7caf5f
7cad45:	8b 6e 28             	mov    0x28(%esi),%ebp
7cad48:	8b 7e 24             	mov    0x24(%esi),%edi
7cad4b:	8b 54 24 28          	mov    0x28(%esp),%edx
7cad4f:	89 6c 24 10          	mov    %ebp,0x10(%esp)