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
520e11:	74 13                	je     0x520e26
520e13:	6a 00                	push   $0x0
520e15:	68 10 a5 6b 00       	push   $0x6ba510
520e1a:	56                   	push   %esi
520e1b:	e8 40 24 00 00       	call   0x523260
520e20:	8b 4d d8             	mov    -0x28(%ebp),%ecx
520e23:	83 c4 0c             	add    $0xc,%esp
520e26:	80 79 36 0b          	cmpb   $0xb,0x36(%ecx)
520e2a:	75 06                	jne    0x520e32
520e2c:	8a 43 36             	mov    0x36(%ebx),%al
520e2f:	88 41 36             	mov    %al,0x36(%ecx)
520e32:	80 7d 30 02          	cmpb   $0x2,0x30(%ebp)
520e36:	75 0c                	jne    0x520e44
520e38:	8b 41 38             	mov    0x38(%ecx),%eax
520e3b:	83 e0 fe             	and    $0xfffffffe,%eax
520e3e:	83 c8 02             	or     $0x2,%eax
520e41:	89 41 38             	mov    %eax,0x38(%ecx)
520e44:	80 be c8 00 00 00 02 	cmpb   $0x2,0xc8(%esi)
520e4b:	0f 82 af 01 00 00    	jb     0x521000
520e51:	8b 86 e8 00 00 00    	mov    0xe8(%esi),%eax
520e57:	89 43 14             	mov    %eax,0x14(%ebx)
520e5a:	89 9e e8 00 00 00    	mov    %ebx,0xe8(%esi)
520e60:	e9 b0 01 00 00       	jmp    0x521015
520e65:	8b 43 18             	mov    0x18(%ebx),%eax
520e68:	53                   	push   %ebx
520e69:	ff 33                	push   (%ebx)
520e6b:	83 c0 18             	add    $0x18,%eax
520e6e:	50                   	push   %eax
520e6f:	e8 2c cc 00 00       	call   0x52daa0
520e74:	83 c4 0c             	add    $0xc,%esp
520e77:	85 c0                	test   %eax,%eax
520e79:	74 0e                	je     0x520e89
520e7b:	57                   	push   %edi
520e7c:	e8 0f 0a 01 00       	call   0x531890
520e81:	83 c4 04             	add    $0x4,%esp
520e84:	e9 7e 01 00 00       	jmp    0x521007
520e89:	83 4f 18 01          	orl    $0x1,0x18(%edi)
520e8d:	e9 3c 01 00 00       	jmp    0x520fce
520e92:	f6 40 24 80          	testb  $0x80,0x24(%eax)
520e96:	74 0b                	je     0x520ea3
520e98:	8b 45 d4             	mov    -0x2c(%ebp),%eax
520e9b:	85 c0                	test   %eax,%eax
520e9d:	0f 84 2e 01 00 00    	je     0x520fd1
520ea3:	ff 46 2c             	incl   0x2c(%esi)
520ea6:	8b 46 2c             	mov    0x2c(%esi),%eax
520ea9:	56                   	push   %esi
520eaa:	89 45 d0             	mov    %eax,-0x30(%ebp)
520ead:	e8 1e ca 00 00       	call   0x52d8d0
520eb2:	8b f8                	mov    %eax,%edi
520eb4:	83 c4 04             	add    $0x4,%esp
520eb7:	85 ff                	test   %edi,%edi
520eb9:	0f 84 41 01 00 00    	je     0x521000
520ebf:	ff 75 c8             	push   -0x38(%ebp)
520ec2:	6a 01                	push   $0x1
520ec4:	56                   	push   %esi
520ec5:	e8 86 93 ff ff       	call   0x51a250
520eca:	68 ad 00 00 00       	push   $0xad
520ecf:	57                   	push   %edi
520ed0:	e8 4b 0b 02 00       	call   0x541a20
520ed5:	6a 02                	push   $0x2
520ed7:	ff 75 d0             	push   -0x30(%ebp)
520eda:	89 43 2c             	mov    %eax,0x2c(%ebx)
520edd:	ff 75 c8             	push   -0x38(%ebp)
520ee0:	68 8b 00 00 00       	push   $0x8b
520ee5:	57                   	push   %edi
520ee6:	e8 55 0c 02 00       	call   0x541b40
520eeb:	83 c4 28             	add    $0x28,%esp
520eee:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
520ef2:	74 45                	je     0x520f39
520ef4:	8b 4d ac             	mov    -0x54(%ebp),%ecx
520ef7:	8b 96 c0 00 00 00    	mov    0xc0(%esi),%edx
520efd:	03 96 bc 00 00 00    	add    0xbc(%esi),%edx
520f03:	8b 09                	mov    (%ecx),%ecx
520f05:	2b d1                	sub    %ecx,%edx
520f07:	51                   	push   %ecx
520f08:	80 7c 11 ff 3b       	cmpb   $0x3b,-0x1(%ecx,%edx,1)
520f0d:	8d 42 ff             	lea    -0x1(%edx),%eax
520f10:	8b 4d b0             	mov    -0x50(%ebp),%ecx
520f13:	0f 45 c2             	cmovne %edx,%eax
520f16:	85 c9                	test   %ecx,%ecx
520f18:	50                   	push   %eax
520f19:	ba 50 a5 6b 00       	mov    $0x6ba550,%edx
520f1e:	b8 ad 57 6e 00       	mov    $0x6e57ad,%eax
520f23:	0f 45 c2             	cmovne %edx,%eax
520f26:	50                   	push   %eax
520f27:	68 58 a5 6b 00       	push   $0x6ba558
520f2c:	ff 75 dc             	push   -0x24(%ebp)
520f2f:	e8 0c 00 01 00       	call   0x530f40
520f34:	83 c4 14             	add    $0x14,%esp
520f37:	eb 02                	jmp    0x520f3b
520f39:	33 c0                	xor    %eax,%eax
520f3b:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
520f3e:	50                   	push   %eax
520f3f:	ff 75 d0             	push   -0x30(%ebp)
520f42:	89 45 b0             	mov    %eax,-0x50(%ebp)
520f45:	8b 45 e0             	mov    -0x20(%ebp),%eax
520f48:	ff 30                	push   (%eax)
520f4a:	8b 45 dc             	mov    -0x24(%ebp),%eax
520f4d:	ff 33                	push   (%ebx)
520f4f:	68 24 8a 6b 00       	push   $0x6b8a24
520f54:	8b 40 10             	mov    0x10(%eax),%eax
520f57:	ff 34 01             	push   (%ecx,%eax,1)
520f5a:	68 6c a5 6b 00       	push   $0x6ba56c
520f5f:	56                   	push   %esi
520f60:	e8 3b 07 01 00       	call   0x5316a0
520f65:	8b 45 b0             	mov    -0x50(%ebp),%eax
520f68:	83 c4 20             	add    $0x20,%esp
520f6b:	85 c0                	test   %eax,%eax
520f6d:	74 0c                	je     0x520f7b
520f6f:	50                   	push   %eax
520f70:	ff 75 dc             	push   -0x24(%ebp)
520f73:	e8 f8 03 00 00       	call   0x521370
520f78:	83 c4 08             	add    $0x8,%esp
520f7b:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
520f7f:	74 3e                	je     0x520fbf
520f81:	ff 75 d0             	push   -0x30(%ebp)
520f84:	53                   	push   %ebx
520f85:	56                   	push   %esi
520f86:	e8 55 67 01 00       	call   0x5376e0
520f8b:	ff 75 c8             	push   -0x38(%ebp)
520f8e:	56                   	push   %esi
520f8f:	e8 bc cf ff ff       	call   0x51df50
520f94:	ff 33                	push   (%ebx)
520f96:	68 9c a5 6b 00       	push   $0x6ba59c
520f9b:	ff 75 dc             	push   -0x24(%ebp)
520f9e:	e8 9d ff 00 00       	call   0x530f40
520fa3:	50                   	push   %eax
520fa4:	ff 75 c8             	push   -0x38(%ebp)
520fa7:	57                   	push   %edi
520fa8:	e8 a3 0d 02 00       	call   0x541d50
520fad:	6a 01                	push   $0x1
520faf:	6a 00                	push   $0x0
520fb1:	68 9e 00 00 00       	push   $0x9e
520fb6:	57                   	push   %edi
520fb7:	e8 24 0b 02 00       	call   0x541ae0
520fbc:	83 c4 3c             	add    $0x3c,%esp
520fbf:	ff 73 2c             	push   0x2c(%ebx)
520fc2:	57                   	push   %edi
520fc3:	e8 98 97 02 00       	call   0x54a760
520fc8:	8b 7d dc             	mov    -0x24(%ebp),%edi
520fcb:	83 c4 08             	add    $0x8,%esp
520fce:	8b 45 d4             	mov    -0x2c(%ebp),%eax
520fd1:	80 bf a5 00 00 00 00 	cmpb   $0x0,0xa5(%edi)
520fd8:	75 15                	jne    0x520fef
520fda:	85 c0                	test   %eax,%eax
520fdc:	74 11                	je     0x520fef
520fde:	80 be c8 00 00 00 02 	cmpb   $0x2,0xc8(%esi)
520fe5:	72 20                	jb     0x521007
520fe7:	89 9e e8 00 00 00    	mov    %ebx,0xe8(%esi)
520fed:	eb 26                	jmp    0x521015
520fef:	8b 45 e0             	mov    -0x20(%ebp),%eax
520ff2:	8b 55 e0             	mov    -0x20(%ebp),%edx
520ff5:	8b 40 08             	mov    0x8(%eax),%eax
520ff8:	89 43 14             	mov    %eax,0x14(%ebx)
520ffb:	89 5a 08             	mov    %ebx,0x8(%edx)
520ffe:	eb 18                	jmp    0x521018
521000:	8b 7d dc             	mov    -0x24(%ebp),%edi
521003:	eb 02                	jmp    0x521007
521005:	8b f8                	mov    %eax,%edi
521007:	85 db                	test   %ebx,%ebx
521009:	74 0a                	je     0x521015
52100b:	53                   	push   %ebx
52100c:	57                   	push   %edi
52100d:	e8 4e 93 00 00       	call   0x52a360
521012:	83 c4 08             	add    $0x8,%esp
521015:	8b 55 e0             	mov    -0x20(%ebp),%edx
521018:	8b 4a 08             	mov    0x8(%edx),%ecx
52101b:	83 c2 08             	add    $0x8,%edx
52101e:	85 c9                	test   %ecx,%ecx
521020:	74 37                	je     0x521059
521022:	80 79 36 05          	cmpb   $0x5,0x36(%ecx)
521026:	74 0b                	je     0x521033
521028:	8d 51 14             	lea    0x14(%ecx),%edx
52102b:	8b 0a                	mov    (%edx),%ecx
52102d:	85 c9                	test   %ecx,%ecx