523aa4:	8b 41 2c             	mov    0x2c(%ecx),%eax
523aa7:	85 c0                	test   %eax,%eax
523aa9:	74 1d                	je     0x523ac8
523aab:	0f b7 51 20          	movzwl 0x20(%ecx),%edx
523aaf:	66 85 d2             	test   %dx,%dx
523ab2:	78 e3                	js     0x523a97
523ab4:	8b 48 04             	mov    0x4(%eax),%ecx
523ab7:	85 c9                	test   %ecx,%ecx
523ab9:	74 dc                	je     0x523a97
523abb:	0f bf c2             	movswl %dx,%eax
523abe:	8d 04 80             	lea    (%eax,%eax,4),%eax
523ac1:	80 7c 81 0c 00       	cmpb   $0x0,0xc(%ecx,%eax,4)
523ac6:	75 cf                	jne    0x523a97
523ac8:	b8 01 00 00 00       	mov    $0x1,%eax
523acd:	5d                   	pop    %ebp
523ace:	c3                   	ret
523acf:	90                   	nop
523ad0:	97                   	xchg   %eax,%edi
523ad1:	3a 52 00             	cmp    0x0(%edx),%dl
523ad4:	9b                   	fwait
523ad5:	3a 52 00             	cmp    0x0(%edx),%dl
523ad8:	c8 3a 52 00          	enter  $0x523a,$0x0
523adc:	00 02                	add    %al,(%edx)
523ade:	02 02                	add    (%edx),%al
523ae0:	02 02                	add    (%edx),%al
523ae2:	02 02                	add    (%edx),%al
523ae4:	02 02                	add    (%edx),%al
523ae6:	02 02                	add    (%edx),%al
523ae8:	02 02                	add    (%edx),%al
523aea:	02 02                	add    (%edx),%al
523aec:	02 02                	add    (%edx),%al
523aee:	02 02                	add    (%edx),%al
523af0:	02 02                	add    (%edx),%al
523af2:	02 02                	add    (%edx),%al
523af4:	02 02                	add    (%edx),%al
523af6:	02 02                	add    (%edx),%al
523af8:	02 02                	add    (%edx),%al
523afa:	02 02                	add    (%edx),%al
523afc:	02 02                	add    (%edx),%al
523afe:	02 00                	add    (%eax),%al
523b00:	00 00                	add    %al,(%eax)
523b02:	02 02                	add    (%edx),%al
523b04:	02 02                	add    (%edx),%al
523b06:	02 02                	add    (%edx),%al
523b08:	02 02                	add    (%edx),%al
523b0a:	02 02                	add    (%edx),%al
523b0c:	02 01                	add    (%ecx),%al
523b0e:	cc                   	int3
523b0f:	cc                   	int3
523b10:	55                   	push   %ebp
523b11:	8b ec                	mov    %esp,%ebp
523b13:	56                   	push   %esi
523b14:	8b 75 0c             	mov    0xc(%ebp),%esi
523b17:	8b 4e 0c             	mov    0xc(%esi),%ecx
523b1a:	8a 01                	mov    (%ecx),%al
523b1c:	3c ad                	cmp    $0xad,%al
523b1e:	75 03                	jne    0x523b23
523b20:	8a 41 02             	mov    0x2(%ecx),%al
523b23:	3c ae                	cmp    $0xae,%al
523b25:	75 07                	jne    0x523b2e
523b27:	8b 41 14             	mov    0x14(%ecx),%eax
523b2a:	8b 10                	mov    (%eax),%edx
523b2c:	eb 13                	jmp    0x523b41
523b2e:	3c 88                	cmp    $0x88,%al
523b30:	75 0a                	jne    0x523b3c
523b32:	8b 41 14             	mov    0x14(%ecx),%eax
523b35:	8b 40 1c             	mov    0x1c(%eax),%eax
523b38:	8b 10                	mov    (%eax),%edx
523b3a:	eb 05                	jmp    0x523b41
523b3c:	ba 01 00 00 00       	mov    $0x1,%edx
523b41:	f7 46 04 00 08 00 00 	testl  $0x800,0x4(%esi)
523b48:	74 2d                	je     0x523b77
523b4a:	8b 46 14             	mov    0x14(%esi),%eax
523b4d:	8b 40 1c             	mov    0x1c(%eax),%eax
523b50:	8b 08                	mov    (%eax),%ecx
523b52:	3b d1                	cmp    %ecx,%edx
523b54:	74 70                	je     0x523bc6
523b56:	8b 45 08             	mov    0x8(%ebp),%eax
523b59:	83 78 24 00          	cmpl   $0x0,0x24(%eax)
523b5d:	75 10                	jne    0x523b6f
523b5f:	52                   	push   %edx
523b60:	51                   	push   %ecx
523b61:	68 78 91 6b 00       	push   $0x6b9178
523b66:	50                   	push   %eax
523b67:	e8 f4 f6 ff ff       	call   0x523260
523b6c:	83 c4 10             	add    $0x10,%esp
523b6f:	b8 01 00 00 00       	mov    $0x1,%eax
523b74:	5e                   	pop    %esi
523b75:	5d                   	pop    %ebp
523b76:	c3                   	ret
523b77:	83 fa 01             	cmp    $0x1,%edx
523b7a:	74 4a                	je     0x523bc6
523b7c:	f7 41 04 00 08 00 00 	testl  $0x800,0x4(%ecx)
523b83:	74 29                	je     0x523bae
523b85:	8b 55 08             	mov    0x8(%ebp),%edx
523b88:	83 7a 24 00          	cmpl   $0x0,0x24(%edx)
523b8c:	75 30                	jne    0x523bbe
523b8e:	8b 41 14             	mov    0x14(%ecx),%eax
523b91:	6a 01                	push   $0x1
523b93:	8b 40 1c             	mov    0x1c(%eax),%eax
523b96:	ff 30                	push   (%eax)
523b98:	68 78 91 6b 00       	push   $0x6b9178
523b9d:	52                   	push   %edx
523b9e:	e8 bd f6 ff ff       	call   0x523260
523ba3:	83 c4 10             	add    $0x10,%esp
523ba6:	b8 01 00 00 00       	mov    $0x1,%eax
523bab:	5e                   	pop    %esi
523bac:	5d                   	pop    %ebp
523bad:	c3                   	ret
523bae:	68 78 8c 6b 00       	push   $0x6b8c78
523bb3:	ff 75 08             	push   0x8(%ebp)
523bb6:	e8 a5 f6 ff ff       	call   0x523260
523bbb:	83 c4 08             	add    $0x8,%esp
523bbe:	b8 01 00 00 00       	mov    $0x1,%eax
523bc3:	5e                   	pop    %esi
523bc4:	5d                   	pop    %ebp
523bc5:	c3                   	ret
523bc6:	33 c0                	xor    %eax,%eax
523bc8:	5e                   	pop    %esi
523bc9:	5d                   	pop    %ebp
523bca:	c3                   	ret
523bcb:	cc                   	int3
523bcc:	cc                   	int3
523bcd:	cc                   	int3
523bce:	cc                   	int3
523bcf:	cc                   	int3
523bd0:	55                   	push   %ebp
523bd1:	8b ec                	mov    %esp,%ebp
523bd3:	53                   	push   %ebx
523bd4:	8b 5d 0c             	mov    0xc(%ebp),%ebx
523bd7:	56                   	push   %esi
523bd8:	8b 75 10             	mov    0x10(%ebp),%esi
523bdb:	57                   	push   %edi
523bdc:	8b 7d 08             	mov    0x8(%ebp),%edi
523bdf:	56                   	push   %esi
523be0:	53                   	push   %ebx
523be1:	57                   	push   %edi
523be2:	e8 69 16 00 00       	call   0x525250
523be7:	83 c4 0c             	add    $0xc,%esp
523bea:	3b c6                	cmp    %esi,%eax
523bec:	74 22                	je     0x523c10
523bee:	8b 4f 08             	mov    0x8(%edi),%ecx
523bf1:	85 c9                	test   %ecx,%ecx
523bf3:	74 1b                	je     0x523c10
523bf5:	56                   	push   %esi
523bf6:	50                   	push   %eax
523bf7:	8b 43 04             	mov    0x4(%ebx),%eax
523bfa:	25 00 00 20 00       	and    $0x200000,%eax
523bff:	f7 d8                	neg    %eax
523c01:	1b c0                	sbb    %eax,%eax
523c03:	83 c0 4e             	add    $0x4e,%eax
523c06:	50                   	push   %eax
523c07:	51                   	push   %ecx
523c08:	e8 d3 de 01 00       	call   0x541ae0
523c0d:	83 c4 10             	add    $0x10,%esp
523c10:	5f                   	pop    %edi
523c11:	5e                   	pop    %esi
523c12:	5b                   	pop    %ebx
523c13:	5d                   	pop    %ebp
523c14:	c3                   	ret
523c15:	cc                   	int3
523c16:	cc                   	int3
523c17:	cc                   	int3
523c18:	cc                   	int3
523c19:	cc                   	int3
523c1a:	cc                   	int3
523c1b:	cc                   	int3
523c1c:	cc                   	int3
523c1d:	cc                   	int3
523c1e:	cc                   	int3
523c1f:	cc                   	int3
523c20:	55                   	push   %ebp
523c21:	8b ec                	mov    %esp,%ebp
523c23:	8b 45 0c             	mov    0xc(%ebp),%eax
523c26:	53                   	push   %ebx
523c27:	8b 5d 08             	mov    0x8(%ebp),%ebx
523c2a:	56                   	push   %esi
523c2b:	8b 75 10             	mov    0x10(%ebp),%esi
523c2e:	57                   	push   %edi
523c2f:	8b 7b 44             	mov    0x44(%ebx),%edi
523c32:	89 7d 08             	mov    %edi,0x8(%ebp)
523c35:	85 f6                	test   %esi,%esi
523c37:	79 37                	jns    0x523c70
523c39:	85 ff                	test   %edi,%edi
523c3b:	74 33                	je     0x523c70
523c3d:	8d 77 04             	lea    0x4(%edi),%esi
523c40:	8b 3f                	mov    (%edi),%edi
523c42:	85 ff                	test   %edi,%edi
523c44:	7e 24                	jle    0x523c6a
523c46:	f6 46 0c 08          	testb  $0x8,0xc(%esi)
523c4a:	74 16                	je     0x523c62
523c4c:	6a ff                	push   $0xffffffff
523c4e:	50                   	push   %eax
523c4f:	ff 36                	push   (%esi)
523c51:	6a 00                	push   $0x0
523c53:	e8 78 28 00 00       	call   0x5264d0
523c58:	83 c4 10             	add    $0x10,%esp
523c5b:	85 c0                	test   %eax,%eax
523c5d:	74 26                	je     0x523c85
523c5f:	8b 45 0c             	mov    0xc(%ebp),%eax
523c62:	4f                   	dec    %edi
523c63:	83 c6 14             	add    $0x14,%esi
523c66:	85 ff                	test   %edi,%edi
523c68:	7f dc                	jg     0x523c46
523c6a:	8b 7d 08             	mov    0x8(%ebp),%edi
523c6d:	8b 75 10             	mov    0x10(%ebp),%esi
523c70:	85 c0                	test   %eax,%eax
523c72:	74 19                	je     0x523c8d
523c74:	6a 00                	push   $0x0
523c76:	6a 00                	push   $0x0
523c78:	50                   	push   %eax
523c79:	ff 33                	push   (%ebx)
523c7b:	e8 e0 cb fd ff       	call   0x500860
523c80:	83 c4 10             	add    $0x10,%esp
523c83:	eb 0a                	jmp    0x523c8f
523c85:	8b 46 10             	mov    0x10(%esi),%eax
523c88:	5f                   	pop    %edi
523c89:	5e                   	pop    %esi
523c8a:	5b                   	pop    %ebx
523c8b:	5d                   	pop    %ebp
523c8c:	c3                   	ret
523c8d:	33 c0                	xor    %eax,%eax
523c8f:	50                   	push   %eax
523c90:	57                   	push   %edi
523c91:	53                   	push   %ebx
523c92:	e8 e9 38 00 00       	call   0x527580
523c97:	8b c8                	mov    %eax,%ecx
523c99:	83 c4 0c             	add    $0xc,%esp
523c9c:	85 c9                	test   %ecx,%ecx
523c9e:	74 22                	je     0x523cc2
523ca0:	8b 01                	mov    (%ecx),%eax
523ca2:	8d 04 80             	lea    (%eax,%eax,4),%eax
523ca5:	8d 14 81             	lea    (%ecx,%eax,4),%edx
523ca8:	8b c6                	mov    %esi,%eax
523caa:	c1 e8 1c             	shr    $0x1c,%eax
523cad:	33 42 fc             	xor    -0x4(%edx),%eax
523cb0:	83 e0 08             	and    $0x8,%eax
523cb3:	31 42 fc             	xor    %eax,-0x4(%edx)
523cb6:	85 f6                	test   %esi,%esi
523cb8:	79 06                	jns    0x523cc0
523cba:	ff 43 2c             	incl   0x2c(%ebx)
523cbd:	8b 73 2c             	mov    0x2c(%ebx),%esi
523cc0:	89 32                	mov    %esi,(%edx)
523cc2:	5f                   	pop    %edi
523cc3:	8b c6                	mov    %esi,%eax
523cc5:	89 4b 44             	mov    %ecx,0x44(%ebx)
523cc8:	5e                   	pop    %esi
523cc9:	5b                   	pop    %ebx
523cca:	5d                   	pop    %ebp
523ccb:	c3                   	ret
523ccc:	cc                   	int3
523ccd:	cc                   	int3
523cce:	cc                   	int3
523ccf:	cc                   	int3
523cd0:	55                   	push   %ebp
523cd1:	8b ec                	mov    %esp,%ebp
523cd3:	83 ec 3c             	sub    $0x3c,%esp
523cd6:	a1 d4 89 72 00       	mov    0x7289d4,%eax
523cdb:	33 c5                	xor    %ebp,%eax
523cdd:	89 45 fc             	mov    %eax,-0x4(%ebp)
523ce0:	8b 45 08             	mov    0x8(%ebp),%eax
523ce3:	8a 4d 18             	mov    0x18(%ebp),%cl
523ce6:	8b 55 0c             	mov    0xc(%ebp),%edx
523ce9:	53                   	push   %ebx
523cea:	8a d9                	mov    %cl,%bl
523cec:	89 45 c8             	mov    %eax,-0x38(%ebp)
523cef:	80 e3 01             	and    $0x1,%bl
523cf2:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
523cf9:	56                   	push   %esi
523cfa:	57                   	push   %edi
523cfb:	8b 78 08             	mov    0x8(%eax),%edi
523cfe:	8a c1                	mov    %cl,%al
523d00:	88 5d ce             	mov    %bl,-0x32(%ebp)
523d03:	0f 94 c3             	sete   %bl
523d06:	24 fd                	and    $0xfd,%al
523d08:	80 c3 4d             	add    $0x4d,%bl
523d0b:	0f b6 f0             	movzbl %al,%esi
523d0e:	0f b6 c1             	movzbl %cl,%eax
523d11:	8b 4d c8             	mov    -0x38(%ebp),%ecx
523d14:	88 5d df             	mov    %bl,-0x21(%ebp)
523d17:	8b 1a                	mov    (%edx),%ebx
523d19:	89 5d d8             	mov    %ebx,-0x28(%ebp)
523d1c:	80 79 17 00          	cmpb   $0x0,0x17(%ecx)
523d20:	8d 4a 04             	lea    0x4(%edx),%ecx
523d23:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
523d26:	0f 45 f0             	cmovne %eax,%esi
523d29:	89 75 d4             	mov    %esi,-0x2c(%ebp)
523d2c:	85 db                	test   %ebx,%ebx
523d2e:	0f 8e 9a 01 00 00    	jle    0x523ece
523d34:	8b d6                	mov    %esi,%edx
523d36:	8b 75 10             	mov    0x10(%ebp),%esi
523d39:	8a c2                	mov    %dl,%al
523d3b:	24 04                	and    $0x4,%al
523d3d:	88 45 cf             	mov    %al,-0x31(%ebp)
523d40:	33 c0                	xor    %eax,%eax
523d42:	80 7d cf 00          	cmpb   $0x0,-0x31(%ebp)
523d46:	8b 19                	mov    (%ecx),%ebx
523d48:	74 6b                	je     0x523db5
523d4a:	0f b7 49 10          	movzwl 0x10(%ecx),%ecx
523d4e:	85 c9                	test   %ecx,%ecx
523d50:	74 63                	je     0x523db5
523d52:	f6 c2 08             	test   $0x8,%dl
523d55:	74 0e                	je     0x523d65
523d57:	8b 4d d8             	mov    -0x28(%ebp),%ecx
523d5a:	48                   	dec    %eax
523d5b:	4e                   	dec    %esi
523d5c:	49                   	dec    %ecx
523d5d:	89 4d d8             	mov    %ecx,-0x28(%ebp)
523d60:	e9 41 01 00 00       	jmp    0x523ea6
523d65:	8b 55 14             	mov    0x14(%ebp),%edx
523d68:	0f b6 5d df          	movzbl -0x21(%ebp),%ebx
523d6c:	4a                   	dec    %edx
523d6d:	03 d1                	add    %ecx,%edx
523d6f:	8b 4f 6c             	mov    0x6c(%edi),%ecx
523d72:	39 4f 70             	cmp    %ecx,0x70(%edi)
523d75:	7f 13                	jg     0x523d8a
523d77:	6a 00                	push   $0x0
523d79:	56                   	push   %esi
523d7a:	52                   	push   %edx
523d7b:	53                   	push   %ebx
523d7c:	57                   	push   %edi
523d7d:	e8 7e 27 fe ff       	call   0x506500
523d82:	83 c4 14             	add    $0x14,%esp
523d85:	e9 13 01 00 00       	jmp    0x523e9d
523d8a:	8d 41 01             	lea    0x1(%ecx),%eax
523d8d:	89 47 6c             	mov    %eax,0x6c(%edi)
523d90:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
523d93:	8b 47 68             	mov    0x68(%edi),%eax
523d96:	88 1c 88             	mov    %bl,(%eax,%ecx,4)
523d99:	33 db                	xor    %ebx,%ebx
523d9b:	66 89 5c 88 02       	mov    %bx,0x2(%eax,%ecx,4)
523da0:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
523da4:	89 5c 88 0c          	mov    %ebx,0xc(%eax,%ecx,4)
523da8:	89 5c 88 10          	mov    %ebx,0x10(%eax,%ecx,4)
523dac:	88 5c 88 01          	mov    %bl,0x1(%eax,%ecx,4)
523db0:	e9 e4 00 00 00       	jmp    0x523e99
523db5:	f6 c2 02             	test   $0x2,%dl
523db8:	74 48                	je     0x523e02
523dba:	c7 45 e4 c0 12 50 00 	movl   $0x5012c0,-0x1c(%ebp)
523dc1:	b8 02 00 00 00       	mov    $0x2,%eax
523dc6:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
523dca:	c7 45 e8 f0 c7 53 00 	movl   $0x53c7f0,-0x18(%ebp)
523dd1:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%ebp)
523dd8:	85 db                	test   %ebx,%ebx
523dda:	74 14                	je     0x523df0
523ddc:	8d 45 e0             	lea    -0x20(%ebp),%eax
523ddf:	53                   	push   %ebx
523de0:	50                   	push   %eax
523de1:	e8 ca c1 03 00       	call   0x55ffb0
523de6:	83 c4 08             	add    $0x8,%esp