549969:	33 db                	xor    %ebx,%ebx
54996b:	8b 4d 08             	mov    0x8(%ebp),%ecx
54996e:	8a 5e 01             	mov    0x1(%esi),%bl
549971:	d3 fb                	sar    %cl,%ebx
549973:	8b 0c 9a             	mov    (%edx,%ebx,4),%ecx
549976:	33 db                	xor    %ebx,%ebx
549978:	8a 1e                	mov    (%esi),%bl
54997a:	66 8b 0c 59          	mov    (%ecx,%ebx,2),%cx
54997e:	0f b7 d9             	movzwl %cx,%ebx
549981:	c1 fb 08             	sar    $0x8,%ebx
549984:	80 e1 ff             	and    $0xff,%cl
549987:	80 e3 ff             	and    $0xff,%bl
54998a:	88 1e                	mov    %bl,(%esi)
54998c:	88 4e 01             	mov    %cl,0x1(%esi)
54998f:	83 c6 02             	add    $0x2,%esi
549992:	33 db                	xor    %ebx,%ebx
549994:	8b 4d 08             	mov    0x8(%ebp),%ecx
549997:	8a 5e 01             	mov    0x1(%esi),%bl
54999a:	d3 fb                	sar    %cl,%ebx
54999c:	8b 0c 9a             	mov    (%edx,%ebx,4),%ecx
54999f:	33 db                	xor    %ebx,%ebx
5499a1:	8a 1e                	mov    (%esi),%bl
5499a3:	66 8b 0c 59          	mov    (%ecx,%ebx,2),%cx
5499a7:	0f b7 d9             	movzwl %cx,%ebx
5499aa:	c1 fb 08             	sar    $0x8,%ebx
5499ad:	80 e1 ff             	and    $0xff,%cl
5499b0:	80 e3 ff             	and    $0xff,%bl
5499b3:	88 1e                	mov    %bl,(%esi)
5499b5:	88 4e 01             	mov    %cl,0x1(%esi)
5499b8:	83 c6 02             	add    $0x2,%esi
5499bb:	33 db                	xor    %ebx,%ebx
5499bd:	8b 4d 08             	mov    0x8(%ebp),%ecx
5499c0:	8a 5e 01             	mov    0x1(%esi),%bl
5499c3:	d3 fb                	sar    %cl,%ebx
5499c5:	8b 0c 9a             	mov    (%edx,%ebx,4),%ecx
5499c8:	33 db                	xor    %ebx,%ebx
5499ca:	8a 1e                	mov    (%esi),%bl
5499cc:	66 8b 0c 59          	mov    (%ecx,%ebx,2),%cx
5499d0:	0f b7 d9             	movzwl %cx,%ebx
5499d3:	c1 fb 08             	sar    $0x8,%ebx
5499d6:	80 e1 ff             	and    $0xff,%cl
5499d9:	80 e3 ff             	and    $0xff,%bl
5499dc:	88 1e                	mov    %bl,(%esi)
5499de:	88 4e 01             	mov    %cl,0x1(%esi)
5499e1:	83 c6 04             	add    $0x4,%esi
5499e4:	40                   	inc    %eax
5499e5:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5499e8:	3b c1                	cmp    %ecx,%eax
5499ea:	0f 82 79 ff ff ff    	jb     0x549969
5499f0:	e9 44 02 00 00       	jmp    0x549c39
5499f5:	8b 45 fc             	mov    -0x4(%ebp),%eax
5499f8:	8a 40 09             	mov    0x9(%eax),%al
5499fb:	3c 08                	cmp    $0x8,%al
5499fd:	75 2c                	jne    0x549a2b
5499ff:	8b 75 f8             	mov    -0x8(%ebp),%esi
549a02:	33 c0                	xor    %eax,%eax
549a04:	8b 55 f0             	mov    -0x10(%ebp),%edx
549a07:	3b c2                	cmp    %edx,%eax
549a09:	0f 83 2a 02 00 00    	jae    0x549c39
549a0f:	33 c9                	xor    %ecx,%ecx
549a11:	8a 0e                	mov    (%esi),%cl
549a13:	8b 55 f4             	mov    -0xc(%ebp),%edx
549a16:	8a 0c 0a             	mov    (%edx,%ecx,1),%cl
549a19:	88 0e                	mov    %cl,(%esi)
549a1b:	83 c6 02             	add    $0x2,%esi
549a1e:	40                   	inc    %eax
549a1f:	8b 55 f0             	mov    -0x10(%ebp),%edx
549a22:	3b c2                	cmp    %edx,%eax
549a24:	72 e9                	jb     0x549a0f
549a26:	e9 0e 02 00 00       	jmp    0x549c39
549a2b:	8b 75 f8             	mov    -0x8(%ebp),%esi
549a2e:	33 c0                	xor    %eax,%eax
549a30:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549a33:	3b c1                	cmp    %ecx,%eax
549a35:	0f 83 fe 01 00 00    	jae    0x549c39
549a3b:	33 db                	xor    %ebx,%ebx
549a3d:	8b 4d 08             	mov    0x8(%ebp),%ecx
549a40:	8a 5e 01             	mov    0x1(%esi),%bl
549a43:	d3 fb                	sar    %cl,%ebx
549a45:	8b 0c 9a             	mov    (%edx,%ebx,4),%ecx
549a48:	33 db                	xor    %ebx,%ebx
549a4a:	8a 1e                	mov    (%esi),%bl
549a4c:	66 8b 0c 59          	mov    (%ecx,%ebx,2),%cx
549a50:	0f b7 d9             	movzwl %cx,%ebx
549a53:	c1 fb 08             	sar    $0x8,%ebx
549a56:	80 e1 ff             	and    $0xff,%cl
549a59:	80 e3 ff             	and    $0xff,%bl
549a5c:	88 1e                	mov    %bl,(%esi)
549a5e:	88 4e 01             	mov    %cl,0x1(%esi)
549a61:	83 c6 04             	add    $0x4,%esi
549a64:	40                   	inc    %eax
549a65:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549a68:	3b c1                	cmp    %ecx,%eax
549a6a:	72 cf                	jb     0x549a3b
549a6c:	e9 c8 01 00 00       	jmp    0x549c39
549a71:	8b 45 fc             	mov    -0x4(%ebp),%eax
549a74:	8a 40 09             	mov    0x9(%eax),%al
549a77:	3c 02                	cmp    $0x2,%al
549a79:	0f 85 e3 00 00 00    	jne    0x549b62
549a7f:	8b 75 f8             	mov    -0x8(%ebp),%esi
549a82:	33 c0                	xor    %eax,%eax
549a84:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549a87:	3b c1                	cmp    %ecx,%eax
549a89:	0f 83 d3 00 00 00    	jae    0x549b62
549a8f:	33 c9                	xor    %ecx,%ecx
549a91:	8a 0e                	mov    (%esi),%cl
549a93:	8b d9                	mov    %ecx,%ebx
549a95:	81 e3 c0 00 00 00    	and    $0xc0,%ebx
549a9b:	89 5d ec             	mov    %ebx,-0x14(%ebp)
549a9e:	8b d9                	mov    %ecx,%ebx
549aa0:	83 e3 30             	and    $0x30,%ebx
549aa3:	89 5d e8             	mov    %ebx,-0x18(%ebp)
549aa6:	8b d9                	mov    %ecx,%ebx
549aa8:	83 e3 0c             	and    $0xc,%ebx
549aab:	83 e1 03             	and    $0x3,%ecx
549aae:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
549ab1:	89 4d e0             	mov    %ecx,-0x20(%ebp)
549ab4:	8b 4d ec             	mov    -0x14(%ebp),%ecx
549ab7:	8b 5d ec             	mov    -0x14(%ebp),%ebx
549aba:	c1 f9 02             	sar    $0x2,%ecx
549abd:	8b 7d e8             	mov    -0x18(%ebp),%edi
549ac0:	0b cb                	or     %ebx,%ecx
549ac2:	8b 5d ec             	mov    -0x14(%ebp),%ebx
549ac5:	c1 fb 04             	sar    $0x4,%ebx
549ac8:	0b cb                	or     %ebx,%ecx
549aca:	8b 5d ec             	mov    -0x14(%ebp),%ebx
549acd:	c1 fb 06             	sar    $0x6,%ebx
549ad0:	0b cb                	or     %ebx,%ecx
549ad2:	8b 5d f4             	mov    -0xc(%ebp),%ebx
549ad5:	c1 ff 02             	sar    $0x2,%edi
549ad8:	8a 0c 0b             	mov    (%ebx,%ecx,1),%cl
549adb:	8b 5d e8             	mov    -0x18(%ebp),%ebx
549ade:	80 e1 c0             	and    $0xc0,%cl
549ae1:	c1 e3 02             	shl    $0x2,%ebx
549ae4:	0b 5d e8             	or     -0x18(%ebp),%ebx
549ae7:	0b df                	or     %edi,%ebx
549ae9:	8b 7d e8             	mov    -0x18(%ebp),%edi
549aec:	c1 ff 04             	sar    $0x4,%edi
549aef:	0b df                	or     %edi,%ebx
549af1:	8b 7d f4             	mov    -0xc(%ebp),%edi
549af4:	0f b6 1c 1f          	movzbl (%edi,%ebx,1),%ebx
549af8:	c1 fb 02             	sar    $0x2,%ebx
549afb:	8b 7d e4             	mov    -0x1c(%ebp),%edi
549afe:	80 e3 30             	and    $0x30,%bl
549b01:	0a cb                	or     %bl,%cl
549b03:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
549b06:	c1 e3 04             	shl    $0x4,%ebx
549b09:	c1 e7 02             	shl    $0x2,%edi
549b0c:	0b df                	or     %edi,%ebx
549b0e:	8b 7d e4             	mov    -0x1c(%ebp),%edi
549b11:	0b df                	or     %edi,%ebx
549b13:	8b 7d e4             	mov    -0x1c(%ebp),%edi
549b16:	c1 ff 02             	sar    $0x2,%edi
549b19:	0b df                	or     %edi,%ebx
549b1b:	8b 7d f4             	mov    -0xc(%ebp),%edi
549b1e:	0f b6 1c 1f          	movzbl (%edi,%ebx,1),%ebx
549b22:	c1 fb 04             	sar    $0x4,%ebx
549b25:	8b 7d e0             	mov    -0x20(%ebp),%edi
549b28:	80 e3 0c             	and    $0xc,%bl
549b2b:	0a cb                	or     %bl,%cl
549b2d:	8b 5d e0             	mov    -0x20(%ebp),%ebx
549b30:	c1 e3 06             	shl    $0x6,%ebx
549b33:	c1 e7 04             	shl    $0x4,%edi
549b36:	0b df                	or     %edi,%ebx
549b38:	8b 7d e0             	mov    -0x20(%ebp),%edi
549b3b:	c1 e7 02             	shl    $0x2,%edi
549b3e:	0b df                	or     %edi,%ebx
549b40:	8b 7d e0             	mov    -0x20(%ebp),%edi
549b43:	0b df                	or     %edi,%ebx
549b45:	8b 7d f4             	mov    -0xc(%ebp),%edi
549b48:	0f b6 1c 1f          	movzbl (%edi,%ebx,1),%ebx
549b4c:	c1 fb 06             	sar    $0x6,%ebx
549b4f:	0a cb                	or     %bl,%cl
549b51:	88 0e                	mov    %cl,(%esi)
549b53:	46                   	inc    %esi
549b54:	83 c0 04             	add    $0x4,%eax
549b57:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549b5a:	3b c1                	cmp    %ecx,%eax
549b5c:	0f 82 2d ff ff ff    	jb     0x549a8f
549b62:	8b 45 fc             	mov    -0x4(%ebp),%eax
549b65:	8a 40 09             	mov    0x9(%eax),%al
549b68:	3c 04                	cmp    $0x4,%al
549b6a:	75 58                	jne    0x549bc4
549b6c:	8b 75 f8             	mov    -0x8(%ebp),%esi
549b6f:	33 c0                	xor    %eax,%eax
549b71:	8b 55 f0             	mov    -0x10(%ebp),%edx
549b74:	3b c2                	cmp    %edx,%eax
549b76:	0f 83 bd 00 00 00    	jae    0x549c39
549b7c:	33 c9                	xor    %ecx,%ecx
549b7e:	8a 0e                	mov    (%esi),%cl
549b80:	8b d1                	mov    %ecx,%edx
549b82:	83 e1 0f             	and    $0xf,%ecx
549b85:	89 4d dc             	mov    %ecx,-0x24(%ebp)
549b88:	81 e2 f0 00 00 00    	and    $0xf0,%edx
549b8e:	8b ca                	mov    %edx,%ecx
549b90:	8b 5d dc             	mov    -0x24(%ebp),%ebx
549b93:	c1 f9 04             	sar    $0x4,%ecx
549b96:	0b d1                	or     %ecx,%edx
549b98:	8b 4d f4             	mov    -0xc(%ebp),%ecx
549b9b:	8a 14 11             	mov    (%ecx,%edx,1),%dl
549b9e:	8b 4d dc             	mov    -0x24(%ebp),%ecx
549ba1:	c1 e1 04             	shl    $0x4,%ecx
549ba4:	80 e2 f0             	and    $0xf0,%dl
549ba7:	0b cb                	or     %ebx,%ecx
549ba9:	8b 5d f4             	mov    -0xc(%ebp),%ebx
549bac:	0f b6 0c 0b          	movzbl (%ebx,%ecx,1),%ecx
549bb0:	c1 f9 04             	sar    $0x4,%ecx
549bb3:	0a d1                	or     %cl,%dl
549bb5:	88 16                	mov    %dl,(%esi)
549bb7:	46                   	inc    %esi
549bb8:	83 c0 02             	add    $0x2,%eax
549bbb:	8b 55 f0             	mov    -0x10(%ebp),%edx
549bbe:	3b c2                	cmp    %edx,%eax
549bc0:	72 ba                	jb     0x549b7c
549bc2:	eb 75                	jmp    0x549c39
549bc4:	8b 45 fc             	mov    -0x4(%ebp),%eax
549bc7:	8a 40 09             	mov    0x9(%eax),%al
549bca:	3c 08                	cmp    $0x8,%al
549bcc:	75 23                	jne    0x549bf1
549bce:	8b 75 f8             	mov    -0x8(%ebp),%esi
549bd1:	33 c0                	xor    %eax,%eax
549bd3:	8b 55 f0             	mov    -0x10(%ebp),%edx
549bd6:	3b c2                	cmp    %edx,%eax
549bd8:	73 5f                	jae    0x549c39
549bda:	33 c9                	xor    %ecx,%ecx
549bdc:	8a 0e                	mov    (%esi),%cl
549bde:	8b 55 f4             	mov    -0xc(%ebp),%edx
549be1:	8a 0c 0a             	mov    (%edx,%ecx,1),%cl
549be4:	88 0e                	mov    %cl,(%esi)
549be6:	46                   	inc    %esi
549be7:	40                   	inc    %eax
549be8:	8b 55 f0             	mov    -0x10(%ebp),%edx
549beb:	3b c2                	cmp    %edx,%eax
549bed:	72 eb                	jb     0x549bda
549bef:	eb 48                	jmp    0x549c39
549bf1:	8b 45 fc             	mov    -0x4(%ebp),%eax
549bf4:	8a 48 09             	mov    0x9(%eax),%cl
549bf7:	80 f9 10             	cmp    $0x10,%cl
549bfa:	75 3d                	jne    0x549c39
549bfc:	8b 75 f8             	mov    -0x8(%ebp),%esi
549bff:	33 c0                	xor    %eax,%eax
549c01:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549c04:	3b c1                	cmp    %ecx,%eax
549c06:	73 31                	jae    0x549c39
549c08:	33 db                	xor    %ebx,%ebx
549c0a:	8b 4d 08             	mov    0x8(%ebp),%ecx
549c0d:	8a 5e 01             	mov    0x1(%esi),%bl
549c10:	d3 fb                	sar    %cl,%ebx
549c12:	8b 0c 9a             	mov    (%edx,%ebx,4),%ecx
549c15:	33 db                	xor    %ebx,%ebx
549c17:	8a 1e                	mov    (%esi),%bl
549c19:	66 8b 0c 59          	mov    (%ecx,%ebx,2),%cx
549c1d:	0f b7 d9             	movzwl %cx,%ebx
549c20:	c1 fb 08             	sar    $0x8,%ebx
549c23:	80 e1 ff             	and    $0xff,%cl
549c26:	80 e3 ff             	and    $0xff,%bl
549c29:	88 1e                	mov    %bl,(%esi)
549c2b:	88 4e 01             	mov    %cl,0x1(%esi)
549c2e:	83 c6 02             	add    $0x2,%esi
549c31:	40                   	inc    %eax
549c32:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549c35:	3b c1                	cmp    %ecx,%eax
549c37:	72 cf                	jb     0x549c08
549c39:	5f                   	pop    %edi
549c3a:	5e                   	pop    %esi
549c3b:	5b                   	pop    %ebx
549c3c:	8b e5                	mov    %ebp,%esp
549c3e:	5d                   	pop    %ebp
549c3f:	c2 08 00             	ret    $0x8
549c42:	90                   	nop
549c43:	90                   	nop
549c44:	55                   	push   %ebp
549c45:	8b ec                	mov    %esp,%ebp
549c47:	83 c4 f0             	add    $0xfffffff0,%esp
549c4a:	53                   	push   %ebx
549c4b:	56                   	push   %esi
549c4c:	57                   	push   %edi
549c4d:	89 4d f4             	mov    %ecx,-0xc(%ebp)
549c50:	89 55 f8             	mov    %edx,-0x8(%ebp)
549c53:	89 45 fc             	mov    %eax,-0x4(%ebp)
549c56:	8b 55 fc             	mov    -0x4(%ebp),%edx
549c59:	8b 45 fc             	mov    -0x4(%ebp),%eax
549c5c:	8a 4a 08             	mov    0x8(%edx),%cl
549c5f:	8b 00                	mov    (%eax),%eax
549c61:	80 f9 03             	cmp    $0x3,%cl
549c64:	0f 85 57 02 00 00    	jne    0x549ec1
549c6a:	8b 55 fc             	mov    -0x4(%ebp),%edx
549c6d:	8a 52 09             	mov    0x9(%edx),%dl
549c70:	80 fa 08             	cmp    $0x8,%dl
549c73:	0f 83 28 01 00 00    	jae    0x549da1
549c79:	fe ca                	dec    %dl
549c7b:	74 12                	je     0x549c8f
549c7d:	fe ca                	dec    %dl
549c7f:	74 6e                	je     0x549cef
549c81:	80 ea 02             	sub    $0x2,%dl
549c84:	0f 84 b9 00 00 00    	je     0x549d43
549c8a:	e9 fe 00 00 00       	jmp    0x549d8d
549c8f:	8b f0                	mov    %eax,%esi
549c91:	8b 55 f8             	mov    -0x8(%ebp),%edx
549c94:	4e                   	dec    %esi
549c95:	8b 5d f8             	mov    -0x8(%ebp),%ebx
549c98:	c1 ee 03             	shr    $0x3,%esi
549c9b:	b9 07 00 00 00       	mov    $0x7,%ecx
549ca0:	03 f2                	add    %edx,%esi
549ca2:	8d 50 07             	lea    0x7(%eax),%edx
549ca5:	83 e2 07             	and    $0x7,%edx
549ca8:	03 d8                	add    %eax,%ebx
549caa:	2b ca                	sub    %edx,%ecx
549cac:	33 d2                	xor    %edx,%edx
549cae:	4b                   	dec    %ebx
549caf:	3b c2                	cmp    %edx,%eax
549cb1:	89 4d f0             	mov    %ecx,-0x10(%ebp)
549cb4:	0f 86 d3 00 00 00    	jbe    0x549d8d
549cba:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549cbd:	0f b6 3e             	movzbl (%esi),%edi
549cc0:	d3 ff                	sar    %cl,%edi
549cc2:	8b cf                	mov    %edi,%ecx
549cc4:	f6 c1 01             	test   $0x1,%cl
549cc7:	74 05                	je     0x549cce
549cc9:	c6 03 01             	movb   $0x1,(%ebx)
549ccc:	eb 03                	jmp    0x549cd1
549cce:	c6 03 00             	movb   $0x0,(%ebx)
549cd1:	8b 4d f0             	mov    -0x10(%ebp),%ecx
549cd4:	83 f9 07             	cmp    $0x7,%ecx
549cd7:	75 08                	jne    0x549ce1
549cd9:	33 c9                	xor    %ecx,%ecx
549cdb:	4e                   	dec    %esi
549cdc:	89 4d f0             	mov    %ecx,-0x10(%ebp)
549cdf:	eb 03                	jmp    0x549ce4
549ce1:	ff 45 f0             	incl   -0x10(%ebp)
549ce4:	4b                   	dec    %ebx
549ce5:	42                   	inc    %edx
549ce6:	3b c2                	cmp    %edx,%eax
549ce8:	77 d0                	ja     0x549cba
549cea:	e9 9e 00 00 00       	jmp    0x549d8d
549cef:	8b f0                	mov    %eax,%esi
549cf1:	8b 55 f8             	mov    -0x8(%ebp),%edx
549cf4:	4e                   	dec    %esi
549cf5:	8b 5d f8             	mov    -0x8(%ebp),%ebx
549cf8:	c1 ee 02             	shr    $0x2,%esi
549cfb:	b9 03 00 00 00       	mov    $0x3,%ecx
549d00:	03 f2                	add    %edx,%esi
549d02:	8d 50 03             	lea    0x3(%eax),%edx
549d05:	83 e2 03             	and    $0x3,%edx
549d08:	03 d8                	add    %eax,%ebx
549d0a:	2b ca                	sub    %edx,%ecx
549d0c:	33 d2                	xor    %edx,%edx
549d0e:	03 c9                	add    %ecx,%ecx
549d10:	4b                   	dec    %ebx
549d11:	3b c2                	cmp    %edx,%eax