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)
578b15:	00
578b16:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
578b1d:	00
578b1e:	55                   	push   %ebp
578b1f:	8b 6c 24 64          	mov    0x64(%esp),%ebp
578b23:	56                   	push   %esi
578b24:	57                   	push   %edi
578b25:	83 fb ff             	cmp    $0xffffffff,%ebx
578b28:	75 13                	jne    0x578b3d
578b2a:	8b d9                	mov    %ecx,%ebx
578b2c:	8d 4b 01             	lea    0x1(%ebx),%ecx
578b2f:	90                   	nop
578b30:	8a 03                	mov    (%ebx),%al
578b32:	43                   	inc    %ebx
578b33:	84 c0                	test   %al,%al
578b35:	75 f9                	jne    0x578b30
578b37:	2b d9                	sub    %ecx,%ebx
578b39:	8b 4c 24 14          	mov    0x14(%esp),%ecx
578b3d:	8b 44 24 64          	mov    0x64(%esp),%eax
578b41:	be 06 28 00 00       	mov    $0x2806,%esi
578b46:	85 c0                	test   %eax,%eax
578b48:	0f 44 c6             	cmove  %esi,%eax
578b4b:	8b 74 24 60          	mov    0x60(%esp),%esi
578b4f:	89 44 24 64          	mov    %eax,0x64(%esp)
578b53:	8d 86 00 f0 ff ff    	lea    -0x1000(%esi),%eax
578b59:	83 f8 04             	cmp    $0x4,%eax
578b5c:	0f 87 4a 03 00 00    	ja     0x578eac
578b62:	ff 24 85 dc 8e 57 00 	jmp    *0x578edc(,%eax,4)
578b69:	f6 c3 01             	test   $0x1,%bl
578b6c:	74 11                	je     0x578b7f
578b6e:	6a 41                	push   $0x41
578b70:	68 ec a7 65 00       	push   $0x65a7ec
578b75:	68 81 00 00 00       	push   $0x81
578b7a:	e9 39 03 00 00       	jmp    0x578eb8
578b7f:	8b fb                	mov    %ebx,%edi
578b81:	d1 ff                	sar    $1,%edi
578b83:	8b c7                	mov    %edi,%eax
578b85:	eb 70                	jmp    0x578bf7
578b87:	f6 c3 03             	test   $0x3,%bl
578b8a:	74 11                	je     0x578b9d
578b8c:	6a 4a                	push   $0x4a
578b8e:	68 ec a7 65 00       	push   $0x65a7ec
578b93:	68 85 00 00 00       	push   $0x85
578b98:	e9 1b 03 00 00       	jmp    0x578eb8
578b9d:	8b fb                	mov    %ebx,%edi
578b9f:	c1 ff 02             	sar    $0x2,%edi
578ba2:	8b c7                	mov    %edi,%eax
578ba4:	eb 51                	jmp    0x578bf7
578ba6:	33 ff                	xor    %edi,%edi
578ba8:	33 c0                	xor    %eax,%eax
578baa:	8b f3                	mov    %ebx,%esi
578bac:	8b e9                	mov    %ecx,%ebp
578bae:	85 db                	test   %ebx,%ebx
578bb0:	74 26                	je     0x578bd8
578bb2:	8d 44 24 20          	lea    0x20(%esp),%eax
578bb6:	50                   	push   %eax
578bb7:	56                   	push   %esi
578bb8:	55                   	push   %ebp
578bb9:	e8 32 45 00 00       	call   0x57d0f0
578bbe:	83 c4 0c             	add    $0xc,%esp
578bc1:	85 c0                	test   %eax,%eax
578bc3:	78 1d                	js     0x578be2
578bc5:	2b f0                	sub    %eax,%esi
578bc7:	03 e8                	add    %eax,%ebp
578bc9:	47                   	inc    %edi
578bca:	8b c7                	mov    %edi,%eax
578bcc:	85 f6                	test   %esi,%esi
578bce:	75 e2                	jne    0x578bb2
578bd0:	8b 4c 24 14          	mov    0x14(%esp),%ecx
578bd4:	8b 54 24 68          	mov    0x68(%esp),%edx
578bd8:	8b 6c 24 6c          	mov    0x6c(%esp),%ebp
578bdc:	8b 74 24 60          	mov    0x60(%esp),%esi
578be0:	eb 15                	jmp    0x578bf7
578be2:	6a 55                	push   $0x55
578be4:	68 ec a7 65 00       	push   $0x65a7ec
578be9:	68 86 00 00 00       	push   $0x86
578bee:	e9 c5 02 00 00       	jmp    0x578eb8
578bf3:	8b fb                	mov    %ebx,%edi
578bf5:	8b c3                	mov    %ebx,%eax
578bf7:	85 d2                	test   %edx,%edx
578bf9:	7e 47                	jle    0x578c42
578bfb:	3b c2                	cmp    %edx,%eax
578bfd:	7d 43                	jge    0x578c42
578bff:	6a 64                	push   $0x64
578c01:	68 ec a7 65 00       	push   $0x65a7ec
578c06:	68 98 00 00 00       	push   $0x98
578c0b:	6a 7a                	push   $0x7a
578c0d:	6a 0d                	push   $0xd
578c0f:	e8 6c 03 f6 ff       	call   0x4d8f80
578c14:	ff 74 24 7c          	push   0x7c(%esp)
578c18:	8d 44 24 44          	lea    0x44(%esp),%eax
578c1c:	68 cc 7a 60 00       	push   $0x607acc
578c21:	6a 20                	push   $0x20
578c23:	50                   	push   %eax
578c24:	e8 07 9a f6 ff       	call   0x4e2630
578c29:	8d 44 24 50          	lea    0x50(%esp),%eax
578c2d:	50                   	push   %eax
578c2e:	68 04 a8 65 00       	push   $0x65a804
578c33:	6a 02                	push   $0x2
578c35:	e8 36 fa f5 ff       	call   0x4d8670
578c3a:	83 c4 30             	add    $0x30,%esp
578c3d:	e9 82 02 00 00       	jmp    0x578ec4
578c42:	85 ed                	test   %ebp,%ebp
578c44:	7e 44                	jle    0x578c8a
578c46:	3b c5                	cmp    %ebp,%eax
578c48:	7e 40                	jle    0x578c8a
578c4a:	6a 6b                	push   $0x6b
578c4c:	68 ec a7 65 00       	push   $0x65a7ec
578c51:	68 97 00 00 00       	push   $0x97
578c56:	6a 7a                	push   $0x7a
578c58:	6a 0d                	push   $0xd
578c5a:	e8 21 03 f6 ff       	call   0x4d8f80
578c5f:	55                   	push   %ebp
578c60:	68 cc 7a 60 00       	push   $0x607acc
578c65:	8d 44 24 48          	lea    0x48(%esp),%eax
578c69:	6a 20                	push   $0x20
578c6b:	50                   	push   %eax
578c6c:	e8 bf 99 f6 ff       	call   0x4e2630
578c71:	8d 44 24 50          	lea    0x50(%esp),%eax
578c75:	50                   	push   %eax
578c76:	68 10 a8 65 00       	push   $0x65a810
578c7b:	6a 02                	push   $0x2
578c7d:	e8 ee f9 f5 ff       	call   0x4d8670
578c82:	83 c4 30             	add    $0x30,%esp
578c85:	e9 3a 02 00 00       	jmp    0x578ec4
578c8a:	8d 44 24 64          	lea    0x64(%esp),%eax
578c8e:	50                   	push   %eax
578c8f:	68 b0 90 57 00       	push   $0x5790b0
578c94:	56                   	push   %esi
578c95:	53                   	push   %ebx
578c96:	51                   	push   %ecx
578c97:	e8 34 03 00 00       	call   0x578fd0
578c9c:	83 c4 14             	add    $0x14,%esp
578c9f:	85 c0                	test   %eax,%eax
578ca1:	79 0e                	jns    0x578cb1
578ca3:	6a 73                	push   $0x73
578ca5:	68 ec a7 65 00       	push   $0x65a7ec
578caa:	6a 7c                	push   $0x7c
578cac:	e9 07 02 00 00       	jmp    0x578eb8
578cb1:	8b 44 24 64          	mov    0x64(%esp),%eax
578cb5:	c7 44 24 20 01 10 00 	movl   $0x1001,0x20(%esp)
578cbc:	00
578cbd:	a8 01                	test   $0x1,%al
578cbf:	74 07                	je     0x578cc8
578cc1:	bd 12 00 00 00       	mov    $0x12,%ebp
578cc6:	eb 5a                	jmp    0x578d22
578cc8:	a8 02                	test   $0x2,%al
578cca:	74 07                	je     0x578cd3
578ccc:	bd 13 00 00 00       	mov    $0x13,%ebp
578cd1:	eb 4f                	jmp    0x578d22
578cd3:	a8 10                	test   $0x10,%al
578cd5:	74 07                	je     0x578cde
578cd7:	bd 16 00 00 00       	mov    $0x16,%ebp
578cdc:	eb 44                	jmp    0x578d22
578cde:	a8 04                	test   $0x4,%al
578ce0:	74 07                	je     0x578ce9
578ce2:	bd 14 00 00 00       	mov    $0x14,%ebp
578ce7:	eb 39                	jmp    0x578d22
578ce9:	a9 00 08 00 00       	test   $0x800,%eax
578cee:	74 0f                	je     0x578cff
578cf0:	bd 1e 00 00 00       	mov    $0x1e,%ebp
578cf5:	c7 44 24 20 02 10 00 	movl   $0x1002,0x20(%esp)
578cfc:	00
578cfd:	eb 23                	jmp    0x578d22
578cff:	a9 00 01 00 00       	test   $0x100,%eax
578d04:	74 0f                	je     0x578d15
578d06:	bd 1c 00 00 00       	mov    $0x1c,%ebp
578d0b:	c7 44 24 20 04 10 00 	movl   $0x1004,0x20(%esp)
578d12:	00
578d13:	eb 0d                	jmp    0x578d22
578d15:	bd 0c 00 00 00       	mov    $0xc,%ebp
578d1a:	c7 44 24 20 00 10 00 	movl   $0x1000,0x20(%esp)
578d21:	00
578d22:	8b 44 24 28          	mov    0x28(%esp),%eax
578d26:	85 c0                	test   %eax,%eax