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
509322:	8b 44 24 04          	mov    0x4(%esp),%eax
509326:	81 c1 00 00 00 80    	add    $0x80000000,%ecx
50932c:	83 d0 00             	adc    $0x0,%eax
50932f:	85 c0                	test   %eax,%eax
509331:	77 0d                	ja     0x509340
509333:	72 05                	jb     0x50933a
509335:	83 f9 ff             	cmp    $0xffffffff,%ecx
509338:	77 06                	ja     0x509340
50933a:	8b c2                	mov    %edx,%eax
50933c:	83 c4 08             	add    $0x8,%esp
50933f:	c3                   	ret
509340:	83 c8 ff             	or     $0xffffffff,%eax
509343:	83 c4 08             	add    $0x8,%esp
509346:	c3                   	ret
509347:	cc                   	int3
509348:	cc                   	int3
509349:	cc                   	int3
50934a:	cc                   	int3
50934b:	cc                   	int3
50934c:	cc                   	int3
50934d:	cc                   	int3
50934e:	cc                   	int3
50934f:	cc                   	int3
509350:	6a 0a                	push   $0xa
509352:	ff 74 24 0c          	push   0xc(%esp)
509356:	ff 74 24 0c          	push   0xc(%esp)
50935a:	e8 41 04 00 00       	call   0x5097a0
50935f:	83 c4 0c             	add    $0xc,%esp
509362:	c3                   	ret
509363:	cc                   	int3
509364:	cc                   	int3
509365:	cc                   	int3
509366:	cc                   	int3
509367:	cc                   	int3
509368:	cc                   	int3
509369:	cc                   	int3
50936a:	cc                   	int3
50936b:	cc                   	int3
50936c:	cc                   	int3
50936d:	cc                   	int3
50936e:	cc                   	int3
50936f:	cc                   	int3
509370:	8b 4c 24 04          	mov    0x4(%esp),%ecx
509374:	8b 54 24 08          	mov    0x8(%esp),%edx
509378:	56                   	push   %esi
509379:	8b 71 04             	mov    0x4(%ecx),%esi
50937c:	8b 42 04             	mov    0x4(%edx),%eax
50937f:	81 e6 00 01 00 00    	and    $0x100,%esi
509385:	25 00 01 00 00       	and    $0x100,%eax
50938a:	3b f0                	cmp    %eax,%esi
50938c:	74 10                	je     0x50939e
50938e:	33 c0                	xor    %eax,%eax
509390:	85 f6                	test   %esi,%esi
509392:	5e                   	pop    %esi
509393:	0f 94 c0             	sete   %al
509396:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
50939d:	c3                   	ret
50939e:	52                   	push   %edx
50939f:	51                   	push   %ecx
5093a0:	e8 0b 0b 00 00       	call   0x509eb0
5093a5:	83 c4 08             	add    $0x8,%esp
5093a8:	85 f6                	test   %esi,%esi
5093aa:	74 02                	je     0x5093ae
5093ac:	f7 d8                	neg    %eax
5093ae:	5e                   	pop    %esi
5093af:	c3                   	ret
5093b0:	e9 7b 0c 00 00       	jmp    0x50a030
5093b5:	cc                   	int3
5093b6:	cc                   	int3
5093b7:	cc                   	int3
5093b8:	cc                   	int3
5093b9:	cc                   	int3
5093ba:	cc                   	int3
5093bb:	cc                   	int3
5093bc:	cc                   	int3
5093bd:	cc                   	int3
5093be:	cc                   	int3
5093bf:	cc                   	int3
5093c0:	b8 08 00 00 00       	mov    $0x8,%eax
5093c5:	e8 e6 83 0c 00       	call   0x5d17b0
5093ca:	8b 44 24 0c          	mov    0xc(%esp),%eax
5093ce:	85 c0                	test   %eax,%eax
5093d0:	75 04                	jne    0x5093d6
5093d2:	83 c4 08             	add    $0x8,%esp
5093d5:	c3                   	ret
5093d6:	6a 02                	push   $0x2
5093d8:	50                   	push   %eax
5093d9:	8d 44 24 08          	lea    0x8(%esp),%eax
5093dd:	50                   	push   %eax
5093de:	e8 cd 01 00 00       	call   0x5095b0
5093e3:	83 c4 0c             	add    $0xc,%esp
5093e6:	85 c0                	test   %eax,%eax
5093e8:	74 23                	je     0x50940d
5093ea:	8b 14 24             	mov    (%esp),%edx
5093ed:	8b ca                	mov    %edx,%ecx
5093ef:	8b 44 24 04          	mov    0x4(%esp),%eax
5093f3:	81 c1 00 00 00 80    	add    $0x80000000,%ecx
5093f9:	83 d0 00             	adc    $0x0,%eax
5093fc:	85 c0                	test   %eax,%eax
5093fe:	77 0d                	ja     0x50940d
509400:	72 05                	jb     0x509407
509402:	83 f9 ff             	cmp    $0xffffffff,%ecx
509405:	77 06                	ja     0x50940d
509407:	8b c2                	mov    %edx,%eax
509409:	83 c4 08             	add    $0x8,%esp
50940c:	c3                   	ret
50940d:	83 c8 ff             	or     $0xffffffff,%eax
509410:	83 c4 08             	add    $0x8,%esp
509413:	c3                   	ret
509414:	cc                   	int3
509415:	cc                   	int3
509416:	cc                   	int3
509417:	cc                   	int3
509418:	cc                   	int3
509419:	cc                   	int3
50941a:	cc                   	int3
50941b:	cc                   	int3
50941c:	cc                   	int3
50941d:	cc                   	int3
50941e:	cc                   	int3
50941f:	cc                   	int3
509420:	8b 4c 24 08          	mov    0x8(%esp),%ecx
509424:	85 c9                	test   %ecx,%ecx
509426:	75 1e                	jne    0x509446
509428:	68 65 01 00 00       	push   $0x165
50942d:	68 14 ae 62 00       	push   $0x62ae14
509432:	6a 43                	push   $0x43
509434:	68 e6 00 00 00       	push   $0xe6
509439:	6a 0d                	push   $0xd
50943b:	e8 40 fb fc ff       	call   0x4d8f80
509440:	83 c4 14             	add    $0x14,%esp
509443:	33 c0                	xor    %eax,%eax
509445:	c3                   	ret
509446:	8b 51 04             	mov    0x4(%ecx),%edx
509449:	8b c2                	mov    %edx,%eax
50944b:	25 ff fe ff ff       	and    $0xfffffeff,%eax
509450:	83 f8 02             	cmp    $0x2,%eax
509453:	74 21                	je     0x509476
509455:	68 69 01 00 00       	push   $0x169
50945a:	68 14 ae 62 00       	push   $0x62ae14
50945f:	68 e1 00 00 00       	push   $0xe1
509464:	68 e6 00 00 00       	push   $0xe6
509469:	6a 0d                	push   $0xd
50946b:	e8 10 fb fc ff       	call   0x4d8f80
509470:	83 c4 14             	add    $0x14,%esp
509473:	33 c0                	xor    %eax,%eax
509475:	c3                   	ret
509476:	f7 c2 00 01 00 00    	test   $0x100,%edx
50947c:	74 21                	je     0x50949f
50947e:	68 6d 01 00 00       	push   $0x16d
509483:	68 14 ae 62 00       	push   $0x62ae14
509488:	68 e2 00 00 00       	push   $0xe2
50948d:	68 e6 00 00 00       	push   $0xe6
509492:	6a 0d                	push   $0xd
509494:	e8 e7 fa fc ff       	call   0x4d8f80
509499:	83 c4 14             	add    $0x14,%esp
50949c:	33 c0                	xor    %eax,%eax
50949e:	c3                   	ret
50949f:	ff 31                	push   (%ecx)
5094a1:	ff 71 08             	push   0x8(%ecx)
5094a4:	ff 74 24 0c          	push   0xc(%esp)
5094a8:	e8 73 00 00 00       	call   0x509520
5094ad:	83 c4 0c             	add    $0xc,%esp
5094b0:	c3                   	ret
5094b1:	cc                   	int3
5094b2:	cc                   	int3
5094b3:	cc                   	int3
5094b4:	cc                   	int3
5094b5:	cc                   	int3
5094b6:	cc                   	int3
5094b7:	cc                   	int3
5094b8:	cc                   	int3
5094b9:	cc                   	int3
5094ba:	cc                   	int3
5094bb:	cc                   	int3