438778:	81 f9 00 d8 00 00    	cmp    $0xd800,%ecx
43877e:	72 08                	jb     0x438788
438780:	81 f9 ff df 00 00    	cmp    $0xdfff,%ecx
438786:	76 44                	jbe    0x4387cc
438788:	6a 02                	push   $0x2
43878a:	b3 e0                	mov    $0xe0,%bl
43878c:	eb 14                	jmp    0x4387a2
43878e:	f7 c1 00 00 e0 ff    	test   $0xffe00000,%ecx
438794:	75 36                	jne    0x4387cc
438796:	81 f9 ff ff 10 00    	cmp    $0x10ffff,%ecx
43879c:	77 2e                	ja     0x4387cc
43879e:	6a 03                	push   $0x3
4387a0:	b3 f0                	mov    $0xf0,%bl
4387a2:	5e                   	pop    %esi
4387a3:	57                   	push   %edi
4387a4:	8b fe                	mov    %esi,%edi
4387a6:	8a c1                	mov    %cl,%al
4387a8:	c1 e9 06             	shr    $0x6,%ecx
4387ab:	24 3f                	and    $0x3f,%al
4387ad:	0c 80                	or     $0x80,%al
4387af:	88 04 17             	mov    %al,(%edi,%edx,1)
4387b2:	83 ef 01             	sub    $0x1,%edi
4387b5:	75 ef                	jne    0x4387a6
4387b7:	ff 75 10             	push   0x10(%ebp)
4387ba:	8d 46 01             	lea    0x1(%esi),%eax
4387bd:	0a cb                	or     %bl,%cl
4387bf:	50                   	push   %eax
4387c0:	88 0a                	mov    %cl,(%edx)
4387c2:	e8 46 2e 00 00       	call   0x43b60d
4387c7:	59                   	pop    %ecx
4387c8:	59                   	pop    %ecx
4387c9:	5f                   	pop    %edi
4387ca:	eb 0d                	jmp    0x4387d9
4387cc:	ff 75 14             	push   0x14(%ebp)
4387cf:	ff 75 10             	push   0x10(%ebp)
4387d2:	e8 4a 2e 00 00       	call   0x43b621
4387d7:	59                   	pop    %ecx
4387d8:	59                   	pop    %ecx
4387d9:	5e                   	pop    %esi
4387da:	5b                   	pop    %ebx
4387db:	5d                   	pop    %ebp
4387dc:	c3                   	ret
4387dd:	8b ff                	mov    %edi,%edi
4387df:	55                   	push   %ebp
4387e0:	8b ec                	mov    %esp,%ebp
4387e2:	8b 4d 08             	mov    0x8(%ebp),%ecx
4387e5:	80 39 00             	cmpb   $0x0,(%ecx)
4387e8:	75 05                	jne    0x4387ef
4387ea:	33 c0                	xor    %eax,%eax
4387ec:	40                   	inc    %eax
4387ed:	eb 16                	jmp    0x438805
4387ef:	80 79 01 00          	cmpb   $0x0,0x1(%ecx)
4387f3:	75 05                	jne    0x4387fa
4387f5:	6a 02                	push   $0x2
4387f7:	58                   	pop    %eax
4387f8:	eb 0b                	jmp    0x438805
4387fa:	33 c0                	xor    %eax,%eax
4387fc:	38 41 02             	cmp    %al,0x2(%ecx)
4387ff:	0f 95 c0             	setne  %al
438802:	83 c0 03             	add    $0x3,%eax
438805:	5d                   	pop    %ebp
438806:	c2 04 00             	ret    $0x4
438809:	8b ff                	mov    %edi,%edi
43880b:	55                   	push   %ebp
43880c:	8b ec                	mov    %esp,%ebp
43880e:	51                   	push   %ecx
43880f:	ff 75 18             	push   0x18(%ebp)
438812:	8d 45 fc             	lea    -0x4(%ebp),%eax
438815:	ff 75 14             	push   0x14(%ebp)
438818:	ff 75 10             	push   0x10(%ebp)
43881b:	ff 75 0c             	push   0xc(%ebp)
43881e:	50                   	push   %eax
43881f:	e8 1f 2e 00 00       	call   0x43b643
438824:	8b d0                	mov    %eax,%edx
438826:	83 c4 14             	add    $0x14,%esp
438829:	83 fa 04             	cmp    $0x4,%edx
43882c:	77 1a                	ja     0x438848
43882e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
438831:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
438837:	76 05                	jbe    0x43883e
438839:	b9 fd ff 00 00       	mov    $0xfffd,%ecx
43883e:	8b 45 08             	mov    0x8(%ebp),%eax
438841:	85 c0                	test   %eax,%eax
438843:	74 03                	je     0x438848
438845:	66 89 08             	mov    %cx,(%eax)
438848:	8b c2                	mov    %edx,%eax
43884a:	c9                   	leave
43884b:	c3                   	ret
43884c:	8b ff                	mov    %edi,%edi
43884e:	55                   	push   %ebp
43884f:	8b ec                	mov    %esp,%ebp
438851:	51                   	push   %ecx
438852:	51                   	push   %ecx
438853:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
438857:	53                   	push   %ebx
438858:	56                   	push   %esi
438859:	57                   	push   %edi
43885a:	8b 7d 0c             	mov    0xc(%ebp),%edi
43885d:	8b 3f                	mov    (%edi),%edi
43885f:	0f 84 a4 00 00 00    	je     0x438909
438865:	8b 5d 10             	mov    0x10(%ebp),%ebx
438868:	8b 75 08             	mov    0x8(%ebp),%esi
43886b:	85 db                	test   %ebx,%ebx
43886d:	74 6b                	je     0x4388da
43886f:	57                   	push   %edi
438870:	8d 4d ff             	lea    -0x1(%ebp),%ecx
438873:	e8 65 ff ff ff       	call   0x4387dd
438878:	ff 75 18             	push   0x18(%ebp)
43887b:	ff 75 14             	push   0x14(%ebp)
43887e:	50                   	push   %eax
43887f:	8d 45 f8             	lea    -0x8(%ebp),%eax
438882:	57                   	push   %edi
438883:	50                   	push   %eax
438884:	e8 ba 2d 00 00       	call   0x43b643
438889:	8b d0                	mov    %eax,%edx
43888b:	83 c4 14             	add    $0x14,%esp
43888e:	83 fa ff             	cmp    $0xffffffff,%edx
438891:	74 5e                	je     0x4388f1
438893:	85 d2                	test   %edx,%edx
438895:	74 51                	je     0x4388e8
438897:	8b 4d f8             	mov    -0x8(%ebp),%ecx
43889a:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
4388a0:	76 2b                	jbe    0x4388cd
4388a2:	83 fb 01             	cmp    $0x1,%ebx
4388a5:	76 33                	jbe    0x4388da
4388a7:	81 e9 00 00 01 00    	sub    $0x10000,%ecx
4388ad:	4b                   	dec    %ebx
4388ae:	8b c1                	mov    %ecx,%eax
4388b0:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4388b3:	c1 e8 0a             	shr    $0xa,%eax
4388b6:	81 e1 ff 03 00 00    	and    $0x3ff,%ecx
4388bc:	0d 00 d8 00 00       	or     $0xd800,%eax
4388c1:	66 89 06             	mov    %ax,(%esi)
4388c4:	83 c6 02             	add    $0x2,%esi
4388c7:	81 c9 00 dc 00 00    	or     $0xdc00,%ecx
4388cd:	66 89 0e             	mov    %cx,(%esi)
4388d0:	03 fa                	add    %edx,%edi
4388d2:	83 c6 02             	add    $0x2,%esi
4388d5:	83 eb 01             	sub    $0x1,%ebx
4388d8:	75 95                	jne    0x43886f
4388da:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4388dd:	2b 75 08             	sub    0x8(%ebp),%esi
4388e0:	d1 fe                	sar    $1,%esi
4388e2:	89 3b                	mov    %edi,(%ebx)
4388e4:	8b c6                	mov    %esi,%eax
4388e6:	eb 67                	jmp    0x43894f
4388e8:	33 ff                	xor    %edi,%edi
4388ea:	33 c0                	xor    %eax,%eax
4388ec:	66 89 06             	mov    %ax,(%esi)
4388ef:	eb e9                	jmp    0x4388da
4388f1:	8b 45 0c             	mov    0xc(%ebp),%eax
4388f4:	89 38                	mov    %edi,(%eax)
4388f6:	8b 45 18             	mov    0x18(%ebp),%eax
4388f9:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
4388fd:	c7 40 18 2a 00 00 00 	movl   $0x2a,0x18(%eax)
438904:	83 c8 ff             	or     $0xffffffff,%eax
438907:	eb 46                	jmp    0x43894f
438909:	57                   	push   %edi
43890a:	8d 4d ff             	lea    -0x1(%ebp),%ecx
43890d:	33 f6                	xor    %esi,%esi
43890f:	e8 c9 fe ff ff       	call   0x4387dd
438914:	8b 5d 18             	mov    0x18(%ebp),%ebx
438917:	eb 16                	jmp    0x43892f
438919:	85 c0                	test   %eax,%eax
43891b:	74 c7                	je     0x4388e4
43891d:	83 f8 04             	cmp    $0x4,%eax
438920:	75 01                	jne    0x438923
438922:	46                   	inc    %esi
438923:	03 f8                	add    %eax,%edi
438925:	8d 4d ff             	lea    -0x1(%ebp),%ecx
438928:	57                   	push   %edi
438929:	46                   	inc    %esi
43892a:	e8 ae fe ff ff       	call   0x4387dd
43892f:	53                   	push   %ebx
438930:	ff 75 14             	push   0x14(%ebp)
438933:	50                   	push   %eax
438934:	57                   	push   %edi
438935:	6a 00                	push   $0x0
438937:	e8 07 2d 00 00       	call   0x43b643
43893c:	83 c4 14             	add    $0x14,%esp
43893f:	83 f8 ff             	cmp    $0xffffffff,%eax
438942:	75 d5                	jne    0x438919
438944:	c6 43 1c 01          	movb   $0x1,0x1c(%ebx)
438948:	c7 43 18 2a 00 00 00 	movl   $0x2a,0x18(%ebx)
43894f:	5f                   	pop    %edi
438950:	5e                   	pop    %esi
438951:	5b                   	pop    %ebx
438952:	c9                   	leave
438953:	c3                   	ret
438954:	8b ff                	mov    %edi,%edi
438956:	55                   	push   %ebp
438957:	8b ec                	mov    %esp,%ebp
438959:	8b 4d 08             	mov    0x8(%ebp),%ecx
43895c:	83 f9 fe             	cmp    $0xfffffffe,%ecx
43895f:	75 0d                	jne    0x43896e
438961:	e8 da dc fe ff       	call   0x426640
438966:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
43896c:	eb 38                	jmp    0x4389a6
43896e:	85 c9                	test   %ecx,%ecx
438970:	78 24                	js     0x438996
438972:	3b 0d 38 5f 45 00    	cmp    0x455f38,%ecx
438978:	73 1c                	jae    0x438996
43897a:	8b c1                	mov    %ecx,%eax
43897c:	83 e1 3f             	and    $0x3f,%ecx
43897f:	c1 e8 06             	shr    $0x6,%eax
438982:	6b c9 38             	imul   $0x38,%ecx,%ecx
438985:	8b 04 85 38 5d 45 00 	mov    0x455d38(,%eax,4),%eax
43898c:	0f b6 44 08 28       	movzbl 0x28(%eax,%ecx,1),%eax
438991:	83 e0 40             	and    $0x40,%eax
438994:	5d                   	pop    %ebp
438995:	c3                   	ret
438996:	e8 a5 dc fe ff       	call   0x426640
43899b:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4389a1:	e8 c9 80 fe ff       	call   0x420a6f
4389a6:	33 c0                	xor    %eax,%eax
4389a8:	5d                   	pop    %ebp
4389a9:	c3                   	ret
4389aa:	8b ff                	mov    %edi,%edi
4389ac:	55                   	push   %ebp
4389ad:	8b ec                	mov    %esp,%ebp
4389af:	51                   	push   %ecx
4389b0:	51                   	push   %ecx
4389b1:	56                   	push   %esi
4389b2:	57                   	push   %edi
4389b3:	e8 49 11 ff ff       	call   0x429b01
4389b8:	8b f8                	mov    %eax,%edi
4389ba:	85 ff                	test   %edi,%edi
4389bc:	74 60                	je     0x438a1e
4389be:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4389c2:	74 5a                	je     0x438a1e
4389c4:	8b 75 08             	mov    0x8(%ebp),%esi
4389c7:	33 d2                	xor    %edx,%edx
4389c9:	89 55 fc             	mov    %edx,-0x4(%ebp)
4389cc:	8d 4e 02             	lea    0x2(%esi),%ecx
4389cf:	66 8b 06             	mov    (%esi),%ax
4389d2:	83 c6 02             	add    $0x2,%esi
4389d5:	66 3b c2             	cmp    %dx,%ax
4389d8:	75 f5                	jne    0x4389cf
4389da:	2b f1                	sub    %ecx,%esi
4389dc:	d1 fe                	sar    $1,%esi
4389de:	eb 38                	jmp    0x438a18
4389e0:	8b ca                	mov    %edx,%ecx
4389e2:	8d 41 02             	lea    0x2(%ecx),%eax
4389e5:	89 45 f8             	mov    %eax,-0x8(%ebp)
4389e8:	66 8b 01             	mov    (%ecx),%ax
4389eb:	83 c1 02             	add    $0x2,%ecx
4389ee:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
4389f2:	75 f4                	jne    0x4389e8
4389f4:	2b 4d f8             	sub    -0x8(%ebp),%ecx
4389f7:	d1 f9                	sar    $1,%ecx
4389f9:	3b ce                	cmp    %esi,%ecx
4389fb:	76 18                	jbe    0x438a15
4389fd:	66 83 3c 72 3d       	cmpw   $0x3d,(%edx,%esi,2)
438a02:	75 11                	jne    0x438a15
438a04:	56                   	push   %esi
438a05:	ff 75 08             	push   0x8(%ebp)
438a08:	52                   	push   %edx
438a09:	e8 e1 27 00 00       	call   0x43b1ef
438a0e:	83 c4 0c             	add    $0xc,%esp
438a11:	85 c0                	test   %eax,%eax
438a13:	74 0f                	je     0x438a24
438a15:	83 c7 04             	add    $0x4,%edi
438a18:	8b 17                	mov    (%edi),%edx
438a1a:	85 d2                	test   %edx,%edx
438a1c:	75 c2                	jne    0x4389e0
438a1e:	33 c0                	xor    %eax,%eax
438a20:	5f                   	pop    %edi
438a21:	5e                   	pop    %esi
438a22:	c9                   	leave
438a23:	c3                   	ret
438a24:	8b 07                	mov    (%edi),%eax
438a26:	8d 04 70             	lea    (%eax,%esi,2),%eax
438a29:	83 c0 02             	add    $0x2,%eax
438a2c:	eb f2                	jmp    0x438a20
438a2e:	6a 0c                	push   $0xc
438a30:	68 90 27 45 00       	push   $0x452790
438a35:	e8 96 3e fe ff       	call   0x41c8d0
438a3a:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
438a3e:	6a 0b                	push   $0xb
438a40:	e8 7c fa fe ff       	call   0x4284c1
438a45:	59                   	pop    %ecx
438a46:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
438a4a:	ff 75 14             	push   0x14(%ebp)
438a4d:	ff 75 10             	push   0x10(%ebp)
438a50:	ff 75 0c             	push   0xc(%ebp)
438a53:	ff 75 08             	push   0x8(%ebp)
438a56:	e8 32 00 00 00       	call   0x438a8d
438a5b:	83 c4 10             	add    $0x10,%esp
438a5e:	8b f0                	mov    %eax,%esi
438a60:	89 75 e4             	mov    %esi,-0x1c(%ebp)
438a63:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
438a6a:	e8 15 00 00 00       	call   0x438a84
438a6f:	8b c6                	mov    %esi,%eax
438a71:	8b 4d f0             	mov    -0x10(%ebp),%ecx
438a74:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
438a7b:	59                   	pop    %ecx
438a7c:	5f                   	pop    %edi
438a7d:	5e                   	pop    %esi
438a7e:	5b                   	pop    %ebx
438a7f:	c9                   	leave
438a80:	c3                   	ret
438a81:	8b 75 e4             	mov    -0x1c(%ebp),%esi
438a84:	6a 0b                	push   $0xb
438a86:	e8 86 fa fe ff       	call   0x428511
438a8b:	59                   	pop    %ecx
438a8c:	c3                   	ret
438a8d:	8b ff                	mov    %edi,%edi
438a8f:	55                   	push   %ebp
438a90:	8b ec                	mov    %esp,%ebp
438a92:	51                   	push   %ecx
438a93:	51                   	push   %ecx
438a94:	56                   	push   %esi
438a95:	57                   	push   %edi
438a96:	8b 7d 08             	mov    0x8(%ebp),%edi
438a99:	85 ff                	test   %edi,%edi
438a9b:	75 13                	jne    0x438ab0
438a9d:	e8 9e db fe ff       	call   0x426640
438aa2:	6a 16                	push   $0x16
438aa4:	5e                   	pop    %esi
438aa5:	89 30                	mov    %esi,(%eax)
438aa7:	e8 c3 7f fe ff       	call   0x420a6f
438aac:	8b c6                	mov    %esi,%eax
438aae:	eb 7a                	jmp    0x438b2a
438ab0:	8b 75 10             	mov    0x10(%ebp),%esi
438ab3:	33 c0                	xor    %eax,%eax
438ab5:	53                   	push   %ebx
438ab6:	8b 5d 0c             	mov    0xc(%ebp),%ebx
438ab9:	89 45 fc             	mov    %eax,-0x4(%ebp)
438abc:	89 07                	mov    %eax,(%edi)
438abe:	85 db                	test   %ebx,%ebx
438ac0:	74 3f                	je     0x438b01
438ac2:	85 f6                	test   %esi,%esi
438ac4:	74 3f                	je     0x438b05
438ac6:	66 89 03             	mov    %ax,(%ebx)
438ac9:	ff 75 14             	push   0x14(%ebp)
438acc:	e8 d9 fe ff ff       	call   0x4389aa
438ad1:	8b d0                	mov    %eax,%edx
438ad3:	59                   	pop    %ecx
438ad4:	85 d2                	test   %edx,%edx
438ad6:	74 4f                	je     0x438b27
438ad8:	8b ca                	mov    %edx,%ecx
438ada:	8d 41 02             	lea    0x2(%ecx),%eax
438add:	89 45 f8             	mov    %eax,-0x8(%ebp)
438ae0:	66 8b 01             	mov    (%ecx),%ax
438ae3:	83 c1 02             	add    $0x2,%ecx
438ae6:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
438aea:	75 f4                	jne    0x438ae0
438aec:	2b 4d f8             	sub    -0x8(%ebp),%ecx
438aef:	d1 f9                	sar    $1,%ecx
438af1:	41                   	inc    %ecx