41c8d6:	83 c1 02             	add    $0x2,%ecx
41c8d9:	3b cf                	cmp    %edi,%ecx
41c8db:	75 f4                	jne    0x41c8d1
41c8dd:	2b ce                	sub    %esi,%ecx
41c8df:	d1 f9                	sar    $1,%ecx
41c8e1:	3b ca                	cmp    %edx,%ecx
41c8e3:	75 6b                	jne    0x41c950
41c8e5:	8b 45 0c             	mov    0xc(%ebp),%eax
41c8e8:	8d 3c 4e             	lea    (%esi,%ecx,2),%edi
41c8eb:	2b c2                	sub    %edx,%eax
41c8ed:	0f 57 c9             	xorps  %xmm1,%xmm1
41c8f0:	83 e0 f0             	and    $0xfffffff0,%eax
41c8f3:	03 c1                	add    %ecx,%eax
41c8f5:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
41c8f8:	eb 12                	jmp    0x41c90c
41c8fa:	0f 28 c1             	movaps %xmm1,%xmm0
41c8fd:	66 0f 75 07          	pcmpeqw (%edi),%xmm0
41c901:	66 0f d7 c0          	pmovmskb %xmm0,%eax
41c905:	85 c0                	test   %eax,%eax
41c907:	75 07                	jne    0x41c910
41c909:	83 c7 10             	add    $0x10,%edi
41c90c:	3b f9                	cmp    %ecx,%edi
41c90e:	75 ea                	jne    0x41c8fa
41c910:	8b 45 0c             	mov    0xc(%ebp),%eax
41c913:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
41c916:	3b f9                	cmp    %ecx,%edi
41c918:	74 0e                	je     0x41c928
41c91a:	33 c0                	xor    %eax,%eax
41c91c:	66 39 07             	cmp    %ax,(%edi)
41c91f:	74 07                	je     0x41c928
41c921:	83 c7 02             	add    $0x2,%edi
41c924:	3b f9                	cmp    %ecx,%edi
41c926:	75 f4                	jne    0x41c91c
41c928:	8b cf                	mov    %edi,%ecx
41c92a:	e9 ae fe ff ff       	jmp    0x41c7dd
41c92f:	8b 55 08             	mov    0x8(%ebp),%edx
41c932:	8b ca                	mov    %edx,%ecx
41c934:	8b 45 0c             	mov    0xc(%ebp),%eax
41c937:	8d 34 42             	lea    (%edx,%eax,2),%esi
41c93a:	3b d6                	cmp    %esi,%edx
41c93c:	74 0e                	je     0x41c94c
41c93e:	33 c0                	xor    %eax,%eax
41c940:	66 39 01             	cmp    %ax,(%ecx)
41c943:	74 07                	je     0x41c94c
41c945:	83 c1 02             	add    $0x2,%ecx
41c948:	3b ce                	cmp    %esi,%ecx
41c94a:	75 f4                	jne    0x41c940
41c94c:	2b ca                	sub    %edx,%ecx
41c94e:	d1 f9                	sar    $1,%ecx
41c950:	5f                   	pop    %edi
41c951:	8b c1                	mov    %ecx,%eax
41c953:	5e                   	pop    %esi
41c954:	5d                   	pop    %ebp
41c955:	c3                   	ret
41c956:	8b ff                	mov    %edi,%edi
41c958:	55                   	push   %ebp
41c959:	8b ec                	mov    %esp,%ebp
41c95b:	56                   	push   %esi
41c95c:	8b 75 0c             	mov    0xc(%ebp),%esi
41c95f:	8b 06                	mov    (%esi),%eax
41c961:	3b 05 dc f7 43 00    	cmp    0x43f7dc,%eax
41c967:	74 17                	je     0x41c980
41c969:	8b 4d 08             	mov    0x8(%ebp),%ecx
41c96c:	a1 34 db 43 00       	mov    0x43db34,%eax
41c971:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
41c977:	75 07                	jne    0x41c980
41c979:	e8 80 7f 00 00       	call   0x4248fe
41c97e:	89 06                	mov    %eax,(%esi)
41c980:	5e                   	pop    %esi
41c981:	5d                   	pop    %ebp
41c982:	c3                   	ret
41c983:	8b ff                	mov    %edi,%edi
41c985:	55                   	push   %ebp
41c986:	8b ec                	mov    %esp,%ebp
41c988:	8b 45 10             	mov    0x10(%ebp),%eax
41c98b:	56                   	push   %esi
41c98c:	8b 75 0c             	mov    0xc(%ebp),%esi
41c98f:	8b 0e                	mov    (%esi),%ecx
41c991:	3b 0c 85 dc f7 43 00 	cmp    0x43f7dc(,%eax,4),%ecx
41c998:	74 17                	je     0x41c9b1
41c99a:	8b 4d 08             	mov    0x8(%ebp),%ecx
41c99d:	a1 34 db 43 00       	mov    0x43db34,%eax
41c9a2:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
41c9a8:	75 07                	jne    0x41c9b1
41c9aa:	e8 4f 7f 00 00       	call   0x4248fe
41c9af:	89 06                	mov    %eax,(%esi)
41c9b1:	5e                   	pop    %esi
41c9b2:	5d                   	pop    %ebp
41c9b3:	c3                   	ret
41c9b4:	8b ff                	mov    %edi,%edi
41c9b6:	55                   	push   %ebp
41c9b7:	8b ec                	mov    %esp,%ebp
41c9b9:	56                   	push   %esi
41c9ba:	8b 75 0c             	mov    0xc(%ebp),%esi
41c9bd:	8b 06                	mov    (%esi),%eax
41c9bf:	3b 05 c4 fb 43 00    	cmp    0x43fbc4,%eax
41c9c5:	74 17                	je     0x41c9de
41c9c7:	8b 4d 08             	mov    0x8(%ebp),%ecx
41c9ca:	a1 34 db 43 00       	mov    0x43db34,%eax
41c9cf:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
41c9d5:	75 07                	jne    0x41c9de
41c9d7:	e8 e5 60 00 00       	call   0x422ac1
41c9dc:	89 06                	mov    %eax,(%esi)
41c9de:	5e                   	pop    %esi
41c9df:	5d                   	pop    %ebp
41c9e0:	c3                   	ret
41c9e1:	8b ff                	mov    %edi,%edi
41c9e3:	55                   	push   %ebp
41c9e4:	8b ec                	mov    %esp,%ebp
41c9e6:	8b 45 10             	mov    0x10(%ebp),%eax
41c9e9:	56                   	push   %esi
41c9ea:	8b 75 0c             	mov    0xc(%ebp),%esi
41c9ed:	8b 0e                	mov    (%esi),%ecx
41c9ef:	3b 0c 85 c4 fb 43 00 	cmp    0x43fbc4(,%eax,4),%ecx
41c9f6:	74 17                	je     0x41ca0f
41c9f8:	8b 4d 08             	mov    0x8(%ebp),%ecx
41c9fb:	a1 34 db 43 00       	mov    0x43db34,%eax
41ca00:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
41ca06:	75 07                	jne    0x41ca0f
41ca08:	e8 b4 60 00 00       	call   0x422ac1
41ca0d:	89 06                	mov    %eax,(%esi)
41ca0f:	5e                   	pop    %esi
41ca10:	5d                   	pop    %ebp
41ca11:	c3                   	ret
41ca12:	8b ff                	mov    %edi,%edi
41ca14:	55                   	push   %ebp
41ca15:	8b ec                	mov    %esp,%ebp
41ca17:	8b 45 08             	mov    0x8(%ebp),%eax
41ca1a:	33 c9                	xor    %ecx,%ecx
41ca1c:	56                   	push   %esi
41ca1d:	57                   	push   %edi
41ca1e:	be ff 07 00 00       	mov    $0x7ff,%esi
41ca23:	8b 38                	mov    (%eax),%edi
41ca25:	8b 50 04             	mov    0x4(%eax),%edx
41ca28:	8b c2                	mov    %edx,%eax
41ca2a:	c1 e8 14             	shr    $0x14,%eax
41ca2d:	23 c6                	and    %esi,%eax
41ca2f:	3b c6                	cmp    %esi,%eax
41ca31:	75 3b                	jne    0x41ca6e
41ca33:	8b f2                	mov    %edx,%esi
41ca35:	8b c7                	mov    %edi,%eax
41ca37:	81 e6 ff ff 0f 00    	and    $0xfffff,%esi
41ca3d:	0b c6                	or     %esi,%eax
41ca3f:	75 03                	jne    0x41ca44
41ca41:	40                   	inc    %eax
41ca42:	eb 2c                	jmp    0x41ca70
41ca44:	b8 00 00 08 00       	mov    $0x80000,%eax
41ca49:	3b d1                	cmp    %ecx,%edx
41ca4b:	7f 13                	jg     0x41ca60
41ca4d:	7c 04                	jl     0x41ca53
41ca4f:	3b f9                	cmp    %ecx,%edi
41ca51:	73 0d                	jae    0x41ca60
41ca53:	3b f9                	cmp    %ecx,%edi
41ca55:	75 09                	jne    0x41ca60
41ca57:	3b f0                	cmp    %eax,%esi
41ca59:	75 05                	jne    0x41ca60
41ca5b:	6a 04                	push   $0x4
41ca5d:	58                   	pop    %eax
41ca5e:	eb 10                	jmp    0x41ca70
41ca60:	23 d0                	and    %eax,%edx
41ca62:	0b ca                	or     %edx,%ecx
41ca64:	74 04                	je     0x41ca6a
41ca66:	6a 02                	push   $0x2
41ca68:	eb f3                	jmp    0x41ca5d
41ca6a:	6a 03                	push   $0x3
41ca6c:	eb ef                	jmp    0x41ca5d
41ca6e:	33 c0                	xor    %eax,%eax
41ca70:	5f                   	pop    %edi
41ca71:	5e                   	pop    %esi
41ca72:	5d                   	pop    %ebp
41ca73:	c3                   	ret
41ca74:	8b ff                	mov    %edi,%edi
41ca76:	55                   	push   %ebp
41ca77:	8b ec                	mov    %esp,%ebp
41ca79:	8b 45 08             	mov    0x8(%ebp),%eax
41ca7c:	53                   	push   %ebx
41ca7d:	0f bf 5d 14          	movswl 0x14(%ebp),%ebx
41ca81:	56                   	push   %esi
41ca82:	8b 70 04             	mov    0x4(%eax),%esi
41ca85:	8b cb                	mov    %ebx,%ecx
41ca87:	57                   	push   %edi
41ca88:	8b 38                	mov    (%eax),%edi
41ca8a:	8b d6                	mov    %esi,%edx
41ca8c:	23 55 10             	and    0x10(%ebp),%edx
41ca8f:	8b c7                	mov    %edi,%eax
41ca91:	23 45 0c             	and    0xc(%ebp),%eax
41ca94:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
41ca9a:	e8 c1 13 01 00       	call   0x42de60
41ca9f:	6a 08                	push   $0x8
41caa1:	0f b7 c0             	movzwl %ax,%eax
41caa4:	59                   	pop    %ecx
41caa5:	66 3b c1             	cmp    %cx,%ax
41caa8:	77 66                	ja     0x41cb10
41caaa:	73 04                	jae    0x41cab0
41caac:	32 c0                	xor    %al,%al
41caae:	eb 62                	jmp    0x41cb12
41cab0:	33 c0                	xor    %eax,%eax
41cab2:	33 d2                	xor    %edx,%edx
41cab4:	40                   	inc    %eax
41cab5:	8b cb                	mov    %ebx,%ecx
41cab7:	e8 84 13 01 00       	call   0x42de40
41cabc:	83 c0 ff             	add    $0xffffffff,%eax
41cabf:	83 d2 ff             	adc    $0xffffffff,%edx
41cac2:	23 c7                	and    %edi,%eax
41cac4:	23 d6                	and    %esi,%edx
41cac6:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
41cacc:	0b c2                	or     %edx,%eax
41cace:	75 40                	jne    0x41cb10
41cad0:	66 83 7d 14 30       	cmpw   $0x30,0x14(%ebp)
41cad5:	74 22                	je     0x41caf9
41cad7:	0f ac f7 04          	shrd   $0x4,%esi,%edi
41cadb:	8b cb                	mov    %ebx,%ecx
41cadd:	23 7d 0c             	and    0xc(%ebp),%edi
41cae0:	c1 ee 04             	shr    $0x4,%esi
41cae3:	8b c7                	mov    %edi,%eax
41cae5:	23 75 10             	and    0x10(%ebp),%esi
41cae8:	81 e6 ff ff 00 00    	and    $0xffff,%esi
41caee:	8b d6                	mov    %esi,%edx
41caf0:	e8 6b 13 01 00       	call   0x42de60
41caf5:	8a c8                	mov    %al,%cl
41caf7:	eb 10                	jmp    0x41cb09
41caf9:	33 c9                	xor    %ecx,%ecx
41cafb:	81 e6 00 00 f0 7f    	and    $0x7ff00000,%esi
41cb01:	8b c1                	mov    %ecx,%eax
41cb03:	0b c6                	or     %esi,%eax
41cb05:	74 02                	je     0x41cb09
41cb07:	b1 01                	mov    $0x1,%cl
41cb09:	80 e1 01             	and    $0x1,%cl
41cb0c:	8a c1                	mov    %cl,%al
41cb0e:	eb 02                	jmp    0x41cb12
41cb10:	b0 01                	mov    $0x1,%al
41cb12:	5f                   	pop    %edi
41cb13:	5e                   	pop    %esi
41cb14:	5b                   	pop    %ebx
41cb15:	5d                   	pop    %ebp
41cb16:	c3                   	ret
41cb17:	8b ff                	mov    %edi,%edi
41cb19:	55                   	push   %ebp
41cb1a:	8b ec                	mov    %esp,%ebp
41cb1c:	83 ec 2c             	sub    $0x2c,%esp
41cb1f:	33 d2                	xor    %edx,%edx
41cb21:	56                   	push   %esi
41cb22:	8b 75 1c             	mov    0x1c(%ebp),%esi
41cb25:	57                   	push   %edi
41cb26:	85 f6                	test   %esi,%esi
41cb28:	79 02                	jns    0x41cb2c
41cb2a:	8b f2                	mov    %edx,%esi
41cb2c:	8b 7d 0c             	mov    0xc(%ebp),%edi
41cb2f:	8d 46 0b             	lea    0xb(%esi),%eax
41cb32:	88 17                	mov    %dl,(%edi)
41cb34:	39 45 10             	cmp    %eax,0x10(%ebp)
41cb37:	77 22                	ja     0x41cb5b
41cb39:	8b 4d 2c             	mov    0x2c(%ebp),%ecx
41cb3c:	6a 22                	push   $0x22
41cb3e:	5e                   	pop    %esi
41cb3f:	51                   	push   %ecx
41cb40:	52                   	push   %edx
41cb41:	52                   	push   %edx
41cb42:	52                   	push   %edx
41cb43:	52                   	push   %edx
41cb44:	52                   	push   %edx
41cb45:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
41cb49:	89 71 18             	mov    %esi,0x18(%ecx)
41cb4c:	e8 20 08 ff ff       	call   0x40d371
41cb51:	83 c4 18             	add    $0x18,%esp
41cb54:	8b c6                	mov    %esi,%eax
41cb56:	e9 e5 02 00 00       	jmp    0x41ce40
41cb5b:	53                   	push   %ebx
41cb5c:	8b 5d 08             	mov    0x8(%ebp),%ebx
41cb5f:	b9 ff 07 00 00       	mov    $0x7ff,%ecx
41cb64:	8b 43 04             	mov    0x4(%ebx),%eax
41cb67:	c1 e8 14             	shr    $0x14,%eax
41cb6a:	23 c1                	and    %ecx,%eax
41cb6c:	3b c1                	cmp    %ecx,%eax
41cb6e:	75 53                	jne    0x41cbc3
41cb70:	ff 75 2c             	push   0x2c(%ebp)
41cb73:	ff 75 28             	push   0x28(%ebp)
41cb76:	ff 75 24             	push   0x24(%ebp)
41cb79:	52                   	push   %edx
41cb7a:	56                   	push   %esi
41cb7b:	ff 75 18             	push   0x18(%ebp)
41cb7e:	ff 75 14             	push   0x14(%ebp)
41cb81:	ff 75 10             	push   0x10(%ebp)
41cb84:	57                   	push   %edi
41cb85:	53                   	push   %ebx
41cb86:	e8 b9 02 00 00       	call   0x41ce44
41cb8b:	83 c4 28             	add    $0x28,%esp
41cb8e:	85 c0                	test   %eax,%eax
41cb90:	74 08                	je     0x41cb9a
41cb92:	c6 07 00             	movb   $0x0,(%edi)
41cb95:	e9 a5 02 00 00       	jmp    0x41ce3f
41cb9a:	6a 65                	push   $0x65
41cb9c:	57                   	push   %edi
41cb9d:	e8 ae 26 01 00       	call   0x42f250
41cba2:	59                   	pop    %ecx
41cba3:	59                   	pop    %ecx
41cba4:	85 c0                	test   %eax,%eax
41cba6:	0f 84 91 02 00 00    	je     0x41ce3d
41cbac:	8a 4d 20             	mov    0x20(%ebp),%cl
41cbaf:	80 f1 01             	xor    $0x1,%cl
41cbb2:	c0 e1 05             	shl    $0x5,%cl
41cbb5:	80 c1 50             	add    $0x50,%cl
41cbb8:	88 08                	mov    %cl,(%eax)
41cbba:	c6 40 03 00          	movb   $0x0,0x3(%eax)
41cbbe:	e9 7a 02 00 00       	jmp    0x41ce3d
41cbc3:	39 53 04             	cmp    %edx,0x4(%ebx)
41cbc6:	7f 0a                	jg     0x41cbd2
41cbc8:	7c 04                	jl     0x41cbce
41cbca:	39 13                	cmp    %edx,(%ebx)
41cbcc:	73 04                	jae    0x41cbd2
41cbce:	c6 07 2d             	movb   $0x2d,(%edi)
41cbd1:	47                   	inc    %edi
41cbd2:	8a 45 20             	mov    0x20(%ebp),%al
41cbd5:	8d 57 01             	lea    0x1(%edi),%edx
41cbd8:	8b 4b 04             	mov    0x4(%ebx),%ecx
41cbdb:	34 01                	xor    $0x1,%al
41cbdd:	88 45 ff             	mov    %al,-0x1(%ebp)
41cbe0:	81 e1 00 00 f0 7f    	and    $0x7ff00000,%ecx
41cbe6:	0f b6 c0             	movzbl %al,%eax
41cbe9:	c1 e0 05             	shl    $0x5,%eax
41cbec:	83 c0 07             	add    $0x7,%eax
41cbef:	c7 45 f0 ff 03 00 00 	movl   $0x3ff,-0x10(%ebp)
41cbf6:	89 45 d8             	mov    %eax,-0x28(%ebp)
41cbf9:	33 c0                	xor    %eax,%eax
41cbfb:	0b c1                	or     %ecx,%eax
41cbfd:	89 55 f4             	mov    %edx,-0xc(%ebp)
41cc00:	6a 30                	push   $0x30
41cc02:	58                   	pop    %eax
41cc03:	75 1e                	jne    0x41cc23
41cc05:	88 07                	mov    %al,(%edi)
41cc07:	8b 43 04             	mov    0x4(%ebx),%eax
41cc0a:	8b 0b                	mov    (%ebx),%ecx
41cc0c:	25 ff ff 0f 00       	and    $0xfffff,%eax
41cc11:	0b c8                	or     %eax,%ecx
41cc13:	75 05                	jne    0x41cc1a
41cc15:	21 4d f0             	and    %ecx,-0x10(%ebp)
41cc18:	eb 0c                	jmp    0x41cc26
41cc1a:	c7 45 f0 fe 03 00 00 	movl   $0x3fe,-0x10(%ebp)
41cc21:	eb 03                	jmp    0x41cc26
41cc23:	c6 07 31             	movb   $0x31,(%edi)
41cc26:	8d 7a 01             	lea    0x1(%edx),%edi
41cc29:	85 f6                	test   %esi,%esi
41cc2b:	75 04                	jne    0x41cc31
41cc2d:	32 c0                	xor    %al,%al
41cc2f:	eb 23                	jmp    0x41cc54
41cc31:	8b 45 2c             	mov    0x2c(%ebp),%eax
41cc34:	80 78 14 00          	cmpb   $0x0,0x14(%eax)
41cc38:	75 0d                	jne    0x41cc47
41cc3a:	8b c8                	mov    %eax,%ecx
41cc3c:	e8 7f 4c ff ff       	call   0x4118c0