5ce836:	83 fb 7f             	cmp    $0x7f,%ebx
5ce839:	77 0c                	ja     0x5ce847
5ce83b:	b8 01 00 00 00       	mov    $0x1,%eax
5ce840:	2b f8                	sub    %eax,%edi
5ce842:	e9 79 ff ff ff       	jmp    0x5ce7c0
5ce847:	81 fb ff 07 00 00    	cmp    $0x7ff,%ebx
5ce84d:	77 0c                	ja     0x5ce85b
5ce84f:	b8 02 00 00 00       	mov    $0x2,%eax
5ce854:	2b f8                	sub    %eax,%edi
5ce856:	e9 65 ff ff ff       	jmp    0x5ce7c0
5ce85b:	b8 ff ff 00 00       	mov    $0xffff,%eax
5ce860:	3b c3                	cmp    %ebx,%eax
5ce862:	1b c0                	sbb    %eax,%eax
5ce864:	f7 d8                	neg    %eax
5ce866:	83 c0 03             	add    $0x3,%eax
5ce869:	2b f8                	sub    %eax,%edi
5ce86b:	e9 50 ff ff ff       	jmp    0x5ce7c0
5ce870:	a8 02                	test   $0x2,%al
5ce872:	0f 84 48 ff ff ff    	je     0x5ce7c0
5ce878:	8b 45 10             	mov    0x10(%ebp),%eax
5ce87b:	c6 00 00             	movb   $0x0,(%eax)
5ce87e:	5f                   	pop    %edi
5ce87f:	5e                   	pop    %esi
5ce880:	33 c0                	xor    %eax,%eax
5ce882:	5b                   	pop    %ebx
5ce883:	8b e5                	mov    %ebp,%esp
5ce885:	5d                   	pop    %ebp
5ce886:	c3                   	ret
5ce887:	8b 45 18             	mov    0x18(%ebp),%eax
5ce88a:	a8 08                	test   $0x8,%al
5ce88c:	74 38                	je     0x5ce8c6
5ce88e:	ff 75 24             	push   0x24(%ebp)
5ce891:	8b 75 20             	mov    0x20(%ebp),%esi
5ce894:	8b 4d 10             	mov    0x10(%ebp),%ecx
5ce897:	56                   	push   %esi
5ce898:	ff 75 1c             	push   0x1c(%ebp)
5ce89b:	50                   	push   %eax
5ce89c:	6a 00                	push   $0x0
5ce89e:	6a 00                	push   $0x0
5ce8a0:	ff 75 0c             	push   0xc(%ebp)
5ce8a3:	c6 04 0f 00          	movb   $0x0,(%edi,%ecx,1)
5ce8a7:	ff 75 08             	push   0x8(%ebp)
5ce8aa:	e8 11 fe ff ff       	call   0x5ce6c0
5ce8af:	83 c4 20             	add    $0x20,%esp
5ce8b2:	8b ce                	mov    %esi,%ecx
5ce8b4:	8d 14 07             	lea    (%edi,%eax,1),%edx
5ce8b7:	53                   	push   %ebx
5ce8b8:	e8 23 00 00 00       	call   0x5ce8e0
5ce8bd:	5f                   	pop    %edi
5ce8be:	5e                   	pop    %esi
5ce8bf:	03 c2                	add    %edx,%eax
5ce8c1:	5b                   	pop    %ebx
5ce8c2:	8b e5                	mov    %ebp,%esp
5ce8c4:	5d                   	pop    %ebp
5ce8c5:	c3                   	ret
5ce8c6:	8b 45 10             	mov    0x10(%ebp),%eax
5ce8c9:	c6 04 07 00          	movb   $0x0,(%edi,%eax,1)
5ce8cd:	8d 47 01             	lea    0x1(%edi),%eax
5ce8d0:	5f                   	pop    %edi
5ce8d1:	5e                   	pop    %esi
5ce8d2:	5b                   	pop    %ebx
5ce8d3:	8b e5                	mov    %ebp,%esp
5ce8d5:	5d                   	pop    %ebp
5ce8d6:	c3                   	ret
5ce8d7:	cc                   	int3
5ce8d8:	cc                   	int3
5ce8d9:	cc                   	int3
5ce8da:	cc                   	int3
5ce8db:	cc                   	int3
5ce8dc:	cc                   	int3
5ce8dd:	cc                   	int3
5ce8de:	cc                   	int3
5ce8df:	cc                   	int3
5ce8e0:	55                   	push   %ebp
5ce8e1:	8b ec                	mov    %esp,%ebp
5ce8e3:	8b 45 08             	mov    0x8(%ebp),%eax
5ce8e6:	83 f8 7f             	cmp    $0x7f,%eax
5ce8e9:	77 09                	ja     0x5ce8f4
5ce8eb:	b8 01 00 00 00       	mov    $0x1,%eax
5ce8f0:	5d                   	pop    %ebp
5ce8f1:	c2 04 00             	ret    $0x4
5ce8f4:	3d ff 07 00 00       	cmp    $0x7ff,%eax
5ce8f9:	77 09                	ja     0x5ce904
5ce8fb:	b8 02 00 00 00       	mov    $0x2,%eax
5ce900:	5d                   	pop    %ebp
5ce901:	c2 04 00             	ret    $0x4
5ce904:	b9 ff ff 00 00       	mov    $0xffff,%ecx
5ce909:	3b c8                	cmp    %eax,%ecx
5ce90b:	1b c0                	sbb    %eax,%eax
5ce90d:	f7 d8                	neg    %eax
5ce90f:	83 c0 03             	add    $0x3,%eax
5ce912:	5d                   	pop    %ebp
5ce913:	c2 04 00             	ret    $0x4
5ce916:	cc                   	int3
5ce917:	cc                   	int3
5ce918:	cc                   	int3
5ce919:	cc                   	int3
5ce91a:	cc                   	int3
5ce91b:	cc                   	int3
5ce91c:	cc                   	int3
5ce91d:	cc                   	int3
5ce91e:	cc                   	int3
5ce91f:	cc                   	int3
5ce920:	55                   	push   %ebp
5ce921:	8b ec                	mov    %esp,%ebp
5ce923:	8b 4d 08             	mov    0x8(%ebp),%ecx
5ce926:	81 f9 00 00 11 00    	cmp    $0x110000,%ecx
5ce92c:	73 26                	jae    0x5ce954
5ce92e:	8d 81 00 28 ff ff    	lea    -0xd800(%ecx),%eax
5ce934:	3d ff 07 00 00       	cmp    $0x7ff,%eax
5ce939:	76 19                	jbe    0x5ce954
5ce93b:	0f b7 c1             	movzwl %cx,%eax
5ce93e:	3d fe ff 00 00       	cmp    $0xfffe,%eax
5ce943:	73 0f                	jae    0x5ce954
5ce945:	8d 81 30 02 ff ff    	lea    -0xfdd0(%ecx),%eax
5ce94b:	83 f8 1f             	cmp    $0x1f,%eax
5ce94e:	76 04                	jbe    0x5ce954
5ce950:	b0 01                	mov    $0x1,%al
5ce952:	5d                   	pop    %ebp
5ce953:	c3                   	ret
5ce954:	32 c0                	xor    %al,%al
5ce956:	5d                   	pop    %ebp
5ce957:	c3                   	ret
5ce958:	cc                   	int3
5ce959:	cc                   	int3
5ce95a:	cc                   	int3
5ce95b:	cc                   	int3
5ce95c:	cc                   	int3
5ce95d:	cc                   	int3
5ce95e:	cc                   	int3
5ce95f:	cc                   	int3
5ce960:	55                   	push   %ebp
5ce961:	8b ec                	mov    %esp,%ebp
5ce963:	8b 4d 08             	mov    0x8(%ebp),%ecx
5ce966:	83 f9 7f             	cmp    $0x7f,%ecx
5ce969:	77 0c                	ja     0x5ce977
5ce96b:	8b 45 0c             	mov    0xc(%ebp),%eax
5ce96e:	88 08                	mov    %cl,(%eax)
5ce970:	b8 01 00 00 00       	mov    $0x1,%eax
5ce975:	5d                   	pop    %ebp
5ce976:	c3                   	ret
5ce977:	8b 55 0c             	mov    0xc(%ebp),%edx
5ce97a:	8b c1                	mov    %ecx,%eax
5ce97c:	53                   	push   %ebx
5ce97d:	8a d9                	mov    %cl,%bl
5ce97f:	c1 e8 06             	shr    $0x6,%eax
5ce982:	80 e3 3f             	and    $0x3f,%bl
5ce985:	80 cb 80             	or     $0x80,%bl
5ce988:	88 5d 0b             	mov    %bl,0xb(%ebp)
5ce98b:	81 f9 ff 07 00 00    	cmp    $0x7ff,%ecx
5ce991:	77 0f                	ja     0x5ce9a2
5ce993:	0c c0                	or     $0xc0,%al
5ce995:	88 5a 01             	mov    %bl,0x1(%edx)
5ce998:	88 02                	mov    %al,(%edx)
5ce99a:	b8 02 00 00 00       	mov    $0x2,%eax
5ce99f:	5b                   	pop    %ebx
5ce9a0:	5d                   	pop    %ebp
5ce9a1:	c3                   	ret
5ce9a2:	24 3f                	and    $0x3f,%al
5ce9a4:	8b d9                	mov    %ecx,%ebx
5ce9a6:	c1 eb 0c             	shr    $0xc,%ebx
5ce9a9:	0c 80                	or     $0x80,%al
5ce9ab:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
5ce9b1:	77 16                	ja     0x5ce9c9
5ce9b3:	88 42 01             	mov    %al,0x1(%edx)
5ce9b6:	80 cb e0             	or     $0xe0,%bl
5ce9b9:	8a 45 0b             	mov    0xb(%ebp),%al
5ce9bc:	88 1a                	mov    %bl,(%edx)
5ce9be:	88 42 02             	mov    %al,0x2(%edx)
5ce9c1:	b8 03 00 00 00       	mov    $0x3,%eax
5ce9c6:	5b                   	pop    %ebx
5ce9c7:	5d                   	pop    %ebp
5ce9c8:	c3                   	ret
5ce9c9:	c1 e9 12             	shr    $0x12,%ecx
5ce9cc:	80 e3 3f             	and    $0x3f,%bl
5ce9cf:	80 e1 07             	and    $0x7,%cl
5ce9d2:	88 42 02             	mov    %al,0x2(%edx)
5ce9d5:	8a 45 0b             	mov    0xb(%ebp),%al
5ce9d8:	80 c9 f0             	or     $0xf0,%cl
5ce9db:	80 cb 80             	or     $0x80,%bl
5ce9de:	88 42 03             	mov    %al,0x3(%edx)
5ce9e1:	88 5a 01             	mov    %bl,0x1(%edx)
5ce9e4:	b8 04 00 00 00       	mov    $0x4,%eax
5ce9e9:	88 0a                	mov    %cl,(%edx)
5ce9eb:	5b                   	pop    %ebx
5ce9ec:	5d                   	pop    %ebp
5ce9ed:	c3                   	ret
5ce9ee:	cc                   	int3
5ce9ef:	cc                   	int3
5ce9f0:	55                   	push   %ebp
5ce9f1:	8b ec                	mov    %esp,%ebp
5ce9f3:	8b 55 08             	mov    0x8(%ebp),%edx
5ce9f6:	0f b7 0a             	movzwl (%edx),%ecx
5ce9f9:	8d 81 00 28 ff ff    	lea    -0xd800(%ecx),%eax
5ce9ff:	3d ff 07 00 00       	cmp    $0x7ff,%eax
5cea04:	76 25                	jbe    0x5cea2b
5cea06:	81 f9 fe ff 00 00    	cmp    $0xfffe,%ecx
5cea0c:	73 75                	jae    0x5cea83
5cea0e:	8d 81 30 02 ff ff    	lea    -0xfdd0(%ecx),%eax
5cea14:	83 f8 1f             	cmp    $0x1f,%eax
5cea17:	76 6a                	jbe    0x5cea83
5cea19:	8b 45 0c             	mov    0xc(%ebp),%eax
5cea1c:	89 08                	mov    %ecx,(%eax)
5cea1e:	8b 45 10             	mov    0x10(%ebp),%eax
5cea21:	c6 00 00             	movb   $0x0,(%eax)
5cea24:	b8 01 00 00 00       	mov    $0x1,%eax
5cea29:	5d                   	pop    %ebp
5cea2a:	c3                   	ret
5cea2b:	3d 00 04 00 00       	cmp    $0x400,%eax
5cea30:	73 51                	jae    0x5cea83
5cea32:	0f b7 52 02          	movzwl 0x2(%edx),%edx
5cea36:	8d 82 00 24 ff ff    	lea    -0xdc00(%edx),%eax
5cea3c:	3d 00 04 00 00       	cmp    $0x400,%eax
5cea41:	73 40                	jae    0x5cea83
5cea43:	56                   	push   %esi
5cea44:	c1 e1 0a             	shl    $0xa,%ecx
5cea47:	8d b2 00 24 a0 fc    	lea    -0x35fdc00(%edx),%esi
5cea4d:	03 f1                	add    %ecx,%esi
5cea4f:	56                   	push   %esi
5cea50:	e8 cb fe ff ff       	call   0x5ce920
5cea55:	83 c4 04             	add    $0x4,%esp
5cea58:	84 c0                	test   %al,%al
5cea5a:	8b 45 0c             	mov    0xc(%ebp),%eax
5cea5d:	74 10                	je     0x5cea6f
5cea5f:	89 30                	mov    %esi,(%eax)
5cea61:	8b 45 10             	mov    0x10(%ebp),%eax
5cea64:	5e                   	pop    %esi
5cea65:	c6 00 00             	movb   $0x0,(%eax)
5cea68:	b8 02 00 00 00       	mov    $0x2,%eax
5cea6d:	5d                   	pop    %ebp
5cea6e:	c3                   	ret
5cea6f:	c7 00 3f 00 00 00    	movl   $0x3f,(%eax)
5cea75:	8b 45 10             	mov    0x10(%ebp),%eax
5cea78:	5e                   	pop    %esi
5cea79:	c6 00 01             	movb   $0x1,(%eax)
5cea7c:	b8 02 00 00 00       	mov    $0x2,%eax
5cea81:	5d                   	pop    %ebp
5cea82:	c3                   	ret
5cea83:	8b 45 0c             	mov    0xc(%ebp),%eax
5cea86:	c7 00 3f 00 00 00    	movl   $0x3f,(%eax)
5cea8c:	8b 45 10             	mov    0x10(%ebp),%eax
5cea8f:	c6 00 01             	movb   $0x1,(%eax)
5cea92:	b8 01 00 00 00       	mov    $0x1,%eax
5cea97:	5d                   	pop    %ebp
5cea98:	c3                   	ret
5cea99:	cc                   	int3
5cea9a:	cc                   	int3
5cea9b:	cc                   	int3
5cea9c:	cc                   	int3
5cea9d:	cc                   	int3
5cea9e:	cc                   	int3
5cea9f:	cc                   	int3
5ceaa0:	55                   	push   %ebp
5ceaa1:	8b ec                	mov    %esp,%ebp
5ceaa3:	51                   	push   %ecx
5ceaa4:	8d 45 ff             	lea    -0x1(%ebp),%eax
5ceaa7:	50                   	push   %eax
5ceaa8:	8d 45 fe             	lea    -0x2(%ebp),%eax
5ceaab:	50                   	push   %eax
5ceaac:	8d 45 fd             	lea    -0x3(%ebp),%eax
5ceaaf:	50                   	push   %eax
5ceab0:	ff 75 14             	push   0x14(%ebp)
5ceab3:	ff 75 10             	push   0x10(%ebp)
5ceab6:	ff 75 0c             	push   0xc(%ebp)
5ceab9:	6a 00                	push   $0x0
5ceabb:	ff 75 08             	push   0x8(%ebp)
5ceabe:	e8 fd fb ff ff       	call   0x5ce6c0
5ceac3:	83 c4 20             	add    $0x20,%esp
5ceac6:	8b e5                	mov    %ebp,%esp
5ceac8:	5d                   	pop    %ebp
5ceac9:	c3                   	ret
5ceaca:	cc                   	int3
5ceacb:	cc                   	int3
5ceacc:	cc                   	int3
5ceacd:	cc                   	int3
5ceace:	cc                   	int3
5ceacf:	cc                   	int3
5cead0:	55                   	push   %ebp
5cead1:	8b ec                	mov    %esp,%ebp
5cead3:	83 ec 08             	sub    $0x8,%esp
5cead6:	53                   	push   %ebx
5cead7:	56                   	push   %esi
5cead8:	8b f1                	mov    %ecx,%esi
5ceada:	32 db                	xor    %bl,%bl
5ceadc:	83 c9 ff             	or     $0xffffffff,%ecx
5ceadf:	57                   	push   %edi
5ceae0:	89 4d fc             	mov    %ecx,-0x4(%ebp)
5ceae3:	8b 46 14             	mov    0x14(%esi),%eax
5ceae6:	3b c1                	cmp    %ecx,%eax
5ceae8:	74 73                	je     0x5ceb5d
5ceaea:	8b 5d 08             	mov    0x8(%ebp),%ebx
5ceaed:	8b 1b                	mov    (%ebx),%ebx
5ceaef:	89 5d f8             	mov    %ebx,-0x8(%ebp)
5ceaf2:	8b 56 28             	mov    0x28(%esi),%edx
5ceaf5:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
5ceaf8:	c1 e1 03             	shl    $0x3,%ecx
5ceafb:	89 45 fc             	mov    %eax,-0x4(%ebp)
5ceafe:	8d 3c 0a             	lea    (%edx,%ecx,1),%edi
5ceb01:	8b 57 10             	mov    0x10(%edi),%edx
5ceb04:	3b da                	cmp    %edx,%ebx
5ceb06:	7d 16                	jge    0x5ceb1e
5ceb08:	b3 01                	mov    $0x1,%bl
5ceb0a:	83 f8 ff             	cmp    $0xffffffff,%eax
5ceb0d:	74 09                	je     0x5ceb18
5ceb0f:	8b 46 28             	mov    0x28(%esi),%eax
5ceb12:	03 c1                	add    %ecx,%eax
5ceb14:	8b 00                	mov    (%eax),%eax
5ceb16:	eb 23                	jmp    0x5ceb3b
5ceb18:	8b c6                	mov    %esi,%eax
5ceb1a:	8b 00                	mov    (%eax),%eax
5ceb1c:	eb 1d                	jmp    0x5ceb3b
5ceb1e:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
5ceb22:	75 04                	jne    0x5ceb28
5ceb24:	3b d3                	cmp    %ebx,%edx
5ceb26:	7d 1d                	jge    0x5ceb45
5ceb28:	32 db                	xor    %bl,%bl
5ceb2a:	83 f8 ff             	cmp    $0xffffffff,%eax
5ceb2d:	74 07                	je     0x5ceb36
5ceb2f:	8b 46 28             	mov    0x28(%esi),%eax
5ceb32:	03 c1                	add    %ecx,%eax
5ceb34:	eb 02                	jmp    0x5ceb38
5ceb36:	8b c6                	mov    %esi,%eax
5ceb38:	8b 40 04             	mov    0x4(%eax),%eax
5ceb3b:	83 f8 ff             	cmp    $0xffffffff,%eax
5ceb3e:	74 1d                	je     0x5ceb5d
5ceb40:	8b 5d f8             	mov    -0x8(%ebp),%ebx
5ceb43:	eb ad                	jmp    0x5ceaf2
5ceb45:	8b 45 08             	mov    0x8(%ebp),%eax
5ceb48:	89 5f 10             	mov    %ebx,0x10(%edi)
5ceb4b:	8b 48 04             	mov    0x4(%eax),%ecx
5ceb4e:	8b 45 fc             	mov    -0x4(%ebp),%eax
5ceb51:	89 4f 14             	mov    %ecx,0x14(%edi)
5ceb54:	5f                   	pop    %edi
5ceb55:	5e                   	pop    %esi
5ceb56:	5b                   	pop    %ebx
5ceb57:	8b e5                	mov    %ebp,%esp
5ceb59:	5d                   	pop    %ebp
5ceb5a:	c2 08 00             	ret    $0x8
5ceb5d:	6a 00                	push   $0x0
5ceb5f:	8b ce                	mov    %esi,%ecx
5ceb61:	e8 ca 13 00 00       	call   0x5cff30
5ceb66:	8b 4e 28             	mov    0x28(%esi),%ecx
5ceb69:	8b f8                	mov    %eax,%edi
5ceb6b:	8b 55 fc             	mov    -0x4(%ebp),%edx
5ceb6e:	8d 04 7f             	lea    (%edi,%edi,2),%eax
5ceb71:	c1 e0 03             	shl    $0x3,%eax
5ceb74:	89 45 0c             	mov    %eax,0xc(%ebp)
5ceb77:	89 54 08 08          	mov    %edx,0x8(%eax,%ecx,1)
5ceb7b:	c7 44 08 04 ff ff ff 	movl   $0xffffffff,0x4(%eax,%ecx,1)
5ceb82:	ff