6051f4:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
6051fa:	e9 7f 03 00 00       	jmp    0x60557e
6051ff:	85 db                	test   %ebx,%ebx
605201:	0f 88 5f 03 00 00    	js     0x605566
605207:	3b 1d b8 12 73 00    	cmp    0x7312b8,%ebx
60520d:	0f 83 53 03 00 00    	jae    0x605566
605213:	8b c3                	mov    %ebx,%eax
605215:	8b cb                	mov    %ebx,%ecx
605217:	c1 f9 06             	sar    $0x6,%ecx
60521a:	83 e0 3f             	and    $0x3f,%eax
60521d:	6b f8 38             	imul   $0x38,%eax,%edi
605220:	89 4d f8             	mov    %ecx,-0x8(%ebp)
605223:	8b 04 8d b8 10 73 00 	mov    0x7310b8(,%ecx,4),%eax
60522a:	33 c9                	xor    %ecx,%ecx
60522c:	41                   	inc    %ecx
60522d:	89 7d f0             	mov    %edi,-0x10(%ebp)
605230:	89 4d e0             	mov    %ecx,-0x20(%ebp)
605233:	8a 54 38 28          	mov    0x28(%eax,%edi,1),%dl
605237:	84 d1                	test   %dl,%cl
605239:	0f 84 27 03 00 00    	je     0x605566
60523f:	8b 4d 10             	mov    0x10(%ebp),%ecx
605242:	81 f9 ff ff ff 7f    	cmp    $0x7fffffff,%ecx
605248:	76 18                	jbe    0x605262
60524a:	e8 97 7d fe ff       	call   0x5ecfe6
60524f:	83 20 00             	andl   $0x0,(%eax)
605252:	e8 a2 7d fe ff       	call   0x5ecff9
605257:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
60525d:	e9 17 03 00 00       	jmp    0x605579
605262:	85 c9                	test   %ecx,%ecx
605264:	0f 84 f8 02 00 00    	je     0x605562
60526a:	f6 c2 02             	test   $0x2,%dl
60526d:	0f 85 ef 02 00 00    	jne    0x605562
605273:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
605277:	74 d1                	je     0x60524a
605279:	8b 54 38 18          	mov    0x18(%eax,%edi,1),%edx
60527d:	89 55 e8             	mov    %edx,-0x18(%ebp)
605280:	8a 54 38 29          	mov    0x29(%eax,%edi,1),%dl
605284:	88 55 ff             	mov    %dl,-0x1(%ebp)
605287:	56                   	push   %esi
605288:	0f be d2             	movsbl %dl,%edx
60528b:	33 f6                	xor    %esi,%esi
60528d:	83 ea 01             	sub    $0x1,%edx
605290:	74 4f                	je     0x6052e1
605292:	83 ea 01             	sub    $0x1,%edx
605295:	74 0e                	je     0x6052a5
605297:	8b 55 0c             	mov    0xc(%ebp),%edx
60529a:	89 4d f4             	mov    %ecx,-0xc(%ebp)
60529d:	89 55 ec             	mov    %edx,-0x14(%ebp)
6052a0:	e9 c0 00 00 00       	jmp    0x605365
6052a5:	8b c1                	mov    %ecx,%eax
6052a7:	f7 d0                	not    %eax
6052a9:	a8 01                	test   $0x1,%al
6052ab:	75 1c                	jne    0x6052c9
6052ad:	e8 34 7d fe ff       	call   0x5ecfe6
6052b2:	21 30                	and    %esi,(%eax)
6052b4:	e8 40 7d fe ff       	call   0x5ecff9
6052b9:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
6052bf:	e8 5b 7c fe ff       	call   0x5ecf1f
6052c4:	e9 d0 01 00 00       	jmp    0x605499
6052c9:	8b 7d f8             	mov    -0x8(%ebp),%edi
6052cc:	8b 55 0c             	mov    0xc(%ebp),%edx
6052cf:	89 4d f4             	mov    %ecx,-0xc(%ebp)
6052d2:	89 55 ec             	mov    %edx,-0x14(%ebp)
6052d5:	8b 04 bd b8 10 73 00 	mov    0x7310b8(,%edi,4),%eax
6052dc:	e9 84 00 00 00       	jmp    0x605365
6052e1:	8b c1                	mov    %ecx,%eax
6052e3:	f7 d0                	not    %eax
6052e5:	a8 01                	test   $0x1,%al
6052e7:	74 c4                	je     0x6052ad
6052e9:	6a 04                	push   $0x4
6052eb:	58                   	pop    %eax
6052ec:	d1 e9                	shr    $1,%ecx
6052ee:	89 45 f4             	mov    %eax,-0xc(%ebp)
6052f1:	3b c8                	cmp    %eax,%ecx
6052f3:	72 05                	jb     0x6052fa
6052f5:	8b c1                	mov    %ecx,%eax
6052f7:	89 4d f4             	mov    %ecx,-0xc(%ebp)
6052fa:	50                   	push   %eax
6052fb:	e8 f5 0a 00 00       	call   0x605df5
605300:	6a 00                	push   $0x0
605302:	8b f0                	mov    %eax,%esi
605304:	e8 1f f5 ff ff       	call   0x604828
605309:	6a 00                	push   $0x0
60530b:	e8 18 f5 ff ff       	call   0x604828
605310:	83 c4 0c             	add    $0xc,%esp
605313:	89 75 ec             	mov    %esi,-0x14(%ebp)
605316:	85 f6                	test   %esi,%esi
605318:	75 1b                	jne    0x605335
60531a:	e8 da 7c fe ff       	call   0x5ecff9
60531f:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
605325:	e8 bc 7c fe ff       	call   0x5ecfe6
60532a:	c7 00 08 00 00 00    	movl   $0x8,(%eax)
605330:	e9 64 01 00 00       	jmp    0x605499
605335:	6a 01                	push   $0x1
605337:	6a 00                	push   $0x0
605339:	6a 00                	push   $0x0
60533b:	53                   	push   %ebx
60533c:	e8 7c 05 00 00       	call   0x6058bd
605341:	8b 4d f8             	mov    -0x8(%ebp),%ecx
605344:	83 c4 10             	add    $0x10,%esp
605347:	8b 0c 8d b8 10 73 00 	mov    0x7310b8(,%ecx,4),%ecx
60534e:	89 44 0f 20          	mov    %eax,0x20(%edi,%ecx,1)
605352:	8b 45 f8             	mov    -0x8(%ebp),%eax
605355:	89 54 0f 24          	mov    %edx,0x24(%edi,%ecx,1)
605359:	8b d6                	mov    %esi,%edx
60535b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
60535e:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
605365:	8b 5d f0             	mov    -0x10(%ebp),%ebx
605368:	33 ff                	xor    %edi,%edi
60536a:	89 55 dc             	mov    %edx,-0x24(%ebp)
60536d:	f6 44 03 28 48       	testb  $0x48,0x28(%ebx,%eax,1)
605372:	8b 5d 08             	mov    0x8(%ebp),%ebx
605375:	0f 84 bf 00 00 00    	je     0x60543a
60537b:	8b 5d f0             	mov    -0x10(%ebp),%ebx
60537e:	8a 44 03 2a          	mov    0x2a(%ebx,%eax,1),%al
605382:	8b 5d 08             	mov    0x8(%ebp),%ebx
605385:	3c 0a                	cmp    $0xa,%al
605387:	0f 84 ad 00 00 00    	je     0x60543a
60538d:	85 c9                	test   %ecx,%ecx
60538f:	0f 84 a5 00 00 00    	je     0x60543a
605395:	8b 5d f0             	mov    -0x10(%ebp),%ebx
605398:	47                   	inc    %edi
605399:	88 02                	mov    %al,(%edx)
60539b:	42                   	inc    %edx
60539c:	8b 45 f8             	mov    -0x8(%ebp),%eax
60539f:	49                   	dec    %ecx
6053a0:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
6053a4:	89 55 ec             	mov    %edx,-0x14(%ebp)
6053a7:	89 4d f4             	mov    %ecx,-0xc(%ebp)
6053aa:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
6053b1:	c6 44 03 2a 0a       	movb   $0xa,0x2a(%ebx,%eax,1)
6053b6:	8b 5d 08             	mov    0x8(%ebp),%ebx
6053b9:	74 7f                	je     0x60543a
6053bb:	8b 45 f8             	mov    -0x8(%ebp),%eax
6053be:	8b 5d f0             	mov    -0x10(%ebp),%ebx
6053c1:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
6053c8:	8a 44 03 2b          	mov    0x2b(%ebx,%eax,1),%al
6053cc:	8b 5d 08             	mov    0x8(%ebp),%ebx
6053cf:	3c 0a                	cmp    $0xa,%al
6053d1:	74 67                	je     0x60543a
6053d3:	85 c9                	test   %ecx,%ecx
6053d5:	74 63                	je     0x60543a
6053d7:	8b 5d f0             	mov    -0x10(%ebp),%ebx
6053da:	88 02                	mov    %al,(%edx)
6053dc:	42                   	inc    %edx
6053dd:	8b 45 f8             	mov    -0x8(%ebp),%eax
6053e0:	49                   	dec    %ecx
6053e1:	80 7d ff 01          	cmpb   $0x1,-0x1(%ebp)
6053e5:	6a 02                	push   $0x2
6053e7:	89 55 ec             	mov    %edx,-0x14(%ebp)
6053ea:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
6053f1:	5f                   	pop    %edi
6053f2:	89 4d f4             	mov    %ecx,-0xc(%ebp)
6053f5:	c6 44 03 2b 0a       	movb   $0xa,0x2b(%ebx,%eax,1)
6053fa:	8b 5d 08             	mov    0x8(%ebp),%ebx
6053fd:	75 3b                	jne    0x60543a
6053ff:	8b 45 f8             	mov    -0x8(%ebp),%eax
605402:	8b 5d f0             	mov    -0x10(%ebp),%ebx
605405:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
60540c:	8a 44 03 2c          	mov    0x2c(%ebx,%eax,1),%al
605410:	8b 5d 08             	mov    0x8(%ebp),%ebx
605413:	3c 0a                	cmp    $0xa,%al
605415:	74 23                	je     0x60543a
605417:	85 c9                	test   %ecx,%ecx
605419:	74 1f                	je     0x60543a
60541b:	88 02                	mov    %al,(%edx)
60541d:	42                   	inc    %edx
60541e:	8b 45 f8             	mov    -0x8(%ebp),%eax
605421:	49                   	dec    %ecx
605422:	89 4d f4             	mov    %ecx,-0xc(%ebp)
605425:	8b 4d f0             	mov    -0x10(%ebp),%ecx
605428:	6a 03                	push   $0x3
60542a:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
605431:	89 55 ec             	mov    %edx,-0x14(%ebp)
605434:	5f                   	pop    %edi
605435:	c6 44 01 2c 0a       	movb   $0xa,0x2c(%ecx,%eax,1)
60543a:	53                   	push   %ebx
60543b:	e8 4d b1 00 00       	call   0x61058d
605440:	59                   	pop    %ecx
605441:	85 c0                	test   %eax,%eax
605443:	74 71                	je     0x6054b6
605445:	8b 45 f8             	mov    -0x8(%ebp),%eax
605448:	8b 4d f0             	mov    -0x10(%ebp),%ecx
60544b:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
605452:	80 7c 01 28 00       	cmpb   $0x0,0x28(%ecx,%eax,1)
605457:	7d 5d                	jge    0x6054b6
605459:	8d 45 d8             	lea    -0x28(%ebp),%eax
60545c:	50                   	push   %eax
60545d:	ff 75 e8             	push   -0x18(%ebp)
605460:	ff 15 28 22 68 00    	call   *0x682228
605466:	85 c0                	test   %eax,%eax
605468:	74 4c                	je     0x6054b6
60546a:	80 7d ff 02          	cmpb   $0x2,-0x1(%ebp)
60546e:	75 4a                	jne    0x6054ba
605470:	6a 00                	push   $0x0
605472:	8d 45 e4             	lea    -0x1c(%ebp),%eax
605475:	50                   	push   %eax
605476:	8b 45 f4             	mov    -0xc(%ebp),%eax
605479:	d1 e8                	shr    $1,%eax
60547b:	50                   	push   %eax
60547c:	ff 75 ec             	push   -0x14(%ebp)
60547f:	ff 75 e8             	push   -0x18(%ebp)
605482:	ff 15 5c 21 68 00    	call   *0x68215c
605488:	85 c0                	test   %eax,%eax
60548a:	75 1f                	jne    0x6054ab
60548c:	ff 15 e0 21 68 00    	call   *0x6821e0
605492:	50                   	push   %eax
605493:	e8 2b 7b fe ff       	call   0x5ecfc3
605498:	59                   	pop    %ecx
605499:	83 cf ff             	or     $0xffffffff,%edi
60549c:	56                   	push   %esi
60549d:	e8 86 f3 ff ff       	call   0x604828
6054a2:	59                   	pop    %ecx
6054a3:	8b c7                	mov    %edi,%eax
6054a5:	5e                   	pop    %esi
6054a6:	e9 d6 00 00 00       	jmp    0x605581
6054ab:	8b 45 e4             	mov    -0x1c(%ebp),%eax
6054ae:	8b 4d 10             	mov    0x10(%ebp),%ecx
6054b1:	8d 3c 47             	lea    (%edi,%eax,2),%edi
6054b4:	eb 29                	jmp    0x6054df
6054b6:	c6 45 e0 00          	movb   $0x0,-0x20(%ebp)
6054ba:	6a 00                	push   $0x0
6054bc:	8d 45 e4             	lea    -0x1c(%ebp),%eax
6054bf:	50                   	push   %eax
6054c0:	8b 45 f4             	mov    -0xc(%ebp),%eax
6054c3:	50                   	push   %eax
6054c4:	ff 75 ec             	push   -0x14(%ebp)
6054c7:	ff 75 e8             	push   -0x18(%ebp)
6054ca:	ff 15 ec 21 68 00    	call   *0x6821ec
6054d0:	85 c0                	test   %eax,%eax
6054d2:	74 5a                	je     0x60552e
6054d4:	8b 4d 10             	mov    0x10(%ebp),%ecx
6054d7:	39 4d e4             	cmp    %ecx,-0x1c(%ebp)
6054da:	77 52                	ja     0x60552e
6054dc:	03 7d e4             	add    -0x1c(%ebp),%edi
6054df:	8b 45 f8             	mov    -0x8(%ebp),%eax
6054e2:	8b 55 f0             	mov    -0x10(%ebp),%edx
6054e5:	8b 04 85 b8 10 73 00 	mov    0x7310b8(,%eax,4),%eax
6054ec:	80 7c 02 28 00       	cmpb   $0x0,0x28(%edx,%eax,1)
6054f1:	7d a9                	jge    0x60549c
6054f3:	80 7d ff 02          	cmpb   $0x2,-0x1(%ebp)
6054f7:	74 17                	je     0x605510
6054f9:	d1 e9                	shr    $1,%ecx
6054fb:	51                   	push   %ecx
6054fc:	ff 75 0c             	push   0xc(%ebp)
6054ff:	57                   	push   %edi
605500:	ff 75 ec             	push   -0x14(%ebp)
605503:	53                   	push   %ebx
605504:	e8 e6 f9 ff ff       	call   0x604eef
605509:	83 c4 14             	add    $0x14,%esp
60550c:	8b f8                	mov    %eax,%edi
60550e:	eb 8c                	jmp    0x60549c
605510:	d1 ef                	shr    $1,%edi
605512:	80 7d e0 00          	cmpb   $0x0,-0x20(%ebp)
605516:	57                   	push   %edi
605517:	ff 75 dc             	push   -0x24(%ebp)
60551a:	53                   	push   %ebx
60551b:	74 0a                	je     0x605527
60551d:	e8 24 fb ff ff       	call   0x605046
605522:	83 c4 0c             	add    $0xc,%esp
605525:	eb e5                	jmp    0x60550c
605527:	e8 f2 f7 ff ff       	call   0x604d1e
60552c:	eb f4                	jmp    0x605522
60552e:	ff 15 e0 21 68 00    	call   *0x6821e0
605534:	6a 05                	push   $0x5
605536:	5f                   	pop    %edi
605537:	3b c7                	cmp    %edi,%eax
605539:	75 17                	jne    0x605552
60553b:	e8 b9 7a fe ff       	call   0x5ecff9
605540:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
605546:	e8 9b 7a fe ff       	call   0x5ecfe6
60554b:	89 38                	mov    %edi,(%eax)
60554d:	e9 47 ff ff ff       	jmp    0x605499
605552:	83 f8 6d             	cmp    $0x6d,%eax
605555:	0f 85 37 ff ff ff    	jne    0x605492
60555b:	33 ff                	xor    %edi,%edi
60555d:	e9 3a ff ff ff       	jmp    0x60549c
605562:	33 c0                	xor    %eax,%eax
605564:	eb 1b                	jmp    0x605581
605566:	e8 7b 7a fe ff       	call   0x5ecfe6
60556b:	83 20 00             	andl   $0x0,(%eax)
60556e:	e8 86 7a fe ff       	call   0x5ecff9
605573:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
605579:	e8 a1 79 fe ff       	call   0x5ecf1f
60557e:	83 c8 ff             	or     $0xffffffff,%eax
605581:	5f                   	pop    %edi
605582:	5b                   	pop    %ebx
605583:	c9                   	leave
605584:	c3                   	ret
605585:	8b ff                	mov    %edi,%edi
605587:	55                   	push   %ebp
605588:	8b ec                	mov    %esp,%ebp
60558a:	8b 45 08             	mov    0x8(%ebp),%eax
60558d:	56                   	push   %esi
60558e:	85 c0                	test   %eax,%eax
605590:	75 18                	jne    0x6055aa
605592:	e8 62 7a fe ff       	call   0x5ecff9
605597:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
60559d:	e8 7d 79 fe ff       	call   0x5ecf1f
6055a2:	83 c8 ff             	or     $0xffffffff,%eax
6055a5:	e9 62 01 00 00       	jmp    0x60570c
6055aa:	8b 40 0c             	mov    0xc(%eax),%eax
6055ad:	53                   	push   %ebx
6055ae:	90                   	nop
6055af:	33 db                	xor    %ebx,%ebx
6055b1:	c1 e8 0d             	shr    $0xd,%eax
6055b4:	43                   	inc    %ebx
6055b5:	84 c3                	test   %al,%bl
6055b7:	0f 84 4b 01 00 00    	je     0x605708
6055bd:	8b 45 08             	mov    0x8(%ebp),%eax
6055c0:	8b 40 0c             	mov    0xc(%eax),%eax
6055c3:	90                   	nop
6055c4:	c1 e8 0c             	shr    $0xc,%eax
6055c7:	84 c3                	test   %al,%bl
6055c9:	0f 85 39 01 00 00    	jne    0x605708
6055cf:	8b 45 08             	mov    0x8(%ebp),%eax
6055d2:	8b 40 0c             	mov    0xc(%eax),%eax
6055d5:	90                   	nop
6055d6:	d1 e8                	shr    $1,%eax
6055d8:	84 c3                	test   %al,%bl
6055da:	8b 45 08             	mov    0x8(%ebp),%eax
6055dd:	74 0e                	je     0x6055ed
6055df:	6a 10                	push   $0x10
6055e1:	59                   	pop    %ecx
6055e2:	83 c0 0c             	add    $0xc,%eax
6055e5:	f0 09 08             	lock or %ecx,(%eax)
6055e8:	e9 1b 01 00 00       	jmp    0x605708
6055ed:	83 c0 0c             	add    $0xc,%eax
6055f0:	f0 09 18             	lock or %ebx,(%eax)
6055f3:	8b 45 08             	mov    0x8(%ebp),%eax
6055f6:	8b 40 0c             	mov    0xc(%eax),%eax
6055f9:	90                   	nop
6055fa:	a9 c0 04 00 00       	test   $0x4c0,%eax
6055ff:	75 09                	jne    0x60560a
605601:	ff 75 08             	push   0x8(%ebp)
605604:	e8 ce 5f 00 00       	call   0x60b5d7
605609:	59                   	pop    %ecx
60560a:	8b 45 08             	mov    0x8(%ebp),%eax
60560d:	8b 48 04             	mov    0x4(%eax),%ecx
605610:	89 08                	mov    %ecx,(%eax)
605612:	8b 75 08             	mov    0x8(%ebp),%esi
605615:	ff 76 18             	push   0x18(%esi)
605618:	ff 76 04             	push   0x4(%esi)
60561b:	56                   	push   %esi
60561c:	e8 87 a1 ff ff       	call   0x5ff7a8
605621:	59                   	pop    %ecx
605622:	50                   	push   %eax
605623:	e8 99 fa ff ff       	call   0x6050c1
605628:	89 46 08             	mov    %eax,0x8(%esi)
60562b:	83 c4 0c             	add    $0xc,%esp