5209d8:	89 0b                	mov    %ecx,(%ebx)
5209da:	8d 41 01             	lea    0x1(%ecx),%eax
5209dd:	8d 4f 01             	lea    0x1(%edi),%ecx
5209e0:	03 c7                	add    %edi,%eax
5209e2:	51                   	push   %ecx
5209e3:	ff 75 b4             	push   -0x4c(%ebp)
5209e6:	89 45 bc             	mov    %eax,-0x44(%ebp)
5209e9:	ff 33                	push   (%ebx)
5209eb:	e8 10 25 0c 00       	call   0x5e2f00
5209f0:	8b 45 b0             	mov    -0x50(%ebp),%eax
5209f3:	33 c9                	xor    %ecx,%ecx
5209f5:	8b 7d dc             	mov    -0x24(%ebp),%edi
5209f8:	83 c4 0c             	add    $0xc,%esp
5209fb:	8b 55 e0             	mov    -0x20(%ebp),%edx
5209fe:	85 c0                	test   %eax,%eax
520a00:	88 43 36             	mov    %al,0x36(%ebx)
520a03:	8b 43 38             	mov    0x38(%ebx),%eax
520a06:	0f 95 c1             	setne  %cl
520a09:	83 e0 f7             	and    $0xfffffff7,%eax
520a0c:	c1 e1 03             	shl    $0x3,%ecx
520a0f:	0b c8                	or     %eax,%ecx
520a11:	89 53 0c             	mov    %edx,0xc(%ebx)
520a14:	0f b6 45 30          	movzbl 0x30(%ebp),%eax
520a18:	83 e1 fc             	and    $0xfffffffc,%ecx
520a1b:	83 e0 03             	and    $0x3,%eax
520a1e:	0b c8                	or     %eax,%ecx
520a20:	89 4b 38             	mov    %ecx,0x38(%ebx)
520a23:	8b 47 10             	mov    0x10(%edi),%eax
520a26:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
520a29:	8b 44 01 0c          	mov    0xc(%ecx,%eax,1),%eax
520a2d:	89 43 18             	mov    %eax,0x18(%ebx)
520a30:	8b 45 cc             	mov    -0x34(%ebp),%eax
520a33:	66 8b 00             	mov    (%eax),%ax
520a36:	66 89 43 32          	mov    %ax,0x32(%ebx)
520a3a:	8b 45 a8             	mov    -0x58(%ebp),%eax
520a3d:	85 c0                	test   %eax,%eax
520a3f:	74 1c                	je     0x520a5d
520a41:	6a 00                	push   $0x0
520a43:	50                   	push   %eax
520a44:	6a 02                	push   $0x2
520a46:	52                   	push   %edx
520a47:	56                   	push   %esi
520a48:	e8 33 7a 01 00       	call   0x538480
520a4d:	8b 45 a8             	mov    -0x58(%ebp),%eax
520a50:	83 c4 14             	add    $0x14,%esp
520a53:	89 43 24             	mov    %eax,0x24(%ebx)
520a56:	c7 45 a8 00 00 00 00 	movl   $0x0,-0x58(%ebp)
520a5d:	8b 45 d8             	mov    -0x28(%ebp),%eax
520a60:	8b 40 0c             	mov    0xc(%eax),%eax
520a63:	80 78 4c 04          	cmpb   $0x4,0x4c(%eax)
520a67:	1b c0                	sbb    %eax,%eax
520a69:	f7 d8                	neg    %eax
520a6b:	48                   	dec    %eax
520a6c:	80 be c8 00 00 00 02 	cmpb   $0x2,0xc8(%esi)
520a73:	89 45 a4             	mov    %eax,-0x5c(%ebp)
520a76:	8b 45 cc             	mov    -0x34(%ebp),%eax
520a79:	8d 48 04             	lea    0x4(%eax),%ecx
520a7c:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
520a7f:	72 0a                	jb     0x520a8b
520a81:	89 43 28             	mov    %eax,0x28(%ebx)
520a84:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
520a8b:	33 d2                	xor    %edx,%edx
520a8d:	33 c0                	xor    %eax,%eax
520a8f:	89 55 d8             	mov    %edx,-0x28(%ebp)
520a92:	66 3b 43 32          	cmp    0x32(%ebx),%ax
520a96:	0f 83 5d 01 00 00    	jae    0x520bf9
520a9c:	0f 1f 40 00          	nopl   0x0(%eax)
520aa0:	ff 31                	push   (%ecx)
520aa2:	e8 c9 d1 01 00       	call   0x53dc70
520aa7:	8b 45 c4             	mov    -0x3c(%ebp),%eax
520aaa:	6a 00                	push   $0x0
520aac:	ff 30                	push   (%eax)
520aae:	6a 20                	push   $0x20
520ab0:	ff 75 e0             	push   -0x20(%ebp)
520ab3:	56                   	push   %esi
520ab4:	e8 c7 79 01 00       	call   0x538480
520ab9:	83 c4 18             	add    $0x18,%esp
520abc:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
520ac0:	0f 85 41 05 00 00    	jne    0x521007
520ac6:	8b 45 c4             	mov    -0x3c(%ebp),%eax
520ac9:	ff 30                	push   (%eax)
520acb:	e8 50 72 00 00       	call   0x527d20
520ad0:	83 c4 04             	add    $0x4,%esp
520ad3:	80 38 a4             	cmpb   $0xa4,(%eax)
520ad6:	74 3c                	je     0x520b14
520ad8:	8b 45 e0             	mov    -0x20(%ebp),%eax
520adb:	3b 86 e4 00 00 00    	cmp    0xe4(%esi),%eax
520ae1:	0f 84 5c 01 00 00    	je     0x520c43
520ae7:	83 7b 28 00          	cmpl   $0x0,0x28(%ebx)
520aeb:	75 0d                	jne    0x520afa
520aed:	8b 45 cc             	mov    -0x34(%ebp),%eax
520af0:	89 43 28             	mov    %eax,0x28(%ebx)
520af3:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
520afa:	8b 43 04             	mov    0x4(%ebx),%eax
520afd:	b9 fe ff ff ff       	mov    $0xfffffffe,%ecx
520b02:	8b 55 d8             	mov    -0x28(%ebp),%edx
520b05:	8b f9                	mov    %ecx,%edi
520b07:	66 89 3c 50          	mov    %di,(%eax,%edx,2)
520b0b:	83 63 38 f7          	andl   $0xfffffff7,0x38(%ebx)
520b0f:	8b 7d dc             	mov    -0x24(%ebp),%edi
520b12:	eb 40                	jmp    0x520b54
520b14:	0f bf 48 20          	movswl 0x20(%eax),%ecx
520b18:	8b 45 e0             	mov    -0x20(%ebp),%eax
520b1b:	85 c9                	test   %ecx,%ecx
520b1d:	79 06                	jns    0x520b25
520b1f:	0f bf 48 28          	movswl 0x28(%eax),%ecx
520b23:	eb 25                	jmp    0x520b4a
520b25:	8b 40 04             	mov    0x4(%eax),%eax
520b28:	8d 14 89             	lea    (%ecx,%ecx,4),%edx
520b2b:	80 7c 90 0c 00       	cmpb   $0x0,0xc(%eax,%edx,4)
520b30:	75 04                	jne    0x520b36
520b32:	83 63 38 f7          	andl   $0xfffffff7,0x38(%ebx)
520b36:	8b 45 e0             	mov    -0x20(%ebp),%eax
520b39:	8b 40 04             	mov    0x4(%eax),%eax
520b3c:	f6 44 90 10 20       	testb  $0x20,0x10(%eax,%edx,4)
520b41:	74 07                	je     0x520b4a
520b43:	81 4b 38 00 04 00 00 	orl    $0x400,0x38(%ebx)
520b4a:	8b 43 04             	mov    0x4(%ebx),%eax
520b4d:	8b 55 d8             	mov    -0x28(%ebp),%edx
520b50:	66 89 0c 50          	mov    %cx,(%eax,%edx,2)
520b54:	8b 45 c4             	mov    -0x3c(%ebp),%eax
520b57:	8b 00                	mov    (%eax),%eax
520b59:	80 38 6f             	cmpb   $0x6f,(%eax)
520b5c:	75 2c                	jne    0x520b8a
520b5e:	8b 70 08             	mov    0x8(%eax),%esi
520b61:	56                   	push   %esi
520b62:	e8 29 d1 01 00       	call   0x53dc90
520b67:	8d 78 01             	lea    0x1(%eax),%edi
520b6a:	57                   	push   %edi
520b6b:	56                   	push   %esi
520b6c:	8b 75 bc             	mov    -0x44(%ebp),%esi
520b6f:	56                   	push   %esi
520b70:	e8 8b 23 0c 00       	call   0x5e2f00
520b75:	8b c6                	mov    %esi,%eax
520b77:	89 75 d0             	mov    %esi,-0x30(%ebp)
520b7a:	83 c4 10             	add    $0x10,%esp
520b7d:	03 f7                	add    %edi,%esi
520b7f:	8b 7d dc             	mov    -0x24(%ebp),%edi
520b82:	89 75 bc             	mov    %esi,-0x44(%ebp)
520b85:	8b 75 c0             	mov    -0x40(%ebp),%esi
520b88:	eb 14                	jmp    0x520b9e
520b8a:	85 c9                	test   %ecx,%ecx
520b8c:	78 14                	js     0x520ba2
520b8e:	8b 45 e0             	mov    -0x20(%ebp),%eax
520b91:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
520b94:	8b 40 04             	mov    0x4(%eax),%eax
520b97:	8b 44 88 08          	mov    0x8(%eax,%ecx,4),%eax
520b9b:	89 45 d0             	mov    %eax,-0x30(%ebp)
520b9e:	85 c0                	test   %eax,%eax
520ba0:	75 08                	jne    0x520baa
520ba2:	b8 40 1c 6b 00       	mov    $0x6b1c40,%eax
520ba7:	89 45 d0             	mov    %eax,-0x30(%ebp)
520baa:	80 bf a5 00 00 00 00 	cmpb   $0x0,0xa5(%edi)
520bb1:	75 12                	jne    0x520bc5
520bb3:	50                   	push   %eax
520bb4:	56                   	push   %esi
520bb5:	e8 c6 fe 00 00       	call   0x530a80
520bba:	83 c4 08             	add    $0x8,%esp
520bbd:	85 c0                	test   %eax,%eax
520bbf:	0f 84 42 04 00 00    	je     0x521007
520bc5:	8b 55 d8             	mov    -0x28(%ebp),%edx
520bc8:	8b 43 20             	mov    0x20(%ebx),%eax
520bcb:	8b 4d d0             	mov    -0x30(%ebp),%ecx
520bce:	89 0c 90             	mov    %ecx,(%eax,%edx,4)
520bd1:	8b 45 c4             	mov    -0x3c(%ebp),%eax
520bd4:	8a 48 08             	mov    0x8(%eax),%cl
520bd7:	8b 43 1c             	mov    0x1c(%ebx),%eax
520bda:	22 4d a4             	and    -0x5c(%ebp),%cl
520bdd:	88 0c 02             	mov    %cl,(%edx,%eax,1)
520be0:	42                   	inc    %edx
520be1:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
520be4:	0f b7 43 32          	movzwl 0x32(%ebx),%eax
520be8:	83 c1 14             	add    $0x14,%ecx
520beb:	89 55 d8             	mov    %edx,-0x28(%ebp)
520bee:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
520bf1:	3b d0                	cmp    %eax,%edx
520bf3:	0f 8c a7 fe ff ff    	jl     0x520aa0
520bf9:	8b 4d b8             	mov    -0x48(%ebp),%ecx
520bfc:	85 c9                	test   %ecx,%ecx
520bfe:	0f 84 83 00 00 00    	je     0x520c87
520c04:	8b d1                	mov    %ecx,%edx
520c06:	33 c0                	xor    %eax,%eax
520c08:	33 ff                	xor    %edi,%edi
520c0a:	66 3b 42 32          	cmp    0x32(%edx),%ax
520c0e:	0f 83 87 00 00 00    	jae    0x520c9b
520c14:	8b 75 d8             	mov    -0x28(%ebp),%esi
520c17:	8b 42 04             	mov    0x4(%edx),%eax
520c1a:	57                   	push   %edi
520c1b:	52                   	push   %edx
520c1c:	0f bf 04 78          	movswl (%eax,%edi,2),%eax
520c20:	89 45 a4             	mov    %eax,-0x5c(%ebp)
520c23:	0f b7 43 32          	movzwl 0x32(%ebx),%eax
520c27:	50                   	push   %eax
520c28:	53                   	push   %ebx
520c29:	e8 72 70 fe ff       	call   0x507ca0
520c2e:	8b 55 b8             	mov    -0x48(%ebp),%edx
520c31:	83 c4 10             	add    $0x10,%esp
520c34:	85 c0                	test   %eax,%eax
520c36:	74 1e                	je     0x520c56
520c38:	b8 ff ff 00 00       	mov    $0xffff,%eax
520c3d:	66 01 43 34          	add    %ax,0x34(%ebx)
520c41:	eb 36                	jmp    0x520c79
520c43:	68 d0 a4 6b 00       	push   $0x6ba4d0
520c48:	56                   	push   %esi
520c49:	e8 12 26 00 00       	call   0x523260
520c4e:	83 c4 08             	add    $0x8,%esp
520c51:	e9 b1 03 00 00       	jmp    0x521007
520c56:	8b 43 04             	mov    0x4(%ebx),%eax
520c59:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
520c5c:	66 89 0c 70          	mov    %cx,(%eax,%esi,2)
520c60:	8b 42 20             	mov    0x20(%edx),%eax
520c63:	8b 4b 20             	mov    0x20(%ebx),%ecx
520c66:	8b 04 b8             	mov    (%eax,%edi,4),%eax
520c69:	89 04 b1             	mov    %eax,(%ecx,%esi,4)
520c6c:	8b 42 1c             	mov    0x1c(%edx),%eax
520c6f:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
520c72:	8a 04 07             	mov    (%edi,%eax,1),%al
520c75:	88 04 0e             	mov    %al,(%esi,%ecx,1)
520c78:	46                   	inc    %esi
520c79:	0f b7 42 32          	movzwl 0x32(%edx),%eax
520c7d:	47                   	inc    %edi
520c7e:	3b f8                	cmp    %eax,%edi
520c80:	7c 95                	jl     0x520c17
520c82:	8b 75 c0             	mov    -0x40(%ebp),%esi
520c85:	eb 14                	jmp    0x520c9b
520c87:	8b 43 04             	mov    0x4(%ebx),%eax
520c8a:	83 c9 ff             	or     $0xffffffff,%ecx
520c8d:	66 89 0c 50          	mov    %cx,(%eax,%edx,2)
520c91:	8b 43 20             	mov    0x20(%ebx),%eax
520c94:	c7 04 90 40 1c 6b 00 	movl   $0x6b1c40,(%eax,%edx,4)
520c9b:	53                   	push   %ebx
520c9c:	e8 cf 0b 00 00       	call   0x521870
520ca1:	83 c4 04             	add    $0x4,%esp
520ca4:	83 be e4 00 00 00 00 	cmpl   $0x0,0xe4(%esi)
520cab:	75 09                	jne    0x520cb6
520cad:	53                   	push   %ebx
520cae:	e8 ad dc fd ff       	call   0x4fe960
520cb3:	83 c4 04             	add    $0x4,%esp
520cb6:	53                   	push   %ebx
520cb7:	e8 a4 0e ff ff       	call   0x511b60
520cbc:	83 c4 04             	add    $0x4,%esp
520cbf:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
520cc3:	74 51                	je     0x520d16
520cc5:	8b 55 e0             	mov    -0x20(%ebp),%edx
520cc8:	0f b7 4b 34          	movzwl 0x34(%ebx),%ecx
520ccc:	0f bf 42 2a          	movswl 0x2a(%edx),%eax
520cd0:	3b c8                	cmp    %eax,%ecx
520cd2:	7c 42                	jl     0x520d16
520cd4:	83 4b 38 20          	orl    $0x20,0x38(%ebx)
520cd8:	33 ff                	xor    %edi,%edi
520cda:	0f bf 42 2a          	movswl 0x2a(%edx),%eax
520cde:	89 45 bc             	mov    %eax,-0x44(%ebp)
520ce1:	85 c0                	test   %eax,%eax
520ce3:	7e 31                	jle    0x520d16
520ce5:	0f b7 42 28          	movzwl 0x28(%edx),%eax
520ce9:	0f bf c8             	movswl %ax,%ecx
520cec:	8b 45 bc             	mov    -0x44(%ebp),%eax
520cef:	89 4d a4             	mov    %ecx,-0x5c(%ebp)
520cf2:	3b f9                	cmp    %ecx,%edi
520cf4:	74 15                	je     0x520d0b
520cf6:	57                   	push   %edi
520cf7:	53                   	push   %ebx
520cf8:	e8 23 d1 01 00       	call   0x53de20
520cfd:	83 c4 08             	add    $0x8,%esp
520d00:	66 85 c0             	test   %ax,%ax
520d03:	78 0d                	js     0x520d12
520d05:	8b 45 bc             	mov    -0x44(%ebp),%eax
520d08:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
520d0b:	47                   	inc    %edi
520d0c:	3b f8                	cmp    %eax,%edi
520d0e:	7c e2                	jl     0x520cf2
520d10:	eb 04                	jmp    0x520d16
520d12:	83 63 38 df          	andl   $0xffffffdf,0x38(%ebx)
520d16:	8b 45 e0             	mov    -0x20(%ebp),%eax
520d19:	3b 86 e4 00 00 00    	cmp    0xe4(%esi),%eax
520d1f:	0f 85 77 00 00 00    	jne    0x520d9c
520d25:	8b 48 08             	mov    0x8(%eax),%ecx
520d28:	89 4d d8             	mov    %ecx,-0x28(%ebp)
520d2b:	85 c9                	test   %ecx,%ecx
520d2d:	74 6d                	je     0x520d9c
520d2f:	0f b7 53 32          	movzwl 0x32(%ebx),%edx
520d33:	0f b7 41 32          	movzwl 0x32(%ecx),%eax
520d37:	66 3b c2             	cmp    %dx,%ax
520d3a:	75 50                	jne    0x520d8c
520d3c:	8b d0                	mov    %eax,%edx
520d3e:	33 ff                	xor    %edi,%edi
520d40:	89 55 bc             	mov    %edx,-0x44(%ebp)
520d43:	85 d2                	test   %edx,%edx
520d45:	74 3d                	je     0x520d84
520d47:	8b 41 04             	mov    0x4(%ecx),%eax
520d4a:	8b 73 04             	mov    0x4(%ebx),%esi
520d4d:	2b c6                	sub    %esi,%eax
520d4f:	89 45 a4             	mov    %eax,-0x5c(%ebp)
520d52:	66 8b 04 30          	mov    (%eax,%esi,1),%ax
520d56:	66 3b 06             	cmp    (%esi),%ax
520d59:	75 29                	jne    0x520d84
520d5b:	8b 43 20             	mov    0x20(%ebx),%eax
520d5e:	ff 34 b8             	push   (%eax,%edi,4)
520d61:	8b 41 20             	mov    0x20(%ecx),%eax
520d64:	ff 34 b8             	push   (%eax,%edi,4)
520d67:	e8 c4 ce 01 00       	call   0x53dc30
520d6c:	8b 55 bc             	mov    -0x44(%ebp),%edx
520d6f:	83 c4 08             	add    $0x8,%esp
520d72:	8b 4d d8             	mov    -0x28(%ebp),%ecx
520d75:	85 c0                	test   %eax,%eax
520d77:	75 0b                	jne    0x520d84
520d79:	8b 45 a4             	mov    -0x5c(%ebp),%eax
520d7c:	47                   	inc    %edi
520d7d:	83 c6 02             	add    $0x2,%esi
520d80:	3b fa                	cmp    %edx,%edi
520d82:	7c ce                	jl     0x520d52
520d84:	3b fa                	cmp    %edx,%edi
520d86:	74 75                	je     0x520dfd
520d88:	0f b7 53 32          	movzwl 0x32(%ebx),%edx
520d8c:	8b 49 14             	mov    0x14(%ecx),%ecx
520d8f:	89 4d d8             	mov    %ecx,-0x28(%ebp)
520d92:	85 c9                	test   %ecx,%ecx
520d94:	75 9d                	jne    0x520d33
520d96:	8b 75 c0             	mov    -0x40(%ebp),%esi
520d99:	8b 45 e0             	mov    -0x20(%ebp),%eax
520d9c:	80 be c8 00 00 00 02 	cmpb   $0x2,0xc8(%esi)
520da3:	8b 7d dc             	mov    -0x24(%ebp),%edi
520da6:	0f 83 22 02 00 00    	jae    0x520fce
520dac:	80 bf a5 00 00 00 00 	cmpb   $0x0,0xa5(%edi)
520db3:	0f 84 d9 00 00 00    	je     0x520e92
520db9:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
520dbd:	0f 84 a2 00 00 00    	je     0x520e65
520dc3:	8b 87 a0 00 00 00    	mov    0xa0(%edi),%eax
520dc9:	53                   	push   %ebx
520dca:	89 43 2c             	mov    %eax,0x2c(%ebx)
520dcd:	e8 be d2 00 00       	call   0x52e090
520dd2:	83 c4 04             	add    $0x4,%esp
520dd5:	85 c0                	test   %eax,%eax
520dd7:	0f 84 88 00 00 00    	je     0x520e65
520ddd:	68 3c a5 6b 00       	push   $0x6ba53c
520de2:	56                   	push   %esi
520de3:	e8 78 24 00 00       	call   0x523260
520de8:	68 47 b9 01 00       	push   $0x1b947
520ded:	e8 be ef ff ff       	call   0x51fdb0
520df2:	83 c4 0c             	add    $0xc,%esp
520df5:	89 46 0c             	mov    %eax,0xc(%esi)
520df8:	e9 0a 02 00 00       	jmp    0x521007
520dfd:	8a 41 36             	mov    0x36(%ecx),%al
520e00:	8a 53 36             	mov    0x36(%ebx),%dl
520e03:	8b 75 c0             	mov    -0x40(%ebp),%esi
520e06:	3a c2                	cmp    %dl,%al
520e08:	74 28                	je     0x520e32
520e0a:	3c 0b                	cmp    $0xb,%al
520e0c:	74 18                	je     0x520e26
520e0e:	80 fa 0b             	cmp    $0xb,%dl