509bb9:	83 c4 10             	add    $0x10,%esp
509bbc:	85 f6                	test   %esi,%esi
509bbe:	74 20                	je     0x509be0
509bc0:	83 fe 08             	cmp    $0x8,%esi
509bc3:	76 2f                	jbe    0x509bf4
509bc5:	68 67 02 00 00       	push   $0x267
509bca:	68 14 ae 62 00       	push   $0x62ae14
509bcf:	68 df 00 00 00       	push   $0xdf
509bd4:	6a 65                	push   $0x65
509bd6:	6a 0d                	push   $0xd
509bd8:	e8 a3 f3 fc ff       	call   0x4d8f80
509bdd:	83 c4 14             	add    $0x14,%esp
509be0:	5f                   	pop    %edi
509be1:	5e                   	pop    %esi
509be2:	33 c0                	xor    %eax,%eax
509be4:	5d                   	pop    %ebp
509be5:	8b 4c 24 08          	mov    0x8(%esp),%ecx
509be9:	33 cc                	xor    %esp,%ecx
509beb:	e8 36 7e 0c 00       	call   0x5d1a26
509bf0:	83 c4 0c             	add    $0xc,%esp
509bf3:	c3                   	ret
509bf4:	ff 74 24 28          	push   0x28(%esp)
509bf8:	8d 44 24 10          	lea    0x10(%esp),%eax
509bfc:	ff 37                	push   (%edi)
509bfe:	ff 74 24 14          	push   0x14(%esp)
509c02:	50                   	push   %eax
509c03:	e8 f8 fd ff ff       	call   0x509a00
509c08:	56                   	push   %esi
509c09:	8d 44 24 20          	lea    0x20(%esp),%eax
509c0d:	50                   	push   %eax
509c0e:	55                   	push   %ebp
509c0f:	e8 0c f9 ff ff       	call   0x509520
509c14:	8b 4c 24 30          	mov    0x30(%esp),%ecx
509c18:	83 c4 1c             	add    $0x1c,%esp
509c1b:	5f                   	pop    %edi
509c1c:	5e                   	pop    %esi
509c1d:	5d                   	pop    %ebp
509c1e:	33 cc                	xor    %esp,%ecx
509c20:	e8 01 7e 0c 00       	call   0x5d1a26
509c25:	83 c4 0c             	add    $0xc,%esp
509c28:	c3                   	ret
509c29:	cc                   	int3
509c2a:	cc                   	int3
509c2b:	cc                   	int3
509c2c:	cc                   	int3
509c2d:	cc                   	int3
509c2e:	cc                   	int3
509c2f:	cc                   	int3
509c30:	8b 4c 24 04          	mov    0x4(%esp),%ecx
509c34:	ff 74 24 08          	push   0x8(%esp)
509c38:	8b 41 04             	mov    0x4(%ecx),%eax
509c3b:	25 00 01 00 00       	and    $0x100,%eax
509c40:	50                   	push   %eax
509c41:	ff 31                	push   (%ecx)
509c43:	ff 71 08             	push   0x8(%ecx)
509c46:	e8 05 00 00 00       	call   0x509c50
509c4b:	83 c4 10             	add    $0x10,%esp
509c4e:	c3                   	ret
509c4f:	cc                   	int3
509c50:	b8 04 00 00 00       	mov    $0x4,%eax
509c55:	e8 56 7b 0c 00       	call   0x5d17b0
509c5a:	53                   	push   %ebx
509c5b:	55                   	push   %ebp
509c5c:	56                   	push   %esi
509c5d:	57                   	push   %edi
509c5e:	8b 7c 24 18          	mov    0x18(%esp),%edi
509c62:	32 d2                	xor    %dl,%dl
509c64:	33 c0                	xor    %eax,%eax
509c66:	88 54 24 10          	mov    %dl,0x10(%esp)
509c6a:	85 ff                	test   %edi,%edi
509c6c:	0f 84 dd 00 00 00    	je     0x509d4f
509c72:	8b 74 24 1c          	mov    0x1c(%esp),%esi
509c76:	85 f6                	test   %esi,%esi
509c78:	0f 84 d1 00 00 00    	je     0x509d4f
509c7e:	8a 0f                	mov    (%edi),%cl
509c80:	39 44 24 20          	cmp    %eax,0x20(%esp)
509c84:	75 1a                	jne    0x509ca0
509c86:	80 f9 7f             	cmp    $0x7f,%cl
509c89:	0f 86 bb 00 00 00    	jbe    0x509d4a
509c8f:	b8 01 00 00 00       	mov    $0x1,%eax
509c94:	88 54 24 10          	mov    %dl,0x10(%esp)
509c98:	8d 1c 30             	lea    (%eax,%esi,1),%ebx
509c9b:	e9 b6 00 00 00       	jmp    0x509d56
509ca0:	80 ca ff             	or     $0xff,%dl
509ca3:	88 54 24 10          	mov    %dl,0x10(%esp)
509ca7:	80 f9 80             	cmp    $0x80,%cl
509caa:	76 0d                	jbe    0x509cb9
509cac:	b8 01 00 00 00       	mov    $0x1,%eax
509cb1:	8d 1c 30             	lea    (%eax,%esi,1),%ebx
509cb4:	e9 9d 00 00 00       	jmp    0x509d56
509cb9:	0f 85 8b 00 00 00    	jne    0x509d4a
509cbf:	33 d2                	xor    %edx,%edx
509cc1:	8d 4e ff             	lea    -0x1(%esi),%ecx
509cc4:	8d 42 01             	lea    0x1(%edx),%eax
509cc7:	3b f0                	cmp    %eax,%esi
509cc9:	76 71                	jbe    0x509d3c
509ccb:	83 f9 08             	cmp    $0x8,%ecx
509cce:	72 61                	jb     0x509d31
509cd0:	83 e1 07             	and    $0x7,%ecx
509cd3:	8b d6                	mov    %esi,%edx
509cd5:	2b d1                	sub    %ecx,%edx
509cd7:	0f 57 db             	xorps  %xmm3,%xmm3
509cda:	0f 57 d2             	xorps  %xmm2,%xmm2
509cdd:	0f 1f 00             	nopl   (%eax)
509ce0:	66 0f 6e 0c 38       	movd   (%eax,%edi,1),%xmm1
509ce5:	0f 57 c0             	xorps  %xmm0,%xmm0
509ce8:	66 0f 60 c8          	punpcklbw %xmm0,%xmm1
509cec:	66 0f 61 c8          	punpcklwd %xmm0,%xmm1
509cf0:	66 0f eb d9          	por    %xmm1,%xmm3
509cf4:	66 0f 6e 4c 38 04    	movd   0x4(%eax,%edi,1),%xmm1
509cfa:	66 0f 60 c8          	punpcklbw %xmm0,%xmm1
509cfe:	83 c0 08             	add    $0x8,%eax
509d01:	66 0f 61 c8          	punpcklwd %xmm0,%xmm1
509d05:	66 0f eb d1          	por    %xmm1,%xmm2
509d09:	3b c2                	cmp    %edx,%eax
509d0b:	72 d3                	jb     0x509ce0
509d0d:	66 0f eb d3          	por    %xmm3,%xmm2
509d11:	0f 28 c2             	movaps %xmm2,%xmm0
509d14:	66 0f 73 d8 08       	psrldq $0x8,%xmm0
509d19:	66 0f eb d0          	por    %xmm0,%xmm2
509d1d:	0f 10 c2             	movups %xmm2,%xmm0
509d20:	66 0f 73 d8 04       	psrldq $0x4,%xmm0
509d25:	66 0f eb d0          	por    %xmm0,%xmm2
509d29:	66 0f 7e d2          	movd   %xmm2,%edx
509d2d:	3b c6                	cmp    %esi,%eax
509d2f:	73 0b                	jae    0x509d3c
509d31:	0f b6 0c 38          	movzbl (%eax,%edi,1),%ecx
509d35:	40                   	inc    %eax
509d36:	0b d1                	or     %ecx,%edx
509d38:	3b c6                	cmp    %esi,%eax
509d3a:	72 f5                	jb     0x509d31
509d3c:	f7 da                	neg    %edx
509d3e:	1a d2                	sbb    %dl,%dl
509d40:	0f b6 c2             	movzbl %dl,%eax
509d43:	83 e0 01             	and    $0x1,%eax
509d46:	88 54 24 10          	mov    %dl,0x10(%esp)
509d4a:	8d 1c 30             	lea    (%eax,%esi,1),%ebx
509d4d:	eb 07                	jmp    0x509d56
509d4f:	bb 01 00 00 00       	mov    $0x1,%ebx
509d54:	33 f6                	xor    %esi,%esi
509d56:	8b 6c 24 24          	mov    0x24(%esp),%ebp
509d5a:	85 ed                	test   %ebp,%ebp
509d5c:	74 1d                	je     0x509d7b
509d5e:	8b 4d 00             	mov    0x0(%ebp),%ecx
509d61:	85 c9                	test   %ecx,%ecx
509d63:	74 16                	je     0x509d7b
509d65:	ff 74 24 10          	push   0x10(%esp)
509d69:	88 11                	mov    %dl,(%ecx)
509d6b:	03 c8                	add    %eax,%ecx
509d6d:	56                   	push   %esi
509d6e:	57                   	push   %edi
509d6f:	51                   	push   %ecx
509d70:	e8 8b 00 00 00       	call   0x509e00
509d75:	83 c4 10             	add    $0x10,%esp
509d78:	01 5d 00             	add    %ebx,0x0(%ebp)
509d7b:	5f                   	pop    %edi
509d7c:	5e                   	pop    %esi
509d7d:	5d                   	pop    %ebp
509d7e:	8b c3                	mov    %ebx,%eax
509d80:	5b                   	pop    %ebx
509d81:	59                   	pop    %ecx
509d82:	c3                   	ret
509d83:	cc                   	int3
509d84:	cc                   	int3
509d85:	cc                   	int3
509d86:	cc                   	int3
509d87:	cc                   	int3
509d88:	cc                   	int3
509d89:	cc                   	int3
509d8a:	cc                   	int3
509d8b:	cc                   	int3
509d8c:	cc                   	int3
509d8d:	cc                   	int3
509d8e:	cc                   	int3
509d8f:	cc                   	int3
509d90:	b8 10 00 00 00       	mov    $0x10,%eax
509d95:	e8 16 7a 0c 00       	call   0x5d17b0
509d9a:	a1 c0 14 69 00       	mov    0x6914c0,%eax
509d9f:	33 c4                	xor    %esp,%eax
509da1:	89 44 24 0c          	mov    %eax,0xc(%esp)
509da5:	8b 44 24 14          	mov    0x14(%esp),%eax
509da9:	8b 54 24 18          	mov    0x18(%esp),%edx
509dad:	56                   	push   %esi
509dae:	57                   	push   %edi
509daf:	89 44 24 08          	mov    %eax,0x8(%esp)
509db3:	8d 74 24 14          	lea    0x14(%esp),%esi
509db7:	8b 44 24 24          	mov    0x24(%esp),%eax
509dbb:	bf 08 00 00 00       	mov    $0x8,%edi
509dc0:	4e                   	dec    %esi
509dc1:	4f                   	dec    %edi
509dc2:	88 16                	mov    %dl,(%esi)
509dc4:	0f ac c2 08          	shrd   $0x8,%eax,%edx
509dc8:	c1 e8 08             	shr    $0x8,%eax
509dcb:	8b ca                	mov    %edx,%ecx
509dcd:	0b c8                	or     %eax,%ecx
509dcf:	75 ef                	jne    0x509dc0
509dd1:	8d 44 24 08          	lea    0x8(%esp),%eax
509dd5:	50                   	push   %eax
509dd6:	ff 74 24 2c          	push   0x2c(%esp)
509dda:	b8 08 00 00 00       	mov    $0x8,%eax
509ddf:	2b c7                	sub    %edi,%eax
509de1:	50                   	push   %eax
509de2:	56                   	push   %esi
509de3:	e8 68 fe ff ff       	call   0x509c50
509de8:	8b 4c 24 24          	mov    0x24(%esp),%ecx
509dec:	83 c4 10             	add    $0x10,%esp
509def:	5f                   	pop    %edi
509df0:	5e                   	pop    %esi
509df1:	33 cc                	xor    %esp,%ecx
509df3:	e8 2e 7c 0c 00       	call   0x5d1a26
509df8:	83 c4 10             	add    $0x10,%esp
509dfb:	c3                   	ret
509dfc:	cc                   	int3
509dfd:	cc                   	int3
509dfe:	cc                   	int3
509dff:	cc                   	int3
509e00:	8a 4c 24 10          	mov    0x10(%esp),%cl
509e04:	53                   	push   %ebx
509e05:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
509e09:	56                   	push   %esi
509e0a:	8b 74 24 14          	mov    0x14(%esp),%esi
509e0e:	03 de                	add    %esi,%ebx
509e10:	57                   	push   %edi
509e11:	8b 7c 24 10          	mov    0x10(%esp),%edi
509e15:	0f b6 c1             	movzbl %cl,%eax
509e18:	03 fe                	add    %esi,%edi
509e1a:	83 e0 01             	and    $0x1,%eax
509e1d:	85 f6                	test   %esi,%esi
509e1f:	74 1f                	je     0x509e40
509e21:	0f b6 53 ff          	movzbl -0x1(%ebx),%edx
509e25:	8d 5b ff             	lea    -0x1(%ebx),%ebx
509e28:	0f b6 c9             	movzbl %cl,%ecx
509e2b:	8d 7f ff             	lea    -0x1(%edi),%edi
509e2e:	33 d1                	xor    %ecx,%edx
509e30:	8a 4c 24 1c          	mov    0x1c(%esp),%cl
509e34:	03 c2                	add    %edx,%eax
509e36:	88 07                	mov    %al,(%edi)
509e38:	c1 e8 08             	shr    $0x8,%eax
509e3b:	83 ee 01             	sub    $0x1,%esi
509e3e:	75 e1                	jne    0x509e21
509e40:	5f                   	pop    %edi
509e41:	5e                   	pop    %esi
509e42:	5b                   	pop    %ebx
509e43:	c3                   	ret
509e44:	cc                   	int3
509e45:	cc                   	int3
509e46:	cc                   	int3
509e47:	cc                   	int3
509e48:	cc                   	int3
509e49:	cc                   	int3
509e4a:	cc                   	int3
509e4b:	cc                   	int3
509e4c:	cc                   	int3
509e4d:	cc                   	int3
509e4e:	cc                   	int3
509e4f:	cc                   	int3
509e50:	56                   	push   %esi
509e51:	8b 74 24 08          	mov    0x8(%esp),%esi
509e55:	85 f6                	test   %esi,%esi
509e57:	74 55                	je     0x509eae
509e59:	8b 46 08             	mov    0x8(%esi),%eax
509e5c:	85 c0                	test   %eax,%eax
509e5e:	74 11                	je     0x509e71
509e60:	f6 46 0c 10          	testb  $0x10,0xc(%esi)
509e64:	75 0b                	jne    0x509e71
509e66:	ff 36                	push   (%esi)
509e68:	50                   	push   %eax
509e69:	e8 72 7b ef ff       	call   0x4019e0
509e6e:	83 c4 08             	add    $0x8,%esp
509e71:	8b 46 0c             	mov    0xc(%esi),%eax
509e74:	57                   	push   %edi
509e75:	8b f8                	mov    %eax,%edi
509e77:	81 e7 80 00 00 00    	and    $0x80,%edi
509e7d:	a8 10                	test   $0x10,%al
509e7f:	75 15                	jne    0x509e96
509e81:	68 55 01 00 00       	push   $0x155
509e86:	68 28 ae 62 00       	push   $0x62ae28
509e8b:	ff 76 08             	push   0x8(%esi)
509e8e:	e8 ed 68 fd ff       	call   0x4e0780
509e93:	83 c4 0c             	add    $0xc,%esp
509e96:	85 ff                	test   %edi,%edi
509e98:	5f                   	pop    %edi
509e99:	75 13                	jne    0x509eae
509e9b:	68 57 01 00 00       	push   $0x157
509ea0:	68 28 ae 62 00       	push   $0x62ae28
509ea5:	56                   	push   %esi
509ea6:	e8 d5 68 fd ff       	call   0x4e0780
509eab:	83 c4 0c             	add    $0xc,%esp
509eae:	5e                   	pop    %esi
509eaf:	c3                   	ret
509eb0:	53                   	push   %ebx
509eb1:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
509eb5:	57                   	push   %edi
509eb6:	8b 7c 24 0c          	mov    0xc(%esp),%edi
509eba:	8b 0f                	mov    (%edi),%ecx
509ebc:	8b c1                	mov    %ecx,%eax
509ebe:	2b 03                	sub    (%ebx),%eax
509ec0:	75 65                	jne    0x509f27
509ec2:	8b 57 08             	mov    0x8(%edi),%edx
509ec5:	56                   	push   %esi
509ec6:	8b 73 08             	mov    0x8(%ebx),%esi
509ec9:	83 e9 04             	sub    $0x4,%ecx
509ecc:	72 13                	jb     0x509ee1
509ece:	66 90                	xchg   %ax,%ax
509ed0:	8b 02                	mov    (%edx),%eax
509ed2:	3b 06                	cmp    (%esi),%eax
509ed4:	75 10                	jne    0x509ee6
509ed6:	83 c2 04             	add    $0x4,%edx
509ed9:	83 c6 04             	add    $0x4,%esi
509edc:	83 e9 04             	sub    $0x4,%ecx
509edf:	73 ef                	jae    0x509ed0
509ee1:	83 f9 fc             	cmp    $0xfffffffc,%ecx
509ee4:	74 34                	je     0x509f1a
509ee6:	8a 02                	mov    (%edx),%al
509ee8:	3a 06                	cmp    (%esi),%al
509eea:	75 27                	jne    0x509f13
509eec:	83 f9 fd             	cmp    $0xfffffffd,%ecx
509eef:	74 29                	je     0x509f1a
509ef1:	8a 42 01             	mov    0x1(%edx),%al
509ef4:	3a 46 01             	cmp    0x1(%esi),%al
509ef7:	75 1a                	jne    0x509f13
509ef9:	83 f9 fe             	cmp    $0xfffffffe,%ecx
509efc:	74 1c                	je     0x509f1a
509efe:	8a 42 02             	mov    0x2(%edx),%al
509f01:	3a 46 02             	cmp    0x2(%esi),%al
509f04:	75 0d                	jne    0x509f13
509f06:	83 f9 ff             	cmp    $0xffffffff,%ecx
509f09:	74 0f                	je     0x509f1a
509f0b:	8a 42 03             	mov    0x3(%edx),%al
509f0e:	3a 46 03             	cmp    0x3(%esi),%al
509f11:	74 07                	je     0x509f1a
509f13:	1b c0                	sbb    %eax,%eax
509f15:	83 c8 01             	or     $0x1,%eax
509f18:	eb 02                	jmp    0x509f1c
509f1a:	33 c0                	xor    %eax,%eax
509f1c:	5e                   	pop    %esi
509f1d:	85 c0                	test   %eax,%eax
509f1f:	75 06                	jne    0x509f27
509f21:	8b 47 04             	mov    0x4(%edi),%eax
509f24:	2b 43 04             	sub    0x4(%ebx),%eax
509f27:	5f                   	pop    %edi
509f28:	5b                   	pop    %ebx
509f29:	c3                   	ret
509f2a:	cc                   	int3
509f2b:	cc                   	int3
509f2c:	cc                   	int3
509f2d:	cc                   	int3
509f2e:	cc                   	int3
509f2f:	cc                   	int3
509f30:	b8 04 00 00 00       	mov    $0x4,%eax