516150:	56                   	push   %esi
516151:	57                   	push   %edi
516152:	89 4d f4             	mov    %ecx,-0xc(%ebp)
516155:	89 55 f8             	mov    %edx,-0x8(%ebp)
516158:	89 45 fc             	mov    %eax,-0x4(%ebp)
51615b:	8b 45 08             	mov    0x8(%ebp),%eax
51615e:	e8 a5 eb ee ff       	call   0x404d08
516163:	8d 45 a0             	lea    -0x60(%ebp),%eax
516166:	8b 15 2c 12 51 00    	mov    0x51122c,%edx
51616c:	e8 eb f1 ee ff       	call   0x40535c
516171:	8d 85 70 ff ff ff    	lea    -0x90(%ebp),%eax
516177:	8b 15 2c 12 51 00    	mov    0x51122c,%edx
51617d:	e8 da f1 ee ff       	call   0x40535c
516182:	33 c0                	xor    %eax,%eax
516184:	55                   	push   %ebp
516185:	68 5f 6a 51 00       	push   $0x516a5f
51618a:	64 ff 30             	push   %fs:(%eax)
51618d:	64 89 20             	mov    %esp,%fs:(%eax)
516190:	8b 55 f8             	mov    -0x8(%ebp),%edx
516193:	8b 45 fc             	mov    -0x4(%ebp),%eax
516196:	e8 d1 1e 00 00       	call   0x51806c
51619b:	0f b7 d8             	movzwl %ax,%ebx
51619e:	83 3d 00 0b 69 00 00 	cmpl   $0x0,0x690b00
5161a5:	7e 5f                	jle    0x516206
5161a7:	8b 45 fc             	mov    -0x4(%ebp),%eax
5161aa:	ff b0 e8 00 00 00    	push   0xe8(%eax)
5161b0:	68 78 6a 51 00       	push   $0x516a78
5161b5:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
5161bb:	50                   	push   %eax
5161bc:	8b 45 f8             	mov    -0x8(%ebp),%eax
5161bf:	89 85 5c ff ff ff    	mov    %eax,-0xa4(%ebp)
5161c5:	c6 85 60 ff ff ff 00 	movb   $0x0,-0xa0(%ebp)
5161cc:	89 9d 64 ff ff ff    	mov    %ebx,-0x9c(%ebp)
5161d2:	c6 85 68 ff ff ff 00 	movb   $0x0,-0x98(%ebp)
5161d9:	8d 95 5c ff ff ff    	lea    -0xa4(%ebp),%edx
5161df:	b9 01 00 00 00       	mov    $0x1,%ecx
5161e4:	b8 84 6a 51 00       	mov    $0x516a84,%eax
5161e9:	e8 ee 43 ef ff       	call   0x40a5dc
5161ee:	ff b5 6c ff ff ff    	push   -0x94(%ebp)
5161f4:	8b 45 fc             	mov    -0x4(%ebp),%eax
5161f7:	05 e8 00 00 00       	add    $0xe8,%eax
5161fc:	ba 03 00 00 00       	mov    $0x3,%edx
516201:	e8 da e9 ee ff       	call   0x404be0
516206:	8b 45 f8             	mov    -0x8(%ebp),%eax
516209:	83 c0 02             	add    $0x2,%eax
51620c:	8b d3                	mov    %ebx,%edx
51620e:	c1 e2 02             	shl    $0x2,%edx
516211:	8d 14 52             	lea    (%edx,%edx,2),%edx
516214:	03 c2                	add    %edx,%eax
516216:	8b 55 f8             	mov    -0x8(%ebp),%edx
516219:	03 55 f4             	add    -0xc(%ebp),%edx
51621c:	03 55 10             	add    0x10(%ebp),%edx
51621f:	3b c2                	cmp    %edx,%eax
516221:	7e 1a                	jle    0x51623d
516223:	8b 45 fc             	mov    -0x4(%ebp),%eax
516226:	8b 40 24             	mov    0x24(%eax),%eax
516229:	05 8c 01 00 00       	add    $0x18c,%eax
51622e:	ba b0 6a 51 00       	mov    $0x516ab0,%edx
516233:	e8 84 e6 ee ff       	call   0x4048bc
516238:	e9 c6 07 00 00       	jmp    0x516a03
51623d:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
516241:	75 4e                	jne    0x516291
516243:	8b 45 fc             	mov    -0x4(%ebp),%eax
516246:	83 b8 cc 00 00 00 00 	cmpl   $0x0,0xcc(%eax)
51624d:	75 42                	jne    0x516291
51624f:	8b 45 fc             	mov    -0x4(%ebp),%eax
516252:	80 b8 ac 00 00 00 00 	cmpb   $0x0,0xac(%eax)
516259:	75 36                	jne    0x516291
51625b:	8b 75 f8             	mov    -0x8(%ebp),%esi
51625e:	83 c6 02             	add    $0x2,%esi
516261:	8b c3                	mov    %ebx,%eax
516263:	c1 e0 02             	shl    $0x2,%eax
516266:	8d 04 40             	lea    (%eax,%eax,2),%eax
516269:	03 f0                	add    %eax,%esi
51626b:	8b d6                	mov    %esi,%edx
51626d:	8b 45 fc             	mov    -0x4(%ebp),%eax
516270:	e8 9b 1e 00 00       	call   0x518110
516275:	8b f8                	mov    %eax,%edi
516277:	8b 45 fc             	mov    -0x4(%ebp),%eax
51627a:	89 b8 cc 00 00 00    	mov    %edi,0xcc(%eax)
516280:	8b 45 f4             	mov    -0xc(%ebp),%eax
516283:	03 45 10             	add    0x10(%ebp),%eax
516286:	2b c7                	sub    %edi,%eax
516288:	8b 55 fc             	mov    -0x4(%ebp),%edx
51628b:	89 82 d0 00 00 00    	mov    %eax,0xd0(%edx)
516291:	4b                   	dec    %ebx
516292:	85 db                	test   %ebx,%ebx
516294:	0f 8c 69 07 00 00    	jl     0x516a03
51629a:	43                   	inc    %ebx
51629b:	89 5d d0             	mov    %ebx,-0x30(%ebp)
51629e:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
5162a5:	8b 75 f8             	mov    -0x8(%ebp),%esi
5162a8:	83 c6 02             	add    $0x2,%esi
5162ab:	8b 45 ec             	mov    -0x14(%ebp),%eax
5162ae:	c1 e0 02             	shl    $0x2,%eax
5162b1:	8d 04 40             	lea    (%eax,%eax,2),%eax
5162b4:	03 f0                	add    %eax,%esi
5162b6:	8b d6                	mov    %esi,%edx
5162b8:	8b 45 fc             	mov    -0x4(%ebp),%eax
5162bb:	e8 ac 1d 00 00       	call   0x51806c
5162c0:	0f b7 d8             	movzwl %ax,%ebx
5162c3:	8d 56 02             	lea    0x2(%esi),%edx
5162c6:	8b 45 fc             	mov    -0x4(%ebp),%eax
5162c9:	e8 9e 1d 00 00       	call   0x51806c
5162ce:	0f b7 c0             	movzwl %ax,%eax
5162d1:	89 45 f0             	mov    %eax,-0x10(%ebp)
5162d4:	8d 56 04             	lea    0x4(%esi),%edx
5162d7:	8b 45 fc             	mov    -0x4(%ebp),%eax
5162da:	e8 31 1e 00 00       	call   0x518110
5162df:	8b 55 f0             	mov    -0x10(%ebp),%edx
5162e2:	8b 3c 95 cc 0a 69 00 	mov    0x690acc(,%edx,4),%edi
5162e9:	0f af f8             	imul   %eax,%edi
5162ec:	85 ff                	test   %edi,%edi
5162ee:	0f 84 03 07 00 00    	je     0x5169f7
5162f4:	83 ff 04             	cmp    $0x4,%edi
5162f7:	7e 13                	jle    0x51630c
5162f9:	8d 56 08             	lea    0x8(%esi),%edx
5162fc:	8b 45 fc             	mov    -0x4(%ebp),%eax
5162ff:	e8 0c 1e 00 00       	call   0x518110
516304:	03 45 f4             	add    -0xc(%ebp),%eax
516307:	89 45 e8             	mov    %eax,-0x18(%ebp)
51630a:	eb 06                	jmp    0x516312
51630c:	8d 46 08             	lea    0x8(%esi),%eax
51630f:	89 45 e8             	mov    %eax,-0x18(%ebp)
516312:	8d 45 e4             	lea    -0x1c(%ebp),%eax
516315:	50                   	push   %eax
516316:	8b 45 fc             	mov    -0x4(%ebp),%eax
516319:	8b 40 24             	mov    0x24(%eax),%eax
51631c:	8b 80 68 01 00 00    	mov    0x168(%eax),%eax
516322:	8b 00                	mov    (%eax),%eax
516324:	8b cf                	mov    %edi,%ecx
516326:	8b 55 e8             	mov    -0x18(%ebp),%edx
516329:	e8 4a ea ee ff       	call   0x404d78
51632e:	81 fb 1a 01 00 00    	cmp    $0x11a,%ebx
516334:	75 09                	jne    0x51633f
516336:	8b 45 fc             	mov    -0x4(%ebp),%eax
516339:	8b 55 e8             	mov    -0x18(%ebp),%edx
51633c:	89 50 0c             	mov    %edx,0xc(%eax)
51633f:	81 fb 1b 01 00 00    	cmp    $0x11b,%ebx
516345:	75 09                	jne    0x516350
516347:	8b 45 fc             	mov    -0x4(%ebp),%eax
51634a:	8b 55 e8             	mov    -0x18(%ebp),%edx
51634d:	89 50 10             	mov    %edx,0x10(%eax)
516350:	81 fb 28 01 00 00    	cmp    $0x128,%ebx
516356:	75 09                	jne    0x516361
516358:	8b 45 fc             	mov    -0x4(%ebp),%eax
51635b:	8b 55 e8             	mov    -0x18(%ebp),%edx
51635e:	89 50 14             	mov    %edx,0x14(%eax)
516361:	8d 45 e0             	lea    -0x20(%ebp),%eax
516364:	e8 ff e4 ee ff       	call   0x404868
516369:	8b 45 fc             	mov    -0x4(%ebp),%eax
51636c:	8b 80 a4 00 00 00    	mov    0xa4(%eax),%eax
516372:	83 e8 02             	sub    $0x2,%eax
516375:	74 0b                	je     0x516382
516377:	2d fd 00 00 00       	sub    $0xfd,%eax
51637c:	0f 85 8e 02 00 00    	jne    0x516610
516382:	8d 4d a0             	lea    -0x60(%ebp),%ecx
516385:	8b 55 0c             	mov    0xc(%ebp),%edx
516388:	8b c3                	mov    %ebx,%eax
51638a:	e8 1d ee ff ff       	call   0x5151ac
51638f:	8b 45 f0             	mov    -0x10(%ebp),%eax
516392:	83 e8 02             	sub    $0x2,%eax
516395:	74 37                	je     0x5163ce
516397:	83 e8 05             	sub    $0x5,%eax
51639a:	75 51                	jne    0x5163ed
51639c:	68 d4 6a 51 00       	push   $0x516ad4
5163a1:	8d 8d 58 ff ff ff    	lea    -0xa8(%ebp),%ecx
5163a7:	ba e0 6a 51 00       	mov    $0x516ae0,%edx
5163ac:	8b 45 e4             	mov    -0x1c(%ebp),%eax
5163af:	e8 a8 92 ff ff       	call   0x50f65c
5163b4:	ff b5 58 ff ff ff    	push   -0xa8(%ebp)
5163ba:	68 d4 6a 51 00       	push   $0x516ad4
5163bf:	8d 45 e0             	lea    -0x20(%ebp),%eax
5163c2:	ba 03 00 00 00       	mov    $0x3,%edx
5163c7:	e8 14 e8 ee ff       	call   0x404be0
5163cc:	eb 39                	jmp    0x516407
5163ce:	8d 45 e0             	lea    -0x20(%ebp),%eax
5163d1:	50                   	push   %eax
5163d2:	8b cf                	mov    %edi,%ecx
5163d4:	49                   	dec    %ecx
5163d5:	8b 45 fc             	mov    -0x4(%ebp),%eax
5163d8:	8b 40 24             	mov    0x24(%eax),%eax
5163db:	8b 80 68 01 00 00    	mov    0x168(%eax),%eax
5163e1:	8b 00                	mov    (%eax),%eax
5163e3:	8b 55 e8             	mov    -0x18(%ebp),%edx
5163e6:	e8 8d e9 ee ff       	call   0x404d78
5163eb:	eb 1a                	jmp    0x516407
5163ed:	8b 45 c4             	mov    -0x3c(%ebp),%eax
5163f0:	50                   	push   %eax
5163f1:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5163f4:	50                   	push   %eax
5163f5:	8d 45 e0             	lea    -0x20(%ebp),%eax
5163f8:	50                   	push   %eax
5163f9:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5163fc:	8b 55 e4             	mov    -0x1c(%ebp),%edx
5163ff:	8b 45 fc             	mov    -0x4(%ebp),%eax
516402:	e8 19 f7 ff ff       	call   0x515b20
516407:	66 83 7d a8 00       	cmpw   $0x0,-0x58(%ebp)
51640c:	76 2b                	jbe    0x516439
51640e:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
516412:	74 25                	je     0x516439
516414:	80 3d e8 04 69 00 00 	cmpb   $0x0,0x6904e8
51641b:	74 1c                	je     0x516439
51641d:	8d 95 54 ff ff ff    	lea    -0xac(%ebp),%edx
516423:	8b 45 e0             	mov    -0x20(%ebp),%eax
516426:	ff 55 cc             	call   *-0x34(%ebp)
516429:	8b 95 54 ff ff ff    	mov    -0xac(%ebp),%edx
51642f:	8d 45 e0             	lea    -0x20(%ebp),%eax
516432:	e8 c9 e4 ee ff       	call   0x404900
516437:	eb 1c                	jmp    0x516455
516439:	8d 95 50 ff ff ff    	lea    -0xb0(%ebp),%edx
51643f:	8b 45 e0             	mov    -0x20(%ebp),%eax
516442:	e8 4d fb ff ff       	call   0x515f94
516447:	8b 95 50 ff ff ff    	mov    -0xb0(%ebp),%edx
51644d:	8d 45 e0             	lea    -0x20(%ebp),%eax
516450:	e8 ab e4 ee ff       	call   0x404900
516455:	8d 45 dc             	lea    -0x24(%ebp),%eax
516458:	8b 55 b0             	mov    -0x50(%ebp),%edx
51645b:	e8 a0 e4 ee ff       	call   0x404900
516460:	8b c3                	mov    %ebx,%eax
516462:	2d 86 92 00 00       	sub    $0x9286,%eax
516467:	75 68                	jne    0x5164d1
516469:	8d 85 48 ff ff ff    	lea    -0xb8(%ebp),%eax
51646f:	50                   	push   %eax
516470:	8b cf                	mov    %edi,%ecx
516472:	83 e9 09             	sub    $0x9,%ecx
516475:	ba 09 00 00 00       	mov    $0x9,%edx
51647a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
51647d:	e8 f6 e8 ee ff       	call   0x404d78
516482:	8b 85 48 ff ff ff    	mov    -0xb8(%ebp),%eax
516488:	8d 95 4c ff ff ff    	lea    -0xb4(%ebp),%edx
51648e:	e8 15 2f ef ff       	call   0x4093a8
516493:	8b 95 4c ff ff ff    	mov    -0xb4(%ebp),%edx
516499:	8b 45 fc             	mov    -0x4(%ebp),%eax
51649c:	05 b0 00 00 00       	add    $0xb0,%eax
5164a1:	e8 16 e4 ee ff       	call   0x4048bc
5164a6:	8d 45 e0             	lea    -0x20(%ebp),%eax
5164a9:	8b 55 fc             	mov    -0x4(%ebp),%edx
5164ac:	8b 92 b0 00 00 00    	mov    0xb0(%edx),%edx
5164b2:	e8 49 e4 ee ff       	call   0x404900
5164b7:	8b 45 fc             	mov    -0x4(%ebp),%eax
5164ba:	8b 55 e8             	mov    -0x18(%ebp),%edx
5164bd:	89 90 b4 00 00 00    	mov    %edx,0xb4(%eax)
5164c3:	8b c7                	mov    %edi,%eax
5164c5:	83 e8 09             	sub    $0x9,%eax
5164c8:	8b 55 fc             	mov    -0x4(%ebp),%edx
5164cb:	89 82 b8 00 00 00    	mov    %eax,0xb8(%edx)
5164d1:	68 78 6a 51 00       	push   $0x516a78
5164d6:	8d 85 44 ff ff ff    	lea    -0xbc(%ebp),%eax
5164dc:	50                   	push   %eax
5164dd:	68 ec 6a 51 00       	push   $0x516aec
5164e2:	8d 8d 3c ff ff ff    	lea    -0xc4(%ebp),%ecx
5164e8:	ba 04 00 00 00       	mov    $0x4,%edx
5164ed:	8b c3                	mov    %ebx,%eax
5164ef:	e8 34 31 ef ff       	call   0x409628
5164f4:	ff b5 3c ff ff ff    	push   -0xc4(%ebp)
5164fa:	68 fc 6a 51 00       	push   $0x516afc
5164ff:	8d 85 40 ff ff ff    	lea    -0xc0(%ebp),%eax
516505:	ba 03 00 00 00       	mov    $0x3,%edx
51650a:	e8 d1 e6 ee ff       	call   0x404be0
51650f:	8b 95 40 ff ff ff    	mov    -0xc0(%ebp),%edx
516515:	83 3d 00 0b 69 00 00 	cmpl   $0x0,0x690b00
51651c:	0f 9f c0             	setg   %al
51651f:	33 c9                	xor    %ecx,%ecx
516521:	e8 ae ed ff ff       	call   0x5152d4
516526:	ff b5 44 ff ff ff    	push   -0xbc(%ebp)
51652c:	ff 75 dc             	push   -0x24(%ebp)
51652f:	ff 35 e4 04 69 00    	push   0x6904e4
516535:	ff 75 e0             	push   -0x20(%ebp)
516538:	8d 85 38 ff ff ff    	lea    -0xc8(%ebp),%eax
51653e:	50                   	push   %eax
51653f:	68 08 6b 51 00       	push   $0x516b08
516544:	8d 95 30 ff ff ff    	lea    -0xd0(%ebp),%edx
51654a:	8b c7                	mov    %edi,%eax
51654c:	e8 73 30 ef ff       	call   0x4095c4
516551:	ff b5 30 ff ff ff    	push   -0xd0(%ebp)
516557:	68 1c 6b 51 00       	push   $0x516b1c
51655c:	8d 85 34 ff ff ff    	lea    -0xcc(%ebp),%eax
516562:	ba 03 00 00 00       	mov    $0x3,%edx
516567:	e8 74 e6 ee ff       	call   0x404be0
51656c:	8b 95 34 ff ff ff    	mov    -0xcc(%ebp),%edx
516572:	83 3d 00 0b 69 00 00 	cmpl   $0x0,0x690b00
516579:	0f 9f c0             	setg   %al
51657c:	33 c9                	xor    %ecx,%ecx
51657e:	e8 51 ed ff ff       	call   0x5152d4
516583:	ff b5 38 ff ff ff    	push   -0xc8(%ebp)
516589:	8d 85 2c ff ff ff    	lea    -0xd4(%ebp),%eax
51658f:	50                   	push   %eax
516590:	68 28 6b 51 00       	push   $0x516b28
516595:	8d 95 24 ff ff ff    	lea    -0xdc(%ebp),%edx
51659b:	8b 45 e8             	mov    -0x18(%ebp),%eax
51659e:	e8 21 30 ef ff       	call   0x4095c4
5165a3:	ff b5 24 ff ff ff    	push   -0xdc(%ebp)
5165a9:	68 1c 6b 51 00       	push   $0x516b1c
5165ae:	8d 85 28 ff ff ff    	lea    -0xd8(%ebp),%eax
5165b4:	ba 03 00 00 00       	mov    $0x3,%edx
5165b9:	e8 22 e6 ee ff       	call   0x404be0
5165be:	8b 95 28 ff ff ff    	mov    -0xd8(%ebp),%edx
5165c4:	83 3d 00 0b 69 00 00 	cmpl   $0x0,0x690b00
5165cb:	0f 9f c0             	setg   %al
5165ce:	33 c9                	xor    %ecx,%ecx
5165d0:	e8 ff ec ff ff       	call   0x5152d4
5165d5:	ff b5 2c ff ff ff    	push   -0xd4(%ebp)
5165db:	8d 45 d4             	lea    -0x2c(%ebp),%eax
5165de:	ba 07 00 00 00       	mov    $0x7,%edx
5165e3:	e8 f8 e5 ee ff       	call   0x404be0
5165e8:	83 7d 0c 04          	cmpl   $0x4,0xc(%ebp)
5165ec:	75 12                	jne    0x516600
5165ee:	8b 45 fc             	mov    -0x4(%ebp),%eax
5165f1:	05 c8 00 00 00       	add    $0xc8,%eax
5165f6:	8b 55 d4             	mov    -0x2c(%ebp),%edx
5165f9:	e8 2a e5 ee ff       	call   0x404b28
5165fe:	eb 10                	jmp    0x516610
516600:	8b 45 fc             	mov    -0x4(%ebp),%eax
516603:	05 e8 00 00 00       	add    $0xe8,%eax
516608:	8b 55 d4             	mov    -0x2c(%ebp),%edx
51660b:	e8 18 e5 ee ff       	call   0x404b28
516610:	81 fb 25 88 00 00    	cmp    $0x8825,%ebx
516616:	7f 5c                	jg     0x516674
516618:	0f 84 fa 00 00 00    	je     0x516718
51661e:	81 fb 10 01 00 00    	cmp    $0x110,%ebx
516624:	7f 30                	jg     0x516656
516626:	0f 84 64 01 00 00    	je     0x516790
51662c:	81 eb 00 01 00 00    	sub    $0x100,%ebx
516632:	0f 84 ce 02 00 00    	je     0x516906
516638:	4b                   	dec    %ebx
516639:	0f 84 9d 02 00 00    	je     0x5168dc
51663f:	83 eb 02             	sub    $0x2,%ebx
516642:	0f 84 e8 02 00 00    	je     0x516930
516648:	83 eb 0c             	sub    $0xc,%ebx
51664b:	0f 84 14 01 00 00    	je     0x516765
516651:	e9 fc 02 00 00       	jmp    0x516952
516656:	81 eb 32 01 00 00    	sub    $0x132,%ebx
51665c:	0f 84 84 01 00 00    	je     0x5167e6
516662:	83 eb 18             	sub    $0x18,%ebx
516665:	74 64                	je     0x5166cb
516667:	81 eb 1f 86 00 00    	sub    $0x861f,%ebx
51666d:	74 5c                	je     0x5166cb
51666f:	e9 de 02 00 00       	jmp    0x516952
516674:	81 fb 7c 92 00 00    	cmp    $0x927c,%ebx
51667a:	7f 33                	jg     0x5166af
51667c:	0f 84 e3 01 00 00    	je     0x516865
516682:	81 eb 00 90 00 00    	sub    $0x9000,%ebx
516688:	0f 84 2d 01 00 00    	je     0x5167bb
51668e:	83 eb 03             	sub    $0x3,%ebx
516691:	0f 84 86 01 00 00    	je     0x51681d
516697:	4b                   	dec    %ebx
516698:	0f 84 b6 01 00 00    	je     0x516854
51669e:	81 eb 05 02 00 00    	sub    $0x205,%ebx
5166a4:	0f 84 14 02 00 00    	je     0x5168be