50694f:	c7 40 14 59 00 00 00 	movl   $0x59,0x14(%eax)
506956:	8a 54 24 18          	mov    0x18(%esp),%dl
50695a:	89 50 18             	mov    %edx,0x18(%eax)
50695d:	ba 01 00 00 00       	mov    $0x1,%edx
506962:	8a 4c 24 19          	mov    0x19(%esp),%cl
506966:	89 48 1c             	mov    %ecx,0x1c(%eax)
506969:	8b c3                	mov    %ebx,%eax
50696b:	8b 08                	mov    (%eax),%ecx
50696d:	ff 51 04             	call   *0x4(%ecx)
506970:	33 c0                	xor    %eax,%eax
506972:	33 d2                	xor    %edx,%edx
506974:	8a 54 24 19          	mov    0x19(%esp),%dl
506978:	8a 44 24 18          	mov    0x18(%esp),%al
50697c:	f7 ea                	imul   %edx
50697e:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
506981:	3b 0c 24             	cmp    (%esp),%ecx
506984:	74 58                	je     0x5069de
506986:	8b 03                	mov    (%ebx),%eax
506988:	c7 40 14 57 00 00 00 	movl   $0x57,0x14(%eax)
50698f:	8b 14 24             	mov    (%esp),%edx
506992:	89 50 18             	mov    %edx,0x18(%eax)
506995:	8b c3                	mov    %ebx,%eax
506997:	ba 01 00 00 00       	mov    $0x1,%edx
50699c:	8b 08                	mov    (%eax),%ecx
50699e:	ff 51 04             	call   *0x4(%ecx)
5069a1:	eb 3b                	jmp    0x5069de
5069a3:	8b 03                	mov    (%ebx),%eax
5069a5:	c7 40 14 4c 00 00 00 	movl   $0x4c,0x14(%eax)
5069ac:	8b 14 24             	mov    (%esp),%edx
5069af:	83 c2 0e             	add    $0xe,%edx
5069b2:	89 50 18             	mov    %edx,0x18(%eax)
5069b5:	8b c3                	mov    %ebx,%eax
5069b7:	ba 01 00 00 00       	mov    $0x1,%edx
5069bc:	8b 08                	mov    (%eax),%ecx
5069be:	ff 51 04             	call   *0x4(%ecx)
5069c1:	eb 1b                	jmp    0x5069de
5069c3:	8b 03                	mov    (%ebx),%eax
5069c5:	c7 40 14 4c 00 00 00 	movl   $0x4c,0x14(%eax)
5069cc:	8b 14 24             	mov    (%esp),%edx
5069cf:	89 50 18             	mov    %edx,0x18(%eax)
5069d2:	8b c3                	mov    %ebx,%eax
5069d4:	ba 01 00 00 00       	mov    $0x1,%edx
5069d9:	8b 08                	mov    (%eax),%ecx
5069db:	ff 51 04             	call   *0x4(%ecx)
5069de:	89 75 00             	mov    %esi,0x0(%ebp)
5069e1:	89 7d 04             	mov    %edi,0x4(%ebp)
5069e4:	83 3c 24 00          	cmpl   $0x0,(%esp)
5069e8:	7e 0b                	jle    0x5069f5
5069ea:	8b 14 24             	mov    (%esp),%edx
5069ed:	8b c3                	mov    %ebx,%eax
5069ef:	8b 48 14             	mov    0x14(%eax),%ecx
5069f2:	ff 51 10             	call   *0x10(%ecx)
5069f5:	b8 01 00 00 00       	mov    $0x1,%eax
5069fa:	83 c4 1c             	add    $0x1c,%esp
5069fd:	5d                   	pop    %ebp
5069fe:	5f                   	pop    %edi
5069ff:	5e                   	pop    %esi
506a00:	5b                   	pop    %ebx
506a01:	c3                   	ret
506a02:	90                   	nop
506a03:	90                   	nop
506a04:	53                   	push   %ebx
506a05:	56                   	push   %esi
506a06:	57                   	push   %edi
506a07:	55                   	push   %ebp
506a08:	83 c4 d8             	add    $0xffffffd8,%esp
506a0b:	8b e8                	mov    %eax,%ebp
506a0d:	8b 7d 14             	mov    0x14(%ebp),%edi
506a10:	8b 1f                	mov    (%edi),%ebx
506a12:	8b 77 04             	mov    0x4(%edi),%esi
506a15:	85 f6                	test   %esi,%esi
506a17:	75 15                	jne    0x506a2e
506a19:	8b c5                	mov    %ebp,%eax
506a1b:	ff 57 0c             	call   *0xc(%edi)
506a1e:	85 c0                	test   %eax,%eax
506a20:	75 07                	jne    0x506a29
506a22:	33 c0                	xor    %eax,%eax
506a24:	e9 aa 01 00 00       	jmp    0x506bd3
506a29:	8b 1f                	mov    (%edi),%ebx
506a2b:	8b 77 04             	mov    0x4(%edi),%esi
506a2e:	33 c0                	xor    %eax,%eax
506a30:	4e                   	dec    %esi
506a31:	8a 03                	mov    (%ebx),%al
506a33:	43                   	inc    %ebx
506a34:	c1 e0 08             	shl    $0x8,%eax
506a37:	85 f6                	test   %esi,%esi
506a39:	89 04 24             	mov    %eax,(%esp)
506a3c:	75 15                	jne    0x506a53
506a3e:	8b c5                	mov    %ebp,%eax
506a40:	ff 57 0c             	call   *0xc(%edi)
506a43:	85 c0                	test   %eax,%eax
506a45:	75 07                	jne    0x506a4e
506a47:	33 c0                	xor    %eax,%eax
506a49:	e9 85 01 00 00       	jmp    0x506bd3
506a4e:	8b 1f                	mov    (%edi),%ebx
506a50:	8b 77 04             	mov    0x4(%edi),%esi
506a53:	4e                   	dec    %esi
506a54:	33 c0                	xor    %eax,%eax
506a56:	8a 03                	mov    (%ebx),%al
506a58:	01 04 24             	add    %eax,(%esp)
506a5b:	43                   	inc    %ebx
506a5c:	83 2c 24 02          	subl   $0x2,(%esp)
506a60:	83 3c 24 0c          	cmpl   $0xc,(%esp)
506a64:	0f 8c 32 01 00 00    	jl     0x506b9c
506a6a:	33 d2                	xor    %edx,%edx
506a6c:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
506a70:	89 54 24 04          	mov    %edx,0x4(%esp)
506a74:	89 4c 24 18          	mov    %ecx,0x18(%esp)
506a78:	85 f6                	test   %esi,%esi
506a7a:	75 15                	jne    0x506a91
506a7c:	8b c5                	mov    %ebp,%eax
506a7e:	ff 57 0c             	call   *0xc(%edi)
506a81:	85 c0                	test   %eax,%eax
506a83:	75 07                	jne    0x506a8c
506a85:	33 c0                	xor    %eax,%eax
506a87:	e9 47 01 00 00       	jmp    0x506bd3
506a8c:	8b 1f                	mov    (%edi),%ebx
506a8e:	8b 77 04             	mov    0x4(%edi),%esi
506a91:	4e                   	dec    %esi
506a92:	8b 44 24 18          	mov    0x18(%esp),%eax
506a96:	8a 13                	mov    (%ebx),%dl
506a98:	88 10                	mov    %dl,(%eax)
506a9a:	43                   	inc    %ebx
506a9b:	ff 44 24 04          	incl   0x4(%esp)
506a9f:	ff 44 24 18          	incl   0x18(%esp)
506aa3:	83 7c 24 04 0c       	cmpl   $0xc,0x4(%esp)
506aa8:	7c ce                	jl     0x506a78
506aaa:	83 2c 24 0c          	subl   $0xc,(%esp)
506aae:	80 7c 24 1c 41       	cmpb   $0x41,0x1c(%esp)
506ab3:	0f 85 c2 00 00 00    	jne    0x506b7b
506ab9:	80 7c 24 1d 64       	cmpb   $0x64,0x1d(%esp)
506abe:	0f 85 b7 00 00 00    	jne    0x506b7b
506ac4:	80 7c 24 1e 6f       	cmpb   $0x6f,0x1e(%esp)
506ac9:	0f 85 ac 00 00 00    	jne    0x506b7b
506acf:	80 7c 24 1f 62       	cmpb   $0x62,0x1f(%esp)
506ad4:	0f 85 a1 00 00 00    	jne    0x506b7b
506ada:	80 7c 24 20 65       	cmpb   $0x65,0x20(%esp)
506adf:	0f 85 96 00 00 00    	jne    0x506b7b
506ae5:	33 c9                	xor    %ecx,%ecx
506ae7:	33 c0                	xor    %eax,%eax
506ae9:	8a 4c 24 21          	mov    0x21(%esp),%cl
506aed:	8a 44 24 22          	mov    0x22(%esp),%al
506af1:	c1 e1 08             	shl    $0x8,%ecx
506af4:	33 d2                	xor    %edx,%edx
506af6:	03 c8                	add    %eax,%ecx
506af8:	33 c0                	xor    %eax,%eax
506afa:	89 4c 24 08          	mov    %ecx,0x8(%esp)
506afe:	33 c9                	xor    %ecx,%ecx
506b00:	8a 54 24 23          	mov    0x23(%esp),%dl
506b04:	8a 4c 24 24          	mov    0x24(%esp),%cl
506b08:	c1 e2 08             	shl    $0x8,%edx
506b0b:	03 d1                	add    %ecx,%edx
506b0d:	89 54 24 0c          	mov    %edx,0xc(%esp)
506b11:	33 d2                	xor    %edx,%edx
506b13:	8a 44 24 25          	mov    0x25(%esp),%al
506b17:	8a 54 24 26          	mov    0x26(%esp),%dl
506b1b:	c1 e0 08             	shl    $0x8,%eax
506b1e:	03 c2                	add    %edx,%eax
506b20:	33 c9                	xor    %ecx,%ecx
506b22:	89 44 24 10          	mov    %eax,0x10(%esp)
506b26:	8a 4c 24 27          	mov    0x27(%esp),%cl
506b2a:	89 4c 24 14          	mov    %ecx,0x14(%esp)
506b2e:	8b 45 00             	mov    0x0(%ebp),%eax
506b31:	83 c0 18             	add    $0x18,%eax
506b34:	8b 54 24 08          	mov    0x8(%esp),%edx
506b38:	89 10                	mov    %edx,(%eax)
506b3a:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
506b3e:	89 48 04             	mov    %ecx,0x4(%eax)
506b41:	8b 54 24 10          	mov    0x10(%esp),%edx
506b45:	89 50 08             	mov    %edx,0x8(%eax)
506b48:	8b 4c 24 14          	mov    0x14(%esp),%ecx
506b4c:	89 48 0c             	mov    %ecx,0xc(%eax)
506b4f:	8b 45 00             	mov    0x0(%ebp),%eax
506b52:	c7 40 14 4b 00 00 00 	movl   $0x4b,0x14(%eax)
506b59:	ba 01 00 00 00       	mov    $0x1,%edx
506b5e:	8b c5                	mov    %ebp,%eax
506b60:	8b 08                	mov    (%eax),%ecx
506b62:	ff 51 04             	call   *0x4(%ecx)
506b65:	c7 85 20 01 00 00 01 	movl   $0x1,0x120(%ebp)
506b6c:	00 00 00
506b6f:	8a 44 24 14          	mov    0x14(%esp),%al
506b73:	88 85 24 01 00 00    	mov    %al,0x124(%ebp)
506b79:	eb 3d                	jmp    0x506bb8
506b7b:	8b 45 00             	mov    0x0(%ebp),%eax
506b7e:	c7 40 14 4d 00 00 00 	movl   $0x4d,0x14(%eax)
506b85:	8b 14 24             	mov    (%esp),%edx
506b88:	83 c2 0c             	add    $0xc,%edx
506b8b:	89 50 18             	mov    %edx,0x18(%eax)
506b8e:	8b c5                	mov    %ebp,%eax
506b90:	ba 01 00 00 00       	mov    $0x1,%edx
506b95:	8b 08                	mov    (%eax),%ecx
506b97:	ff 51 04             	call   *0x4(%ecx)
506b9a:	eb 1c                	jmp    0x506bb8
506b9c:	8b 45 00             	mov    0x0(%ebp),%eax
506b9f:	c7 40 14 4d 00 00 00 	movl   $0x4d,0x14(%eax)
506ba6:	8b 14 24             	mov    (%esp),%edx
506ba9:	89 50 18             	mov    %edx,0x18(%eax)
506bac:	8b c5                	mov    %ebp,%eax
506bae:	ba 01 00 00 00       	mov    $0x1,%edx
506bb3:	8b 08                	mov    (%eax),%ecx
506bb5:	ff 51 04             	call   *0x4(%ecx)
506bb8:	89 1f                	mov    %ebx,(%edi)
506bba:	89 77 04             	mov    %esi,0x4(%edi)
506bbd:	83 3c 24 00          	cmpl   $0x0,(%esp)
506bc1:	7e 0b                	jle    0x506bce
506bc3:	8b 14 24             	mov    (%esp),%edx
506bc6:	8b c5                	mov    %ebp,%eax
506bc8:	8b 48 14             	mov    0x14(%eax),%ecx
506bcb:	ff 51 10             	call   *0x10(%ecx)
506bce:	b8 01 00 00 00       	mov    $0x1,%eax
506bd3:	83 c4 28             	add    $0x28,%esp
506bd6:	5d                   	pop    %ebp
506bd7:	5f                   	pop    %edi
506bd8:	5e                   	pop    %esi
506bd9:	5b                   	pop    %ebx
506bda:	c3                   	ret
506bdb:	90                   	nop
506bdc:	53                   	push   %ebx
506bdd:	56                   	push   %esi
506bde:	57                   	push   %edi
506bdf:	55                   	push   %ebp
506be0:	8b d8                	mov    %eax,%ebx
506be2:	83 c4 f4             	add    $0xfffffff4,%esp
506be5:	8b 43 14             	mov    0x14(%ebx),%eax
506be8:	89 44 24 08          	mov    %eax,0x8(%esp)
506bec:	8b 44 24 08          	mov    0x8(%esp),%eax
506bf0:	8b 54 24 08          	mov    0x8(%esp),%edx
506bf4:	8b 68 04             	mov    0x4(%eax),%ebp
506bf7:	8b 3a                	mov    (%edx),%edi
506bf9:	85 ed                	test   %ebp,%ebp
506bfb:	75 21                	jne    0x506c1e
506bfd:	8b 74 24 08          	mov    0x8(%esp),%esi
506c01:	8b c3                	mov    %ebx,%eax
506c03:	ff 56 0c             	call   *0xc(%esi)
506c06:	85 c0                	test   %eax,%eax
506c08:	75 07                	jne    0x506c11
506c0a:	33 c0                	xor    %eax,%eax
506c0c:	e9 54 01 00 00       	jmp    0x506d65
506c11:	8b 54 24 08          	mov    0x8(%esp),%edx
506c15:	8b 44 24 08          	mov    0x8(%esp),%eax
506c19:	8b 68 04             	mov    0x4(%eax),%ebp
506c1c:	8b 3a                	mov    (%edx),%edi
506c1e:	33 c0                	xor    %eax,%eax
506c20:	4d                   	dec    %ebp
506c21:	8a 07                	mov    (%edi),%al
506c23:	47                   	inc    %edi
506c24:	c1 e0 08             	shl    $0x8,%eax
506c27:	85 ed                	test   %ebp,%ebp
506c29:	89 04 24             	mov    %eax,(%esp)
506c2c:	75 21                	jne    0x506c4f
506c2e:	8b 74 24 08          	mov    0x8(%esp),%esi
506c32:	8b c3                	mov    %ebx,%eax
506c34:	ff 56 0c             	call   *0xc(%esi)
506c37:	85 c0                	test   %eax,%eax
506c39:	75 07                	jne    0x506c42
506c3b:	33 c0                	xor    %eax,%eax
506c3d:	e9 23 01 00 00       	jmp    0x506d65
506c42:	8b 54 24 08          	mov    0x8(%esp),%edx
506c46:	8b 44 24 08          	mov    0x8(%esp),%eax
506c4a:	8b 68 04             	mov    0x4(%eax),%ebp
506c4d:	8b 3a                	mov    (%edx),%edi
506c4f:	4d                   	dec    %ebp
506c50:	33 c0                	xor    %eax,%eax
506c52:	8a 07                	mov    (%edi),%al
506c54:	01 04 24             	add    %eax,(%esp)
506c57:	47                   	inc    %edi
506c58:	83 2c 24 02          	subl   $0x2,(%esp)
506c5c:	83 3c 24 00          	cmpl   $0x0,(%esp)
506c60:	0f 8e ed 00 00 00    	jle    0x506d53
506c66:	85 ed                	test   %ebp,%ebp
506c68:	75 21                	jne    0x506c8b
506c6a:	8b 74 24 08          	mov    0x8(%esp),%esi
506c6e:	8b c3                	mov    %ebx,%eax
506c70:	ff 56 0c             	call   *0xc(%esi)
506c73:	85 c0                	test   %eax,%eax
506c75:	75 07                	jne    0x506c7e
506c77:	33 c0                	xor    %eax,%eax
506c79:	e9 e7 00 00 00       	jmp    0x506d65
506c7e:	8b 54 24 08          	mov    0x8(%esp),%edx
506c82:	8b 44 24 08          	mov    0x8(%esp),%eax
506c86:	8b 68 04             	mov    0x4(%eax),%ebp
506c89:	8b 3a                	mov    (%edx),%edi
506c8b:	0f b6 37             	movzbl (%edi),%esi
506c8e:	47                   	inc    %edi
506c8f:	4d                   	dec    %ebp
506c90:	85 ed                	test   %ebp,%ebp
506c92:	75 21                	jne    0x506cb5
506c94:	8b 7c 24 08          	mov    0x8(%esp),%edi
506c98:	8b c3                	mov    %ebx,%eax
506c9a:	ff 57 0c             	call   *0xc(%edi)
506c9d:	85 c0                	test   %eax,%eax
506c9f:	75 07                	jne    0x506ca8
506ca1:	33 c0                	xor    %eax,%eax
506ca3:	e9 bd 00 00 00       	jmp    0x506d65
506ca8:	8b 54 24 08          	mov    0x8(%esp),%edx
506cac:	8b 44 24 08          	mov    0x8(%esp),%eax
506cb0:	8b 68 04             	mov    0x4(%eax),%ebp
506cb3:	8b 3a                	mov    (%edx),%edi
506cb5:	33 c0                	xor    %eax,%eax
506cb7:	4d                   	dec    %ebp
506cb8:	8a 07                	mov    (%edi),%al
506cba:	47                   	inc    %edi
506cbb:	89 44 24 04          	mov    %eax,0x4(%esp)
506cbf:	83 2c 24 02          	subl   $0x2,(%esp)
506cc3:	8b 03                	mov    (%ebx),%eax
506cc5:	c7 40 14 4e 00 00 00 	movl   $0x4e,0x14(%eax)
506ccc:	89 70 18             	mov    %esi,0x18(%eax)
506ccf:	8b 54 24 04          	mov    0x4(%esp),%edx
506cd3:	89 50 1c             	mov    %edx,0x1c(%eax)
506cd6:	8b c3                	mov    %ebx,%eax
506cd8:	ba 01 00 00 00       	mov    $0x1,%edx
506cdd:	8b 08                	mov    (%eax),%ecx
506cdf:	ff 51 04             	call   *0x4(%ecx)
506ce2:	85 f6                	test   %esi,%esi
506ce4:	7c 05                	jl     0x506ceb
506ce6:	83 fe 20             	cmp    $0x20,%esi
506ce9:	7c 12                	jl     0x506cfd
506ceb:	8b 03                	mov    (%ebx),%eax
506ced:	c7 40 14 1a 00 00 00 	movl   $0x1a,0x14(%eax)
506cf4:	89 70 18             	mov    %esi,0x18(%eax)
506cf7:	8b c3                	mov    %ebx,%eax
506cf9:	8b 10                	mov    (%eax),%edx
506cfb:	ff 12                	call   *(%edx)
506cfd:	83 fe 10             	cmp    $0x10,%esi
506d00:	7c 0d                	jl     0x506d0f
506d02:	8a 4c 24 04          	mov    0x4(%esp),%cl
506d06:	88 8c 33 f0 00 00 00 	mov    %cl,0xf0(%ebx,%esi,1)
506d0d:	eb 3a                	jmp    0x506d49
506d0f:	8a 44 24 04          	mov    0x4(%esp),%al
506d13:	24 0f                	and    $0xf,%al
506d15:	88 84 33 e0 00 00 00 	mov    %al,0xe0(%ebx,%esi,1)
506d1c:	8b 44 24 04          	mov    0x4(%esp),%eax
506d20:	c1 f8 04             	sar    $0x4,%eax
506d23:	88 84 33 f0 00 00 00 	mov    %al,0xf0(%ebx,%esi,1)
506d2a:	3a 84 33 e0 00 00 00 	cmp    0xe0(%ebx,%esi,1),%al
506d31:	73 16                	jae    0x506d49
506d33:	8b 03                	mov    (%ebx),%eax
506d35:	c7 40 14 1b 00 00 00 	movl   $0x1b,0x14(%eax)
506d3c:	8b 54 24 04          	mov    0x4(%esp),%edx
506d40:	89 50 18             	mov    %edx,0x18(%eax)
506d43:	8b c3                	mov    %ebx,%eax
506d45:	8b 10                	mov    (%eax),%edx
506d47:	ff 12                	call   *(%edx)
506d49:	83 3c 24 00          	cmpl   $0x0,(%esp)
506d4d:	0f 8f 13 ff ff ff    	jg     0x506c66
506d53:	8b 4c 24 08          	mov    0x8(%esp),%ecx
506d57:	89 39                	mov    %edi,(%ecx)
506d59:	8b 44 24 08          	mov    0x8(%esp),%eax
506d5d:	89 68 04             	mov    %ebp,0x4(%eax)
506d60:	b8 01 00 00 00       	mov    $0x1,%eax