5787a1:	5e                   	pop    %esi
5787a2:	c3                   	ret
5787a3:	56                   	push   %esi
5787a4:	ff 74 24 14          	push   0x14(%esp)
5787a8:	e8 e3 4a fe ff       	call   0x55d290
5787ad:	83 c4 08             	add    $0x8,%esp
5787b0:	89 37                	mov    %esi,(%edi)
5787b2:	5f                   	pop    %edi
5787b3:	5e                   	pop    %esi
5787b4:	c3                   	ret
5787b5:	cc                   	int3
5787b6:	cc                   	int3
5787b7:	cc                   	int3
5787b8:	cc                   	int3
5787b9:	cc                   	int3
5787ba:	cc                   	int3
5787bb:	cc                   	int3
5787bc:	cc                   	int3
5787bd:	cc                   	int3
5787be:	cc                   	int3
5787bf:	cc                   	int3
5787c0:	b8 04 00 00 00       	mov    $0x4,%eax
5787c5:	e8 e6 8f 05 00       	call   0x5d17b0
5787ca:	53                   	push   %ebx
5787cb:	56                   	push   %esi
5787cc:	57                   	push   %edi
5787cd:	8b 7c 24 20          	mov    0x20(%esp),%edi
5787d1:	6a ff                	push   $0xffffffff
5787d3:	ff 74 24 18          	push   0x18(%esp)
5787d7:	57                   	push   %edi
5787d8:	e8 e3 4a fe ff       	call   0x55d2c0
5787dd:	83 c4 0c             	add    $0xc,%esp
5787e0:	85 c0                	test   %eax,%eax
5787e2:	78 5a                	js     0x57883e
5787e4:	50                   	push   %eax
5787e5:	57                   	push   %edi
5787e6:	89 44 24 14          	mov    %eax,0x14(%esp)
5787ea:	e8 a1 4a fe ff       	call   0x55d290
5787ef:	83 c4 08             	add    $0x8,%esp
5787f2:	85 c0                	test   %eax,%eax
5787f4:	74 48                	je     0x57883e
5787f6:	50                   	push   %eax
5787f7:	e8 74 47 fe ff       	call   0x55cf70
5787fc:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
578800:	83 c4 04             	add    $0x4,%esp
578803:	8b f0                	mov    %eax,%esi
578805:	85 5c 24 1c          	test   %ebx,0x1c(%esp)
578809:	74 48                	je     0x578853
57880b:	f6 c3 20             	test   $0x20,%bl
57880e:	74 16                	je     0x578826
578810:	8d 44 24 0c          	lea    0xc(%esp),%eax
578814:	50                   	push   %eax
578815:	57                   	push   %edi
578816:	ff 74 24 1c          	push   0x1c(%esp)
57881a:	e8 61 ff ff ff       	call   0x578780
57881f:	83 c4 0c             	add    $0xc,%esp
578822:	85 c0                	test   %eax,%eax
578824:	75 2d                	jne    0x578853
578826:	f6 c3 40             	test   $0x40,%bl
578829:	74 05                	je     0x578830
57882b:	83 fe 01             	cmp    $0x1,%esi
57882e:	75 23                	jne    0x578853
578830:	85 f6                	test   %esi,%esi
578832:	74 1f                	je     0x578853
578834:	5f                   	pop    %edi
578835:	5e                   	pop    %esi
578836:	b8 01 00 00 00       	mov    $0x1,%eax
57883b:	5b                   	pop    %ebx
57883c:	59                   	pop    %ecx
57883d:	c3                   	ret
57883e:	83 7c 24 24 00       	cmpl   $0x0,0x24(%esp)
578843:	74 ef                	je     0x578834
578845:	8b 44 24 18          	mov    0x18(%esp),%eax
578849:	a8 10                	test   $0x10,%al
57884b:	74 e7                	je     0x578834
57884d:	85 44 24 1c          	test   %eax,0x1c(%esp)
578851:	74 e1                	je     0x578834
578853:	5f                   	pop    %edi
578854:	5e                   	pop    %esi
578855:	33 c0                	xor    %eax,%eax
578857:	5b                   	pop    %ebx
578858:	59                   	pop    %ecx
578859:	c3                   	ret
57885a:	cc                   	int3
57885b:	cc                   	int3
57885c:	cc                   	int3
57885d:	cc                   	int3
57885e:	cc                   	int3
57885f:	cc                   	int3
578860:	b8 0c 00 00 00       	mov    $0xc,%eax
578865:	e8 46 8f 05 00       	call   0x5d17b0
57886a:	53                   	push   %ebx
57886b:	55                   	push   %ebp
57886c:	8b 6c 24 18          	mov    0x18(%esp),%ebp
578870:	56                   	push   %esi
578871:	8b 74 24 20          	mov    0x20(%esp),%esi
578875:	c7 44 24 0c 00 00 00 	movl   $0x0,0xc(%esp)
57887c:	00
57887d:	57                   	push   %edi
57887e:	83 fe ff             	cmp    $0xffffffff,%esi
578881:	75 0e                	jne    0x578891
578883:	8b f5                	mov    %ebp,%esi
578885:	8d 4e 01             	lea    0x1(%esi),%ecx
578888:	8a 06                	mov    (%esi),%al
57888a:	46                   	inc    %esi
57888b:	84 c0                	test   %al,%al
57888d:	75 f9                	jne    0x578888
57888f:	2b f1                	sub    %ecx,%esi
578891:	33 db                	xor    %ebx,%ebx
578893:	33 ff                	xor    %edi,%edi
578895:	85 f6                	test   %esi,%esi
578897:	7e 43                	jle    0x5788dc
578899:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
5788a0:	8d 44 24 10          	lea    0x10(%esp),%eax
5788a4:	50                   	push   %eax
5788a5:	8b c6                	mov    %esi,%eax
5788a7:	2b c7                	sub    %edi,%eax
5788a9:	50                   	push   %eax
5788aa:	8d 04 2f             	lea    (%edi,%ebp,1),%eax
5788ad:	50                   	push   %eax
5788ae:	e8 3d 48 00 00       	call   0x57d0f0
5788b3:	83 c4 0c             	add    $0xc,%esp
5788b6:	85 c0                	test   %eax,%eax
5788b8:	78 69                	js     0x578923
5788ba:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5788be:	81 f9 ff ff 10 00    	cmp    $0x10ffff,%ecx
5788c4:	77 53                	ja     0x578919
5788c6:	81 f9 00 00 01 00    	cmp    $0x10000,%ecx
5788cc:	1b c9                	sbb    %ecx,%ecx
5788ce:	03 f8                	add    %eax,%edi
5788d0:	83 e1 fe             	and    $0xfffffffe,%ecx
5788d3:	83 c1 04             	add    $0x4,%ecx
5788d6:	03 d9                	add    %ecx,%ebx
5788d8:	3b fe                	cmp    %esi,%edi
5788da:	7c c4                	jl     0x5788a0
5788dc:	6a 75                	push   $0x75
5788de:	83 c3 02             	add    $0x2,%ebx
5788e1:	68 bc a7 65 00       	push   $0x65a7bc
5788e6:	53                   	push   %ebx
5788e7:	89 5c 24 24          	mov    %ebx,0x24(%esp)
5788eb:	e8 60 7e f6 ff       	call   0x4e0750
5788f0:	8b d0                	mov    %eax,%edx
5788f2:	83 c4 0c             	add    $0xc,%esp
5788f5:	89 54 24 14          	mov    %edx,0x14(%esp)
5788f9:	85 d2                	test   %edx,%edx
5788fb:	0f 85 94 00 00 00    	jne    0x578995
578901:	6a 76                	push   $0x76
578903:	68 bc a7 65 00       	push   $0x65a7bc
578908:	6a 41                	push   $0x41
57890a:	68 81 00 00 00       	push   $0x81
57890f:	6a 23                	push   $0x23
578911:	e8 6a 06 f6 ff       	call   0x4d8f80
578916:	83 c4 14             	add    $0x14,%esp
578919:	5f                   	pop    %edi
57891a:	5e                   	pop    %esi
57891b:	5d                   	pop    %ebp
57891c:	33 c0                	xor    %eax,%eax
57891e:	5b                   	pop    %ebx
57891f:	83 c4 0c             	add    $0xc,%esp
578922:	c3                   	ret
578923:	03 f6                	add    %esi,%esi
578925:	6a 19                	push   $0x19
578927:	68 bc a7 65 00       	push   $0x65a7bc
57892c:	8d 7e 02             	lea    0x2(%esi),%edi
57892f:	57                   	push   %edi
578930:	e8 1b 7e f6 ff       	call   0x4e0750
578935:	8b d0                	mov    %eax,%edx
578937:	83 c4 0c             	add    $0xc,%esp
57893a:	85 d2                	test   %edx,%edx
57893c:	75 21                	jne    0x57895f
57893e:	6a 1a                	push   $0x1a
578940:	68 bc a7 65 00       	push   $0x65a7bc
578945:	6a 41                	push   $0x41
578947:	6a 79                	push   $0x79
578949:	6a 23                	push   $0x23
57894b:	e8 30 06 f6 ff       	call   0x4d8f80
578950:	83 c4 14             	add    $0x14,%esp
578953:	33 d2                	xor    %edx,%edx
578955:	8b c2                	mov    %edx,%eax
578957:	5f                   	pop    %edi
578958:	5e                   	pop    %esi
578959:	5d                   	pop    %ebp
57895a:	5b                   	pop    %ebx
57895b:	83 c4 0c             	add    $0xc,%esp
57895e:	c3                   	ret
57895f:	33 c9                	xor    %ecx,%ecx
578961:	85 f6                	test   %esi,%esi
578963:	7e 16                	jle    0x57897b
578965:	8b c1                	mov    %ecx,%eax
578967:	c6 04 11 00          	movb   $0x0,(%ecx,%edx,1)
57896b:	d1 f8                	sar    $1,%eax
57896d:	8a 04 28             	mov    (%eax,%ebp,1),%al
578970:	88 44 11 01          	mov    %al,0x1(%ecx,%edx,1)
578974:	83 c1 02             	add    $0x2,%ecx
578977:	3b ce                	cmp    %esi,%ecx
578979:	7c ea                	jl     0x578965
57897b:	8b 44 24 2c          	mov    0x2c(%esp),%eax
57897f:	66 c7 44 3a fe 00 00 	movw   $0x0,-0x2(%edx,%edi,1)
578986:	85 c0                	test   %eax,%eax
578988:	0f 84 a5 00 00 00    	je     0x578a33
57898e:	89 38                	mov    %edi,(%eax)
578990:	e9 9e 00 00 00       	jmp    0x578a33
578995:	33 ed                	xor    %ebp,%ebp
578997:	8b da                	mov    %edx,%ebx
578999:	85 f6                	test   %esi,%esi
57899b:	0f 8e 7f 00 00 00    	jle    0x578a20
5789a1:	8d 44 24 10          	lea    0x10(%esp),%eax
5789a5:	50                   	push   %eax
5789a6:	8b c6                	mov    %esi,%eax
5789a8:	2b c5                	sub    %ebp,%eax
5789aa:	50                   	push   %eax
5789ab:	8b 44 24 28          	mov    0x28(%esp),%eax
5789af:	03 c5                	add    %ebp,%eax
5789b1:	50                   	push   %eax
5789b2:	e8 39 47 00 00       	call   0x57d0f0
5789b7:	8b 54 24 1c          	mov    0x1c(%esp),%edx
5789bb:	8d 7b 01             	lea    0x1(%ebx),%edi
5789be:	83 c4 0c             	add    $0xc,%esp
5789c1:	89 44 24 24          	mov    %eax,0x24(%esp)
5789c5:	81 fa 00 00 01 00    	cmp    $0x10000,%edx
5789cb:	72 39                	jb     0x578a06
5789cd:	81 ea 00 00 01 00    	sub    $0x10000,%edx
5789d3:	8b ca                	mov    %edx,%ecx
5789d5:	89 54 24 10          	mov    %edx,0x10(%esp)
5789d9:	c1 e9 0a             	shr    $0xa,%ecx
5789dc:	81 e2 ff 03 00 00    	and    $0x3ff,%edx
5789e2:	81 c1 00 d8 00 00    	add    $0xd800,%ecx
5789e8:	81 c2 00 dc 00 00    	add    $0xdc00,%edx
5789ee:	8b c1                	mov    %ecx,%eax
5789f0:	c1 e8 08             	shr    $0x8,%eax
5789f3:	88 03                	mov    %al,(%ebx)
5789f5:	8b c2                	mov    %edx,%eax
5789f7:	c1 e8 08             	shr    $0x8,%eax
5789fa:	88 0f                	mov    %cl,(%edi)
5789fc:	88 47 01             	mov    %al,0x1(%edi)
5789ff:	83 c7 02             	add    $0x2,%edi
578a02:	88 17                	mov    %dl,(%edi)
578a04:	eb 0b                	jmp    0x578a11
578a06:	c1 ea 08             	shr    $0x8,%edx
578a09:	88 13                	mov    %dl,(%ebx)
578a0b:	8a 44 24 10          	mov    0x10(%esp),%al
578a0f:	88 07                	mov    %al,(%edi)
578a11:	03 6c 24 24          	add    0x24(%esp),%ebp
578a15:	8d 5f 01             	lea    0x1(%edi),%ebx
578a18:	3b ee                	cmp    %esi,%ebp
578a1a:	7c 85                	jl     0x5789a1
578a1c:	8b 54 24 14          	mov    0x14(%esp),%edx
578a20:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
578a24:	66 c7 03 00 00       	movw   $0x0,(%ebx)
578a29:	85 c9                	test   %ecx,%ecx
578a2b:	74 06                	je     0x578a33
578a2d:	8b 44 24 18          	mov    0x18(%esp),%eax
578a31:	89 01                	mov    %eax,(%ecx)
578a33:	8b 44 24 28          	mov    0x28(%esp),%eax
578a37:	85 c0                	test   %eax,%eax
578a39:	74 02                	je     0x578a3d
578a3b:	89 10                	mov    %edx,(%eax)
578a3d:	5f                   	pop    %edi
578a3e:	5e                   	pop    %esi
578a3f:	5d                   	pop    %ebp
578a40:	8b c2                	mov    %edx,%eax
578a42:	5b                   	pop    %ebx
578a43:	83 c4 0c             	add    $0xc,%esp
578a46:	c3                   	ret
578a47:	cc                   	int3
578a48:	cc                   	int3
578a49:	cc                   	int3
578a4a:	cc                   	int3
578a4b:	cc                   	int3
578a4c:	cc                   	int3
578a4d:	cc                   	int3
578a4e:	cc                   	int3
578a4f:	cc                   	int3
578a50:	b8 04 00 00 00       	mov    $0x4,%eax
578a55:	e8 56 8d 05 00       	call   0x5d17b0
578a5a:	ff 74 24 18          	push   0x18(%esp)
578a5e:	8d 44 24 04          	lea    0x4(%esp),%eax
578a62:	50                   	push   %eax
578a63:	ff 74 24 18          	push   0x18(%esp)
578a67:	ff 74 24 18          	push   0x18(%esp)
578a6b:	ff 74 24 18          	push   0x18(%esp)
578a6f:	e8 6c 6a f9 ff       	call   0x50f4e0
578a74:	83 c4 14             	add    $0x14,%esp
578a77:	85 c0                	test   %eax,%eax
578a79:	75 02                	jne    0x578a7d
578a7b:	59                   	pop    %ecx
578a7c:	c3                   	ret
578a7d:	56                   	push   %esi
578a7e:	ff 74 24 18          	push   0x18(%esp)
578a82:	50                   	push   %eax
578a83:	ff 74 24 0c          	push   0xc(%esp)
578a87:	e8 e4 0b f6 ff       	call   0x4d9670
578a8c:	6a 1d                	push   $0x1d
578a8e:	68 d4 a7 65 00       	push   $0x65a7d4
578a93:	ff 74 24 18          	push   0x18(%esp)
578a97:	8b f0                	mov    %eax,%esi
578a99:	e8 e2 7c f6 ff       	call   0x4e0780
578a9e:	83 c4 18             	add    $0x18,%esp
578aa1:	8b c6                	mov    %esi,%eax
578aa3:	5e                   	pop    %esi
578aa4:	59                   	pop    %ecx
578aa5:	c3                   	ret
578aa6:	cc                   	int3
578aa7:	cc                   	int3
578aa8:	cc                   	int3
578aa9:	cc                   	int3
578aaa:	cc                   	int3
578aab:	cc                   	int3
578aac:	cc                   	int3
578aad:	cc                   	int3
578aae:	cc                   	int3
578aaf:	cc                   	int3
578ab0:	6a 00                	push   $0x0
578ab2:	6a 00                	push   $0x0
578ab4:	ff 74 24 1c          	push   0x1c(%esp)
578ab8:	ff 74 24 1c          	push   0x1c(%esp)
578abc:	ff 74 24 1c          	push   0x1c(%esp)
578ac0:	ff 74 24 1c          	push   0x1c(%esp)
578ac4:	ff 74 24 1c          	push   0x1c(%esp)
578ac8:	e8 13 00 00 00       	call   0x578ae0
578acd:	83 c4 1c             	add    $0x1c,%esp
578ad0:	c3                   	ret
578ad1:	cc                   	int3
578ad2:	cc                   	int3
578ad3:	cc                   	int3
578ad4:	cc                   	int3
578ad5:	cc                   	int3
578ad6:	cc                   	int3
578ad7:	cc                   	int3
578ad8:	cc                   	int3
578ad9:	cc                   	int3
578ada:	cc                   	int3
578adb:	cc                   	int3
578adc:	cc                   	int3
578add:	cc                   	int3
578ade:	cc                   	int3
578adf:	cc                   	int3
578ae0:	b8 40 00 00 00       	mov    $0x40,%eax
578ae5:	e8 c6 8c 05 00       	call   0x5d17b0
578aea:	a1 c0 14 69 00       	mov    0x6914c0,%eax
578aef:	33 c4                	xor    %esp,%eax
578af1:	89 44 24 3c          	mov    %eax,0x3c(%esp)
578af5:	8b 44 24 44          	mov    0x44(%esp),%eax
578af9:	8b 4c 24 48          	mov    0x48(%esp),%ecx
578afd:	8b 54 24 58          	mov    0x58(%esp),%edx
578b01:	53                   	push   %ebx
578b02:	8b 5c 24 50          	mov    0x50(%esp),%ebx
578b06:	89 44 24 1c          	mov    %eax,0x1c(%esp)
578b0a:	89 4c 24 08          	mov    %ecx,0x8(%esp)
578b0e:	c7 44 24 0c 00 00 00 	movl   $0x0,0xc(%esp)