508dab:	f7 40 24 00 02 00 00 	testl  $0x200,0x24(%eax)
508db2:	75 1b                	jne    0x508dcf
508db4:	8b 45 1c             	mov    0x1c(%ebp),%eax
508db7:	bb 01 00 00 00       	mov    $0x1,%ebx
508dbc:	83 c9 ff             	or     $0xffffffff,%ecx
508dbf:	89 5d f4             	mov    %ebx,-0xc(%ebp)
508dc2:	66 89 48 20          	mov    %cx,0x20(%eax)
508dc6:	c6 40 01 44          	movb   $0x44,0x1(%eax)
508dca:	eb 03                	jmp    0x508dcf
508dcc:	8b 75 14             	mov    0x14(%ebp),%esi
508dcf:	8b 7d 18             	mov    0x18(%ebp),%edi
508dd2:	f6 47 18 80          	testb  $0x80,0x18(%edi)
508dd6:	0f 84 8b 00 00 00    	je     0x508e67
508ddc:	85 db                	test   %ebx,%ebx
508dde:	0f 85 bc 02 00 00    	jne    0x5090a0
508de4:	8b 4d 10             	mov    0x10(%ebp),%ecx
508de7:	85 c9                	test   %ecx,%ecx
508de9:	0f 85 83 00 00 00    	jne    0x508e72
508def:	8b 4f 08             	mov    0x8(%edi),%ecx
508df2:	33 d2                	xor    %edx,%edx
508df4:	89 55 d0             	mov    %edx,-0x30(%ebp)
508df7:	8b 01                	mov    (%ecx),%eax
508df9:	89 45 cc             	mov    %eax,-0x34(%ebp)
508dfc:	85 c0                	test   %eax,%eax
508dfe:	0f 8e 6b 00 00 00    	jle    0x508e6f
508e04:	8d 59 10             	lea    0x10(%ecx),%ebx
508e07:	f6 03 03             	testb  $0x3,(%ebx)
508e0a:	8b 7b f8             	mov    -0x8(%ebx),%edi
508e0d:	75 30                	jne    0x508e3f
508e0f:	85 ff                	test   %edi,%edi
508e11:	75 08                	jne    0x508e1b
508e13:	8b ce                	mov    %esi,%ecx
508e15:	f7 d9                	neg    %ecx
508e17:	1b c9                	sbb    %ecx,%ecx
508e19:	eb 20                	jmp    0x508e3b
508e1b:	85 f6                	test   %esi,%esi
508e1d:	74 20                	je     0x508e3f
508e1f:	8b d7                	mov    %edi,%edx
508e21:	2b f7                	sub    %edi,%esi
508e23:	0f b6 0a             	movzbl (%edx),%ecx
508e26:	0f b6 04 16          	movzbl (%esi,%edx,1),%eax
508e2a:	3b c8                	cmp    %eax,%ecx
508e2c:	75 24                	jne    0x508e52
508e2e:	85 c9                	test   %ecx,%ecx
508e30:	75 32                	jne    0x508e64
508e32:	8b 55 d0             	mov    -0x30(%ebp),%edx
508e35:	8b 45 cc             	mov    -0x34(%ebp),%eax
508e38:	8b 75 14             	mov    0x14(%ebp),%esi
508e3b:	85 c9                	test   %ecx,%ecx
508e3d:	74 52                	je     0x508e91
508e3f:	42                   	inc    %edx
508e40:	83 c3 14             	add    $0x14,%ebx
508e43:	89 55 d0             	mov    %edx,-0x30(%ebp)
508e46:	3b d0                	cmp    %eax,%edx
508e48:	7c bd                	jl     0x508e07
508e4a:	8b 5d f4             	mov    -0xc(%ebp),%ebx
508e4d:	8b 7d 18             	mov    0x18(%ebp),%edi
508e50:	eb 1d                	jmp    0x508e6f
508e52:	0f b6 80 20 2a 6b 00 	movzbl 0x6b2a20(%eax),%eax
508e59:	0f b6 89 20 2a 6b 00 	movzbl 0x6b2a20(%ecx),%ecx
508e60:	2b c8                	sub    %eax,%ecx
508e62:	75 ce                	jne    0x508e32
508e64:	42                   	inc    %edx
508e65:	eb bc                	jmp    0x508e23
508e67:	85 db                	test   %ebx,%ebx
508e69:	0f 85 31 02 00 00    	jne    0x5090a0
508e6f:	8b 4d 10             	mov    0x10(%ebp),%ecx
508e72:	8b 7f 0c             	mov    0xc(%edi),%edi
508e75:	ff 45 d4             	incl   -0x2c(%ebp)
508e78:	89 7d 18             	mov    %edi,0x18(%ebp)
508e7b:	85 ff                	test   %edi,%edi
508e7d:	0f 84 f9 00 00 00    	je     0x508f7c
508e83:	8b 55 1c             	mov    0x1c(%ebp),%edx
508e86:	8b 7d fc             	mov    -0x4(%ebp),%edi
508e89:	8b 45 18             	mov    0x18(%ebp),%eax
508e8c:	e9 70 f9 ff ff       	jmp    0x508801
508e91:	8b 5d 18             	mov    0x18(%ebp),%ebx
508e94:	8d 04 92             	lea    (%edx,%edx,4),%eax
508e97:	8b 73 08             	mov    0x8(%ebx),%esi
508e9a:	8b 4b 18             	mov    0x18(%ebx),%ecx
508e9d:	8b 44 86 04          	mov    0x4(%esi,%eax,4),%eax
508ea1:	f6 c1 01             	test   $0x1,%cl
508ea4:	75 23                	jne    0x508ec9
508ea6:	f6 40 04 10          	testb  $0x10,0x4(%eax)
508eaa:	74 1d                	je     0x508ec9
508eac:	57                   	push   %edi
508ead:	68 30 8c 6b 00       	push   $0x6b8c30
508eb2:	ff 75 08             	push   0x8(%ebp)
508eb5:	e8 a6 a3 01 00       	call   0x523260
508eba:	83 c4 0c             	add    $0xc,%esp
508ebd:	5f                   	pop    %edi
508ebe:	5e                   	pop    %esi
508ebf:	b8 02 00 00 00       	mov    $0x2,%eax
508ec4:	5b                   	pop    %ebx
508ec5:	8b e5                	mov    %ebp,%esp
508ec7:	5d                   	pop    %ebp
508ec8:	c3                   	ret
508ec9:	f7 40 04 00 80 00 00 	testl  $0x8000,0x4(%eax)
508ed0:	74 17                	je     0x508ee9
508ed2:	f7 c1 00 40 00 00    	test   $0x4000,%ecx
508ed8:	74 07                	je     0x508ee1
508eda:	8b 4d d8             	mov    -0x28(%ebp),%ecx
508edd:	3b d9                	cmp    %ecx,%ebx
508edf:	74 08                	je     0x508ee9
508ee1:	57                   	push   %edi
508ee2:	68 50 8c 6b 00       	push   $0x6b8c50
508ee7:	eb c9                	jmp    0x508eb2
508ee9:	8a 08                	mov    (%eax),%cl
508eeb:	80 f9 ad             	cmp    $0xad,%cl
508eee:	75 03                	jne    0x508ef3
508ef0:	8a 48 02             	mov    0x2(%eax),%cl
508ef3:	80 f9 ae             	cmp    $0xae,%cl
508ef6:	75 05                	jne    0x508efd
508ef8:	8b 40 14             	mov    0x14(%eax),%eax
508efb:	eb 0b                	jmp    0x508f08
508efd:	80 f9 88             	cmp    $0x88,%cl
508f00:	75 29                	jne    0x508f2b
508f02:	8b 40 14             	mov    0x14(%eax),%eax
508f05:	8b 40 1c             	mov    0x1c(%eax),%eax
508f08:	8b 00                	mov    (%eax),%eax
508f0a:	83 f8 01             	cmp    $0x1,%eax
508f0d:	74 1c                	je     0x508f2b
508f0f:	68 78 8c 6b 00       	push   $0x6b8c78
508f14:	ff 75 08             	push   0x8(%ebp)
508f17:	e8 44 a3 01 00       	call   0x523260
508f1c:	83 c4 08             	add    $0x8,%esp
508f1f:	b8 02 00 00 00       	mov    $0x2,%eax
508f24:	5f                   	pop    %edi
508f25:	5e                   	pop    %esi
508f26:	5b                   	pop    %ebx
508f27:	8b e5                	mov    %ebp,%esp
508f29:	5d                   	pop    %ebp
508f2a:	c3                   	ret
508f2b:	8b 45 d4             	mov    -0x2c(%ebp),%eax
508f2e:	8b 7d 1c             	mov    0x1c(%ebp),%edi
508f31:	8b 5d 08             	mov    0x8(%ebp),%ebx
508f34:	50                   	push   %eax
508f35:	68 ad 57 6e 00       	push   $0x6e57ad
508f3a:	57                   	push   %edi
508f3b:	52                   	push   %edx
508f3c:	56                   	push   %esi
508f3d:	53                   	push   %ebx
508f3e:	e8 cd a8 00 00       	call   0x513810
508f43:	83 c4 18             	add    $0x18,%esp
508f46:	80 bb c8 00 00 00 02 	cmpb   $0x2,0xc8(%ebx)
508f4d:	0f 82 ae 02 00 00    	jb     0x509201
508f53:	8b 83 10 01 00 00    	mov    0x110(%ebx),%eax
508f59:	85 c0                	test   %eax,%eax
508f5b:	0f 84 a0 02 00 00    	je     0x509201
508f61:	39 38                	cmp    %edi,(%eax)
508f63:	74 0c                	je     0x508f71
508f65:	8b 40 0c             	mov    0xc(%eax),%eax
508f68:	85 c0                	test   %eax,%eax
508f6a:	75 f5                	jne    0x508f61
508f6c:	e9 90 02 00 00       	jmp    0x509201
508f71:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
508f77:	e9 85 02 00 00       	jmp    0x509201
508f7c:	85 c9                	test   %ecx,%ecx
508f7e:	0f 85 2a 01 00 00    	jne    0x5090ae
508f84:	8b 7d 1c             	mov    0x1c(%ebp),%edi
508f87:	8b 5f 04             	mov    0x4(%edi),%ebx
508f8a:	f6 c3 40             	test   $0x40,%bl
508f8d:	74 4b                	je     0x508fda
508f8f:	8b 45 e8             	mov    -0x18(%ebp),%eax
508f92:	38 88 a5 00 00 00    	cmp    %cl,0xa5(%eax)
508f98:	0f 85 7a 00 00 00    	jne    0x509018
508f9e:	8b 4d d8             	mov    -0x28(%ebp),%ecx
508fa1:	f7 41 18 00 00 01 00 	testl  $0x10000,0x18(%ecx)
508fa8:	74 61                	je     0x50900b
508faa:	8b 48 20             	mov    0x20(%eax),%ecx
508fad:	33 d2                	xor    %edx,%edx
508faf:	8b 40 24             	mov    0x24(%eax),%eax
508fb2:	89 45 cc             	mov    %eax,-0x34(%ebp)
508fb5:	8b c1                	mov    %ecx,%eax
508fb7:	25 01 00 00 10       	and    $0x10000001,%eax
508fbc:	83 f8 01             	cmp    $0x1,%eax
508fbf:	75 0f                	jne    0x508fd0
508fc1:	85 d2                	test   %edx,%edx
508fc3:	75 0b                	jne    0x508fd0
508fc5:	8b c1                	mov    %ecx,%eax
508fc7:	25 00 00 00 40       	and    $0x40000000,%eax
508fcc:	0b c2                	or     %edx,%eax
508fce:	75 48                	jne    0x509018
508fd0:	81 e1 00 00 00 20    	and    $0x20000000,%ecx
508fd6:	0b ca                	or     %edx,%ecx
508fd8:	75 3e                	jne    0x509018
508fda:	f7 c3 00 00 00 04    	test   $0x4000000,%ebx
508fe0:	0f 85 c5 00 00 00    	jne    0x5090ab
508fe6:	8b 57 08             	mov    0x8(%edi),%edx
508fe9:	bf a8 57 6e 00       	mov    $0x6e57a8,%edi
508fee:	8b f2                	mov    %edx,%esi
508ff0:	2b fa                	sub    %edx,%edi
508ff2:	0f b6 0e             	movzbl (%esi),%ecx
508ff5:	0f b6 04 37          	movzbl (%edi,%esi,1),%eax
508ff9:	3b c8                	cmp    %eax,%ecx
508ffb:	75 41                	jne    0x50903e
508ffd:	85 c9                	test   %ecx,%ecx
508fff:	75 4f                	jne    0x509050
509001:	b8 00 00 00 10       	mov    $0x10000000,%eax
509006:	e9 69 00 00 00       	jmp    0x509074
50900b:	8b 40 20             	mov    0x20(%eax),%eax
50900e:	25 00 00 00 40       	and    $0x40000000,%eax
509013:	83 c8 00             	or     $0x0,%eax
509016:	74 c2                	je     0x508fda
509018:	56                   	push   %esi
509019:	68 8c 8c 6b 00       	push   $0x6b8c8c
50901e:	6a 1c                	push   $0x1c
509020:	e8 bb 6f fd ff       	call   0x4dffe0
509025:	83 c4 0c             	add    $0xc,%esp
509028:	c6 07 73             	movb   $0x73,(%edi)
50902b:	c7 47 2c 00 00 00 00 	movl   $0x0,0x2c(%edi)
509032:	b8 01 00 00 00       	mov    $0x1,%eax
509037:	5f                   	pop    %edi
509038:	5e                   	pop    %esi
509039:	5b                   	pop    %ebx
50903a:	8b e5                	mov    %ebp,%esp
50903c:	5d                   	pop    %ebp
50903d:	c3                   	ret
50903e:	0f b6 80 20 2a 6b 00 	movzbl 0x6b2a20(%eax),%eax
509045:	0f b6 89 20 2a 6b 00 	movzbl 0x6b2a20(%ecx),%ecx
50904c:	2b c8                	sub    %eax,%ecx
50904e:	75 03                	jne    0x509053
509050:	46                   	inc    %esi
509051:	eb 9f                	jmp    0x508ff2
509053:	bf a0 57 6e 00       	mov    $0x6e57a0,%edi
509058:	2b fa                	sub    %edx,%edi
50905a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
509060:	0f b6 02             	movzbl (%edx),%eax
509063:	0f b6 34 17          	movzbl (%edi,%edx,1),%esi
509067:	3b c6                	cmp    %esi,%eax
509069:	75 20                	jne    0x50908b
50906b:	85 c0                	test   %eax,%eax
50906d:	75 2e                	jne    0x50909d
50906f:	b8 00 00 00 20       	mov    $0x20000000,%eax
509074:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
509077:	0b d8                	or     %eax,%ebx
509079:	5f                   	pop    %edi
50907a:	5e                   	pop    %esi
50907b:	b8 01 00 00 00       	mov    $0x1,%eax
509080:	89 59 04             	mov    %ebx,0x4(%ecx)
509083:	c6 01 a7             	movb   $0xa7,(%ecx)
509086:	5b                   	pop    %ebx
509087:	8b e5                	mov    %ebp,%esp
509089:	5d                   	pop    %ebp
50908a:	c3                   	ret
50908b:	0f b6 88 20 2a 6b 00 	movzbl 0x6b2a20(%eax),%ecx
509092:	0f b6 86 20 2a 6b 00 	movzbl 0x6b2a20(%esi),%eax
509099:	2b c8                	sub    %eax,%ecx
50909b:	75 0e                	jne    0x5090ab
50909d:	42                   	inc    %edx
50909e:	eb c0                	jmp    0x509060
5090a0:	83 fb 01             	cmp    $0x1,%ebx
5090a3:	0f 84 6f 00 00 00    	je     0x509118
5090a9:	eb 03                	jmp    0x5090ae
5090ab:	8b 5d f4             	mov    -0xc(%ebp),%ebx
5090ae:	8b 55 0c             	mov    0xc(%ebp),%edx
5090b1:	85 db                	test   %ebx,%ebx
5090b3:	b9 c0 8c 6b 00       	mov    $0x6b8cc0,%ecx
5090b8:	b8 b0 8c 6b 00       	mov    $0x6b8cb0,%eax
5090bd:	0f 45 c1             	cmovne %ecx,%eax
5090c0:	8b 4d 14             	mov    0x14(%ebp),%ecx
5090c3:	51                   	push   %ecx
5090c4:	85 d2                	test   %edx,%edx
5090c6:	74 17                	je     0x5090df
5090c8:	ff 75 10             	push   0x10(%ebp)
5090cb:	52                   	push   %edx
5090cc:	50                   	push   %eax
5090cd:	68 d8 8c 6b 00       	push   $0x6b8cd8
5090d2:	ff 75 08             	push   0x8(%ebp)
5090d5:	e8 86 a1 01 00       	call   0x523260
5090da:	83 c4 18             	add    $0x18,%esp
5090dd:	eb 2c                	jmp    0x50910b
5090df:	8b 55 10             	mov    0x10(%ebp),%edx
5090e2:	85 d2                	test   %edx,%edx
5090e4:	74 14                	je     0x5090fa
5090e6:	52                   	push   %edx
5090e7:	50                   	push   %eax
5090e8:	68 e8 8c 6b 00       	push   $0x6b8ce8
5090ed:	ff 75 08             	push   0x8(%ebp)
5090f0:	e8 6b a1 01 00       	call   0x523260
5090f5:	83 c4 14             	add    $0x14,%esp
5090f8:	eb 11                	jmp    0x50910b
5090fa:	50                   	push   %eax
5090fb:	68 f4 8c 6b 00       	push   $0x6b8cf4
509100:	ff 75 08             	push   0x8(%ebp)
509103:	e8 58 a1 01 00       	call   0x523260
509108:	83 c4 10             	add    $0x10,%esp
50910b:	8b 45 08             	mov    0x8(%ebp),%eax
50910e:	c6 40 11 01          	movb   $0x1,0x11(%eax)
509112:	8b 45 d8             	mov    -0x28(%ebp),%eax
509115:	ff 40 14             	incl   0x14(%eax)
509118:	8b 7d 1c             	mov    0x1c(%ebp),%edi
50911b:	0f b7 47 20          	movzwl 0x20(%edi),%eax
50911f:	66 85 c0             	test   %ax,%ax
509122:	0f 88 8e 00 00 00    	js     0x5091b6
509128:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
50912c:	0f 84 84 00 00 00    	je     0x5091b6
509132:	8b 77 2c             	mov    0x2c(%edi),%esi
509135:	0f bf d0             	movswl %ax,%edx
509138:	f6 46 24 60          	testb  $0x60,0x24(%esi)
50913c:	74 4f                	je     0x50918d
50913e:	8b 46 04             	mov    0x4(%esi),%eax
509141:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
509144:	f6 44 88 10 60       	testb  $0x60,0x10(%eax,%ecx,4)
509149:	74 42                	je     0x50918d
50914b:	0f b7 46 2a          	movzwl 0x2a(%esi),%eax
50914f:	66 83 f8 40          	cmp    $0x40,%ax
509153:	7c 11                	jl     0x509166
509155:	8b 45 fc             	mov    -0x4(%ebp),%eax
509158:	83 c9 ff             	or     $0xffffffff,%ecx
50915b:	83 ca ff             	or     $0xffffffff,%edx
50915e:	89 48 38             	mov    %ecx,0x38(%eax)
509161:	89 50 3c             	mov    %edx,0x3c(%eax)
509164:	eb 50                	jmp    0x5091b6
509166:	33 c9                	xor    %ecx,%ecx
509168:	98                   	cwtl
509169:	0f ab c1             	bts    %eax,%ecx
50916c:	33 d2                	xor    %edx,%edx
50916e:	83 f8 20             	cmp    $0x20,%eax
509171:	0f 43 d1             	cmovae %ecx,%edx
509174:	33 ca                	xor    %edx,%ecx
509176:	83 f8 40             	cmp    $0x40,%eax
509179:	8b 45 fc             	mov    -0x4(%ebp),%eax
50917c:	0f 43 d1             	cmovae %ecx,%edx
50917f:	83 c1 ff             	add    $0xffffffff,%ecx
509182:	83 d2 ff             	adc    $0xffffffff,%edx
509185:	89 48 38             	mov    %ecx,0x38(%eax)
509188:	89 50 3c             	mov    %edx,0x3c(%eax)
50918b:	eb 29                	jmp    0x5091b6
50918d:	83 fa 40             	cmp    $0x40,%edx
509190:	b8 3f 00 00 00       	mov    $0x3f,%eax
509195:	0f 4d d0             	cmovge %eax,%edx
509198:	33 c0                	xor    %eax,%eax
50919a:	0f ab d0             	bts    %edx,%eax
50919d:	33 c9                	xor    %ecx,%ecx
50919f:	83 fa 20             	cmp    $0x20,%edx
5091a2:	0f 43 c8             	cmovae %eax,%ecx
5091a5:	33 c1                	xor    %ecx,%eax
5091a7:	83 fa 40             	cmp    $0x40,%edx
5091aa:	8b 55 fc             	mov    -0x4(%ebp),%edx
5091ad:	0f 43 c8             	cmovae %eax,%ecx
5091b0:	09 42 38             	or     %eax,0x38(%edx)
5091b3:	09 4a 3c             	or     %ecx,0x3c(%edx)
5091b6:	8b 47 0c             	mov    0xc(%edi),%eax
5091b9:	8b 75 e8             	mov    -0x18(%ebp),%esi
5091bc:	85 c0                	test   %eax,%eax
5091be:	74 0a                	je     0x5091ca
5091c0:	50                   	push   %eax
5091c1:	56                   	push   %esi
5091c2:	e8 e9 d5 01 00       	call   0x5267b0