508f92:	83 c4 08             	add    $0x8,%esp
508f95:	8d 04 b5 00 00 00 00 	lea    0x0(,%esi,4),%eax
508f9c:	3d e0 ff ff 7f       	cmp    $0x7fffffe0,%eax
508fa1:	0f 8f ae 00 00 00    	jg     0x509055
508fa7:	83 c0 1f             	add    $0x1f,%eax
508faa:	99                   	cltd
508fab:	83 e2 1f             	and    $0x1f,%edx
508fae:	03 c2                	add    %edx,%eax
508fb0:	c1 f8 05             	sar    $0x5,%eax
508fb3:	3b 47 08             	cmp    0x8(%edi),%eax
508fb6:	7f 04                	jg     0x508fbc
508fb8:	8b c7                	mov    %edi,%eax
508fba:	eb 0a                	jmp    0x508fc6
508fbc:	50                   	push   %eax
508fbd:	57                   	push   %edi
508fbe:	e8 bd 14 fd ff       	call   0x4da480
508fc3:	83 c4 08             	add    $0x8,%esp
508fc6:	85 c0                	test   %eax,%eax
508fc8:	0f 84 87 00 00 00    	je     0x509055
508fce:	b8 39 8e e3 38       	mov    $0x38e38e39,%eax
508fd3:	33 db                	xor    %ebx,%ebx
508fd5:	f7 e6                	mul    %esi
508fd7:	d1 ea                	shr    $1,%edx
508fd9:	8d 04 d2             	lea    (%edx,%edx,8),%eax
508fdc:	2b c6                	sub    %esi,%eax
508fde:	83 ee 01             	sub    $0x1,%esi
508fe1:	8d 48 09             	lea    0x9(%eax),%ecx
508fe4:	78 49                	js     0x50902f
508fe6:	33 d2                	xor    %edx,%edx
508fe8:	85 c0                	test   %eax,%eax
508fea:	0f 45 d1             	cmovne %ecx,%edx
508fed:	0f 1f 00             	nopl   (%eax)
508ff0:	0f be 45 00          	movsbl 0x0(%ebp),%eax
508ff4:	8d 1c 9b             	lea    (%ebx,%ebx,4),%ebx
508ff7:	42                   	inc    %edx
508ff8:	8d 5b e8             	lea    -0x18(%ebx),%ebx
508ffb:	8d 6d 01             	lea    0x1(%ebp),%ebp
508ffe:	8d 1c 58             	lea    (%eax,%ebx,2),%ebx
509001:	83 fa 09             	cmp    $0x9,%edx
509004:	75 24                	jne    0x50902a
509006:	68 00 ca 9a 3b       	push   $0x3b9aca00
50900b:	57                   	push   %edi
50900c:	e8 1f 38 ff ff       	call   0x4fc830
509011:	83 c4 08             	add    $0x8,%esp
509014:	85 c0                	test   %eax,%eax
509016:	74 3d                	je     0x509055
509018:	53                   	push   %ebx
509019:	57                   	push   %edi
50901a:	e8 71 35 ff ff       	call   0x4fc590
50901f:	83 c4 08             	add    $0x8,%esp
509022:	85 c0                	test   %eax,%eax
509024:	74 2f                	je     0x509055
509026:	33 db                	xor    %ebx,%ebx
509028:	33 d2                	xor    %edx,%edx
50902a:	83 ee 01             	sub    $0x1,%esi
50902d:	79 c1                	jns    0x508ff0
50902f:	57                   	push   %edi
509030:	e8 1b 14 fd ff       	call   0x4da450
509035:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
509039:	83 c4 04             	add    $0x4,%esp
50903c:	89 39                	mov    %edi,(%ecx)
50903e:	83 7f 04 00          	cmpl   $0x0,0x4(%edi)
509042:	74 07                	je     0x50904b
509044:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
509048:	89 4f 0c             	mov    %ecx,0xc(%edi)
50904b:	8b 44 24 10          	mov    0x10(%esp),%eax
50904f:	5f                   	pop    %edi
509050:	5e                   	pop    %esi
509051:	5d                   	pop    %ebp
509052:	5b                   	pop    %ebx
509053:	59                   	pop    %ecx
509054:	c3                   	ret
509055:	8b 4c 24 18          	mov    0x18(%esp),%ecx
509059:	83 39 00             	cmpl   $0x0,(%ecx)
50905c:	75 09                	jne    0x509067
50905e:	57                   	push   %edi
50905f:	e8 bc 0b fd ff       	call   0x4d9c20
509064:	83 c4 04             	add    $0x4,%esp
509067:	5f                   	pop    %edi
509068:	5e                   	pop    %esi
509069:	5d                   	pop    %ebp
50906a:	33 c0                	xor    %eax,%eax
50906c:	5b                   	pop    %ebx
50906d:	59                   	pop    %ecx
50906e:	c3                   	ret
50906f:	cc                   	int3
509070:	b8 14 00 00 00       	mov    $0x14,%eax
509075:	e8 36 87 0c 00       	call   0x5d17b0
50907a:	8b 44 24 1c          	mov    0x1c(%esp),%eax
50907e:	53                   	push   %ebx
50907f:	55                   	push   %ebp
509080:	56                   	push   %esi
509081:	33 db                	xor    %ebx,%ebx
509083:	57                   	push   %edi
509084:	85 c0                	test   %eax,%eax
509086:	0f 84 8a 01 00 00    	je     0x509216
50908c:	8a 08                	mov    (%eax),%cl
50908e:	84 c9                	test   %cl,%cl
509090:	0f 84 80 01 00 00    	je     0x509216
509096:	80 f9 2d             	cmp    $0x2d,%cl
509099:	8d 58 01             	lea    0x1(%eax),%ebx
50909c:	0f 45 d8             	cmovne %eax,%ebx
50909f:	33 c0                	xor    %eax,%eax
5090a1:	80 f9 2d             	cmp    $0x2d,%cl
5090a4:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
5090a8:	0f 94 c0             	sete   %al
5090ab:	33 f6                	xor    %esi,%esi
5090ad:	89 44 24 18          	mov    %eax,0x18(%esp)
5090b1:	0f be 04 33          	movsbl (%ebx,%esi,1),%eax
5090b5:	6a 10                	push   $0x10
5090b7:	50                   	push   %eax
5090b8:	e8 e3 af fd ff       	call   0x4e40a0
5090bd:	83 c4 08             	add    $0x8,%esp
5090c0:	85 c0                	test   %eax,%eax
5090c2:	74 09                	je     0x5090cd
5090c4:	46                   	inc    %esi
5090c5:	81 fe ff ff ff 1f    	cmp    $0x1fffffff,%esi
5090cb:	7e e4                	jle    0x5090b1
5090cd:	89 74 24 2c          	mov    %esi,0x2c(%esp)
5090d1:	bb 00 00 00 00       	mov    $0x0,%ebx
5090d6:	85 f6                	test   %esi,%esi
5090d8:	0f 84 26 01 00 00    	je     0x509204
5090de:	81 fe ff ff ff 1f    	cmp    $0x1fffffff,%esi
5090e4:	0f 87 1a 01 00 00    	ja     0x509204
5090ea:	8b 7c 24 18          	mov    0x18(%esp),%edi
5090ee:	8b 44 24 28          	mov    0x28(%esp),%eax
5090f2:	8d 2c 37             	lea    (%edi,%esi,1),%ebp
5090f5:	89 6c 24 20          	mov    %ebp,0x20(%esp)
5090f9:	85 c0                	test   %eax,%eax
5090fb:	0f 84 f9 00 00 00    	je     0x5091fa
509101:	8b 18                	mov    (%eax),%ebx
509103:	89 5c 24 10          	mov    %ebx,0x10(%esp)
509107:	85 db                	test   %ebx,%ebx
509109:	75 17                	jne    0x509122
50910b:	e8 d0 0c fd ff       	call   0x4d9de0
509110:	8b d8                	mov    %eax,%ebx
509112:	89 44 24 10          	mov    %eax,0x10(%esp)
509116:	85 db                	test   %ebx,%ebx
509118:	75 13                	jne    0x50912d
50911a:	5f                   	pop    %edi
50911b:	5e                   	pop    %esi
50911c:	5d                   	pop    %ebp
50911d:	5b                   	pop    %ebx
50911e:	83 c4 14             	add    $0x14,%esp
509121:	c3                   	ret
509122:	6a 00                	push   $0x0
509124:	53                   	push   %ebx
509125:	e8 b6 0f fd ff       	call   0x4da0e0
50912a:	83 c4 08             	add    $0x8,%esp
50912d:	8d 04 b5 00 00 00 00 	lea    0x0(,%esi,4),%eax
509134:	3d e0 ff ff 7f       	cmp    $0x7fffffe0,%eax
509139:	0f 8f c5 00 00 00    	jg     0x509204
50913f:	83 c0 1f             	add    $0x1f,%eax
509142:	99                   	cltd
509143:	83 e2 1f             	and    $0x1f,%edx
509146:	03 c2                	add    %edx,%eax
509148:	c1 f8 05             	sar    $0x5,%eax
50914b:	3b 43 08             	cmp    0x8(%ebx),%eax
50914e:	7f 04                	jg     0x509154
509150:	8b c3                	mov    %ebx,%eax
509152:	eb 0a                	jmp    0x50915e
509154:	50                   	push   %eax
509155:	53                   	push   %ebx
509156:	e8 25 13 fd ff       	call   0x4da480
50915b:	83 c4 08             	add    $0x8,%esp
50915e:	85 c0                	test   %eax,%eax
509160:	0f 84 9e 00 00 00    	je     0x509204
509166:	33 c9                	xor    %ecx,%ecx
509168:	89 4c 24 14          	mov    %ecx,0x14(%esp)
50916c:	85 f6                	test   %esi,%esi
50916e:	74 6f                	je     0x5091df
509170:	b8 08 00 00 00       	mov    $0x8,%eax
509175:	83 fe 08             	cmp    $0x8,%esi
509178:	8b de                	mov    %esi,%ebx
50917a:	8b ee                	mov    %esi,%ebp
50917c:	8b 74 24 1c          	mov    0x1c(%esp),%esi
509180:	0f 43 d8             	cmovae %eax,%ebx
509183:	33 ff                	xor    %edi,%edi
509185:	2b eb                	sub    %ebx,%ebp
509187:	66 0f 1f 84 00 00 00 	nopw   0x0(%eax,%eax,1)
50918e:	00 00
509190:	0f b6 04 2e          	movzbl (%esi,%ebp,1),%eax
509194:	50                   	push   %eax
509195:	e8 96 90 fd ff       	call   0x4e2230
50919a:	33 c9                	xor    %ecx,%ecx
50919c:	8d 6d 01             	lea    0x1(%ebp),%ebp
50919f:	83 c4 04             	add    $0x4,%esp
5091a2:	85 c0                	test   %eax,%eax
5091a4:	0f 48 c1             	cmovs  %ecx,%eax
5091a7:	c1 e7 04             	shl    $0x4,%edi
5091aa:	4b                   	dec    %ebx
5091ab:	0b f8                	or     %eax,%edi
5091ad:	85 db                	test   %ebx,%ebx
5091af:	7f df                	jg     0x509190
5091b1:	8b 5c 24 10          	mov    0x10(%esp),%ebx
5091b5:	8b 4c 24 14          	mov    0x14(%esp),%ecx
5091b9:	8b 74 24 2c          	mov    0x2c(%esp),%esi
5091bd:	83 ee 08             	sub    $0x8,%esi
5091c0:	8b 03                	mov    (%ebx),%eax
5091c2:	89 74 24 2c          	mov    %esi,0x2c(%esp)
5091c6:	89 3c 88             	mov    %edi,(%eax,%ecx,4)
5091c9:	41                   	inc    %ecx
5091ca:	89 4c 24 14          	mov    %ecx,0x14(%esp)
5091ce:	b8 08 00 00 00       	mov    $0x8,%eax
5091d3:	85 f6                	test   %esi,%esi
5091d5:	7f 9e                	jg     0x509175
5091d7:	8b 7c 24 18          	mov    0x18(%esp),%edi
5091db:	8b 6c 24 20          	mov    0x20(%esp),%ebp
5091df:	53                   	push   %ebx
5091e0:	89 4b 04             	mov    %ecx,0x4(%ebx)
5091e3:	e8 68 12 fd ff       	call   0x4da450
5091e8:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
5091ec:	83 c4 04             	add    $0x4,%esp
5091ef:	89 19                	mov    %ebx,(%ecx)
5091f1:	83 7b 04 00          	cmpl   $0x0,0x4(%ebx)
5091f5:	74 03                	je     0x5091fa
5091f7:	89 7b 0c             	mov    %edi,0xc(%ebx)
5091fa:	5f                   	pop    %edi
5091fb:	5e                   	pop    %esi
5091fc:	8b c5                	mov    %ebp,%eax
5091fe:	5d                   	pop    %ebp
5091ff:	5b                   	pop    %ebx
509200:	83 c4 14             	add    $0x14,%esp
509203:	c3                   	ret
509204:	8b 4c 24 28          	mov    0x28(%esp),%ecx
509208:	83 39 00             	cmpl   $0x0,(%ecx)
50920b:	75 09                	jne    0x509216
50920d:	53                   	push   %ebx
50920e:	e8 0d 0a fd ff       	call   0x4d9c20
509213:	83 c4 04             	add    $0x4,%esp
509216:	5f                   	pop    %edi
509217:	5e                   	pop    %esi
509218:	5d                   	pop    %ebp
509219:	33 c0                	xor    %eax,%eax
50921b:	5b                   	pop    %ebx
50921c:	83 c4 14             	add    $0x14,%esp
50921f:	c3                   	ret
509220:	55                   	push   %ebp
509221:	8b 6c 24 08          	mov    0x8(%esp),%ebp
509225:	56                   	push   %esi
509226:	8b 74 24 10          	mov    0x10(%esp),%esi
50922a:	57                   	push   %edi
50922b:	33 ff                	xor    %edi,%edi
50922d:	39 7e 0c             	cmp    %edi,0xc(%esi)
509230:	74 1b                	je     0x50924d
509232:	6a 01                	push   $0x1
509234:	68 10 ae 62 00       	push   $0x62ae10
509239:	55                   	push   %ebp
50923a:	e8 81 02 ff ff       	call   0x4f94c0
50923f:	83 c4 0c             	add    $0xc,%esp
509242:	83 f8 01             	cmp    $0x1,%eax
509245:	74 06                	je     0x50924d
509247:	5f                   	pop    %edi
509248:	5e                   	pop    %esi
509249:	33 c0                	xor    %eax,%eax
50924b:	5d                   	pop    %ebp
50924c:	c3                   	ret
50924d:	56                   	push   %esi
50924e:	e8 0d 0b fd ff       	call   0x4d9d60
509253:	83 c4 04             	add    $0x4,%esp
509256:	85 c0                	test   %eax,%eax
509258:	74 15                	je     0x50926f
50925a:	6a 01                	push   $0x1
50925c:	68 b8 25 60 00       	push   $0x6025b8
509261:	55                   	push   %ebp
509262:	e8 59 02 ff ff       	call   0x4f94c0
509267:	83 c4 0c             	add    $0xc,%esp
50926a:	83 f8 01             	cmp    $0x1,%eax
50926d:	75 d8                	jne    0x509247
50926f:	8b c6                	mov    %esi,%eax
509271:	53                   	push   %ebx
509272:	8b 58 04             	mov    0x4(%eax),%ebx
509275:	83 eb 01             	sub    $0x1,%ebx
509278:	78 46                	js     0x5092c0
50927a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
509280:	be 1c 00 00 00       	mov    $0x1c,%esi
509285:	8b 00                	mov    (%eax),%eax
509287:	8b ce                	mov    %esi,%ecx
509289:	8b 04 98             	mov    (%eax,%ebx,4),%eax
50928c:	d3 e8                	shr    %cl,%eax
50928e:	83 e0 0f             	and    $0xf,%eax
509291:	85 ff                	test   %edi,%edi
509293:	75 04                	jne    0x509299
509295:	85 c0                	test   %eax,%eax
509297:	74 19                	je     0x5092b2
509299:	6a 01                	push   $0x1
50929b:	8d 80 dc ad 62 00    	lea    0x62addc(%eax),%eax
5092a1:	50                   	push   %eax
5092a2:	55                   	push   %ebp
5092a3:	e8 18 02 ff ff       	call   0x4f94c0
5092a8:	83 c4 0c             	add    $0xc,%esp
5092ab:	83 f8 01             	cmp    $0x1,%eax
5092ae:	75 1a                	jne    0x5092ca
5092b0:	8b f8                	mov    %eax,%edi
5092b2:	83 ee 04             	sub    $0x4,%esi
5092b5:	8b 44 24 18          	mov    0x18(%esp),%eax
5092b9:	79 ca                	jns    0x509285
5092bb:	83 eb 01             	sub    $0x1,%ebx
5092be:	79 c0                	jns    0x509280
5092c0:	b8 01 00 00 00       	mov    $0x1,%eax
5092c5:	5b                   	pop    %ebx
5092c6:	5f                   	pop    %edi
5092c7:	5e                   	pop    %esi
5092c8:	5d                   	pop    %ebp
5092c9:	c3                   	ret
5092ca:	5b                   	pop    %ebx
5092cb:	5f                   	pop    %edi
5092cc:	5e                   	pop    %esi
5092cd:	33 c0                	xor    %eax,%eax
5092cf:	5d                   	pop    %ebp
5092d0:	c3                   	ret
5092d1:	cc                   	int3
5092d2:	cc                   	int3
5092d3:	cc                   	int3
5092d4:	cc                   	int3
5092d5:	cc                   	int3
5092d6:	cc                   	int3
5092d7:	cc                   	int3
5092d8:	cc                   	int3
5092d9:	cc                   	int3
5092da:	cc                   	int3
5092db:	cc                   	int3
5092dc:	cc                   	int3
5092dd:	cc                   	int3
5092de:	cc                   	int3
5092df:	cc                   	int3
5092e0:	b8 08 00 00 00       	mov    $0x8,%eax
5092e5:	e8 c6 84 0c 00       	call   0x5d17b0
5092ea:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5092ee:	85 c9                	test   %ecx,%ecx
5092f0:	75 06                	jne    0x5092f8
5092f2:	33 c0                	xor    %eax,%eax
5092f4:	83 c4 08             	add    $0x8,%esp
5092f7:	c3                   	ret
5092f8:	8b 41 04             	mov    0x4(%ecx),%eax
5092fb:	25 ff fe ff ff       	and    $0xfffffeff,%eax
509300:	83 f8 0a             	cmp    $0xa,%eax
509303:	75 3b                	jne    0x509340
509305:	83 39 04             	cmpl   $0x4,(%ecx)
509308:	7f 36                	jg     0x509340
50930a:	50                   	push   %eax
50930b:	51                   	push   %ecx
50930c:	8d 44 24 08          	lea    0x8(%esp),%eax
509310:	50                   	push   %eax
509311:	e8 9a 02 00 00       	call   0x5095b0
509316:	83 c4 0c             	add    $0xc,%esp
509319:	85 c0                	test   %eax,%eax
50931b:	74 23                	je     0x509340
50931d:	8b 14 24             	mov    (%esp),%edx
509320:	8b ca                	mov    %edx,%ecx