406278:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
40627e:	33 c9                	xor    %ecx,%ecx
406280:	50                   	push   %eax
406281:	68 19 00 02 00       	push   $0x20019
406286:	51                   	push   %ecx
406287:	57                   	push   %edi
406288:	56                   	push   %esi
406289:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
40628f:	ff 15 04 60 41 00    	call   *0x416004
406295:	85 c0                	test   %eax,%eax
406297:	75 1b                	jne    0x4062b4
406299:	85 db                	test   %ebx,%ebx
40629b:	74 07                	je     0x4062a4
40629d:	53                   	push   %ebx
40629e:	ff 15 18 60 41 00    	call   *0x416018
4062a4:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
4062aa:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
4062b0:	85 c0                	test   %eax,%eax
4062b2:	74 4e                	je     0x406302
4062b4:	8d 85 9c dd ff ff    	lea    -0x2264(%ebp),%eax
4062ba:	33 c9                	xor    %ecx,%ecx
4062bc:	50                   	push   %eax
4062bd:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4062c3:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4062c9:	50                   	push   %eax
4062ca:	51                   	push   %ecx
4062cb:	68 1f 00 02 00       	push   $0x2001f
4062d0:	51                   	push   %ecx
4062d1:	51                   	push   %ecx
4062d2:	51                   	push   %ecx
4062d3:	57                   	push   %edi
4062d4:	56                   	push   %esi
4062d5:	ff 15 10 60 41 00    	call   *0x416010
4062db:	85 c0                	test   %eax,%eax
4062dd:	0f 85 eb 02 00 00    	jne    0x4065ce
4062e3:	85 db                	test   %ebx,%ebx
4062e5:	74 07                	je     0x4062ee
4062e7:	53                   	push   %ebx
4062e8:	ff 15 18 60 41 00    	call   *0x416018
4062ee:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
4062f4:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
4062fa:	85 c0                	test   %eax,%eax
4062fc:	0f 85 cc 02 00 00    	jne    0x4065ce
406302:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406308:	57                   	push   %edi
406309:	e8 86 f2 ff ff       	call   0x405594
40630e:	8b f0                	mov    %eax,%esi
406310:	85 f6                	test   %esi,%esi
406312:	0f 88 c6 02 00 00    	js     0x4065de
406318:	6a 3d                	push   $0x3d
40631a:	58                   	pop    %eax
40631b:	66 39 07             	cmp    %ax,(%edi)
40631e:	75 26                	jne    0x406346
406320:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406326:	33 c0                	xor    %eax,%eax
406328:	57                   	push   %edi
406329:	50                   	push   %eax
40632a:	8d 85 c8 dd ff ff    	lea    -0x2238(%ebp),%eax
406330:	50                   	push   %eax
406331:	e8 b8 f3 ff ff       	call   0x4056ee
406336:	8b 9d c8 dd ff ff    	mov    -0x2238(%ebp),%ebx
40633c:	8b f0                	mov    %eax,%esi
40633e:	85 f6                	test   %esi,%esi
406340:	0f 88 98 02 00 00    	js     0x4065de
406346:	6a 7b                	push   $0x7b
406348:	58                   	pop    %eax
406349:	66 39 07             	cmp    %ax,(%edi)
40634c:	0f 85 52 02 00 00    	jne    0x4065a4
406352:	8b cf                	mov    %edi,%ecx
406354:	8d 51 02             	lea    0x2(%ecx),%edx
406357:	66 8b 01             	mov    (%ecx),%ax
40635a:	83 c1 02             	add    $0x2,%ecx
40635d:	66 3b 85 c4 dd ff ff 	cmp    -0x223c(%ebp),%ax
406364:	75 f1                	jne    0x406357
406366:	2b ca                	sub    %edx,%ecx
406368:	d1 f9                	sar    $1,%ecx
40636a:	83 f9 01             	cmp    $0x1,%ecx
40636d:	0f 85 31 02 00 00    	jne    0x4065a4
406373:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406379:	33 c0                	xor    %eax,%eax
40637b:	50                   	push   %eax
40637c:	ff 75 10             	push   0x10(%ebp)
40637f:	53                   	push   %ebx
406380:	57                   	push   %edi
406381:	e8 de fb ff ff       	call   0x405f64
406386:	8b f0                	mov    %eax,%esi
406388:	85 f6                	test   %esi,%esi
40638a:	0f 88 4e 02 00 00    	js     0x4065de
406390:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406396:	57                   	push   %edi
406397:	e8 f8 f1 ff ff       	call   0x405594
40639c:	e9 67 fe ff ff       	jmp    0x406208
4063a1:	8b 75 14             	mov    0x14(%ebp),%esi
4063a4:	85 f6                	test   %esi,%esi
4063a6:	75 51                	jne    0x4063f9
4063a8:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4063ae:	33 c9                	xor    %ecx,%ecx
4063b0:	50                   	push   %eax
4063b1:	68 19 00 02 00       	push   $0x20019
4063b6:	51                   	push   %ecx
4063b7:	57                   	push   %edi
4063b8:	ff b5 dc dd ff ff    	push   -0x2224(%ebp)
4063be:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4063c4:	ff 15 04 60 41 00    	call   *0x416004
4063ca:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
4063d0:	85 c0                	test   %eax,%eax
4063d2:	75 2e                	jne    0x406402
4063d4:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
4063da:	85 db                	test   %ebx,%ebx
4063dc:	74 0d                	je     0x4063eb
4063de:	53                   	push   %ebx
4063df:	ff 15 18 60 41 00    	call   *0x416018
4063e5:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
4063eb:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
4063f1:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
4063f7:	eb 09                	jmp    0x406402
4063f9:	6a 02                	push   $0x2
4063fb:	58                   	pop    %eax
4063fc:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
406402:	89 b5 e4 dd ff ff    	mov    %esi,-0x221c(%ebp)
406408:	85 c0                	test   %eax,%eax
40640a:	74 0a                	je     0x406416
40640c:	c7 85 e4 dd ff ff 01 	movl   $0x1,-0x221c(%ebp)
406413:	00 00 00
406416:	6a ff                	push   $0xffffffff
406418:	57                   	push   %edi
406419:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40641f:	68 04 01 00 00       	push   $0x104
406424:	50                   	push   %eax
406425:	ff 15 b4 62 41 00    	call   *0x4162b4
40642b:	83 c4 10             	add    $0x10,%esp
40642e:	8b c8                	mov    %eax,%ecx
406430:	e8 d7 e7 ff ff       	call   0x404c0c
406435:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
40643b:	57                   	push   %edi
40643c:	e8 53 f1 ff ff       	call   0x405594
406441:	8b f0                	mov    %eax,%esi
406443:	85 f6                	test   %esi,%esi
406445:	0f 88 93 01 00 00    	js     0x4065de
40644b:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406451:	57                   	push   %edi
406452:	e8 93 f7 ff ff       	call   0x405bea
406457:	8b f0                	mov    %eax,%esi
406459:	85 f6                	test   %esi,%esi
40645b:	0f 88 7d 01 00 00    	js     0x4065de
406461:	6a 7b                	push   $0x7b
406463:	58                   	pop    %eax
406464:	66 39 07             	cmp    %ax,(%edi)
406467:	75 5c                	jne    0x4064c5
406469:	8b cf                	mov    %edi,%ecx
40646b:	8d 51 02             	lea    0x2(%ecx),%edx
40646e:	66 8b 01             	mov    (%ecx),%ax
406471:	83 c1 02             	add    $0x2,%ecx
406474:	66 3b 85 c4 dd ff ff 	cmp    -0x223c(%ebp),%ax
40647b:	75 f1                	jne    0x40646e
40647d:	2b ca                	sub    %edx,%ecx
40647f:	d1 f9                	sar    $1,%ecx
406481:	83 f9 01             	cmp    $0x1,%ecx
406484:	75 3f                	jne    0x4064c5
406486:	ff b5 e4 dd ff ff    	push   -0x221c(%ebp)
40648c:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406492:	33 c0                	xor    %eax,%eax
406494:	50                   	push   %eax
406495:	53                   	push   %ebx
406496:	57                   	push   %edi
406497:	e8 c8 fa ff ff       	call   0x405f64
40649c:	8b f0                	mov    %eax,%esi
40649e:	85 f6                	test   %esi,%esi
4064a0:	79 0d                	jns    0x4064af
4064a2:	83 bd e4 dd ff ff 00 	cmpl   $0x0,-0x221c(%ebp)
4064a9:	0f 84 2f 01 00 00    	je     0x4065de
4064af:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4064b5:	57                   	push   %edi
4064b6:	e8 d9 f0 ff ff       	call   0x405594
4064bb:	8b f0                	mov    %eax,%esi
4064bd:	85 f6                	test   %esi,%esi
4064bf:	0f 88 19 01 00 00    	js     0x4065de
4064c5:	8b 8d d4 dd ff ff    	mov    -0x222c(%ebp),%ecx
4064cb:	83 f9 02             	cmp    $0x2,%ecx
4064ce:	0f 84 d0 00 00 00    	je     0x4065a4
4064d4:	85 c9                	test   %ecx,%ecx
4064d6:	74 0f                	je     0x4064e7
4064d8:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
4064dc:	0f 84 ee 00 00 00    	je     0x4065d0
4064e2:	e9 bd 00 00 00       	jmp    0x4065a4
4064e7:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
4064eb:	74 45                	je     0x406532
4064ed:	53                   	push   %ebx
4064ee:	e8 c0 f6 ff ff       	call   0x405bb3
4064f3:	85 c0                	test   %eax,%eax
4064f5:	74 3b                	je     0x406532
4064f7:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
4064fd:	50                   	push   %eax
4064fe:	e8 7f f6 ff ff       	call   0x405b82
406503:	85 c0                	test   %eax,%eax
406505:	0f 84 99 00 00 00    	je     0x4065a4
40650b:	83 bd d8 dd ff ff 00 	cmpl   $0x0,-0x2228(%ebp)
406512:	0f 84 8c 00 00 00    	je     0x4065a4
406518:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40651e:	50                   	push   %eax
40651f:	8d 8d c8 dd ff ff    	lea    -0x2238(%ebp),%ecx
406525:	e8 fd e8 ff ff       	call   0x404e27
40652a:	8b 9d c8 dd ff ff    	mov    -0x2238(%ebp),%ebx
406530:	eb 72                	jmp    0x4065a4
406532:	53                   	push   %ebx
406533:	e8 7b f6 ff ff       	call   0x405bb3
406538:	89 85 e4 dd ff ff    	mov    %eax,-0x221c(%ebp)
40653e:	85 db                	test   %ebx,%ebx
406540:	74 1d                	je     0x40655f
406542:	53                   	push   %ebx
406543:	ff 15 18 60 41 00    	call   *0x416018
406549:	33 c9                	xor    %ecx,%ecx
40654b:	8b d9                	mov    %ecx,%ebx
40654d:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
406553:	85 c0                	test   %eax,%eax
406555:	75 77                	jne    0x4065ce
406557:	8b 85 e4 dd ff ff    	mov    -0x221c(%ebp),%eax
40655d:	eb 02                	jmp    0x406561
40655f:	33 c9                	xor    %ecx,%ecx
406561:	83 bd d8 dd ff ff 00 	cmpl   $0x0,-0x2228(%ebp)
406568:	74 3a                	je     0x4065a4
40656a:	85 c0                	test   %eax,%eax
40656c:	75 36                	jne    0x4065a4
40656e:	8b 85 dc dd ff ff    	mov    -0x2224(%ebp),%eax
406574:	89 85 a0 dd ff ff    	mov    %eax,-0x2260(%ebp)
40657a:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
406580:	89 8d a4 dd ff ff    	mov    %ecx,-0x225c(%ebp)
406586:	89 8d a8 dd ff ff    	mov    %ecx,-0x2258(%ebp)
40658c:	8d 8d a0 dd ff ff    	lea    -0x2260(%ebp),%ecx
406592:	50                   	push   %eax
406593:	e8 95 e7 ff ff       	call   0x404d2d
406598:	33 c9                	xor    %ecx,%ecx
40659a:	89 8d a0 dd ff ff    	mov    %ecx,-0x2260(%ebp)
4065a0:	85 c0                	test   %eax,%eax
4065a2:	75 2a                	jne    0x4065ce
4065a4:	6a 7d                	push   $0x7d
4065a6:	58                   	pop    %eax
4065a7:	66 39 07             	cmp    %ax,(%edi)
4065aa:	0f 85 32 fa ff ff    	jne    0x405fe2
4065b0:	eb 2c                	jmp    0x4065de
4065b2:	8b c8                	mov    %eax,%ecx
4065b4:	e8 ea e6 ff ff       	call   0x404ca3
4065b9:	8b f0                	mov    %eax,%esi
4065bb:	8b 85 d8 dd ff ff    	mov    -0x2228(%ebp),%eax
4065c1:	85 c0                	test   %eax,%eax
4065c3:	74 19                	je     0x4065de
4065c5:	50                   	push   %eax
4065c6:	ff 15 18 60 41 00    	call   *0x416018
4065cc:	eb 10                	jmp    0x4065de
4065ce:	8b c8                	mov    %eax,%ecx
4065d0:	e8 ce e6 ff ff       	call   0x404ca3
4065d5:	8b f0                	mov    %eax,%esi
4065d7:	eb 05                	jmp    0x4065de
4065d9:	be 09 00 02 80       	mov    $0x80020009,%esi
4065de:	85 db                	test   %ebx,%ebx
4065e0:	74 07                	je     0x4065e9
4065e2:	53                   	push   %ebx
4065e3:	ff 15 18 60 41 00    	call   *0x416018
4065e9:	8b c6                	mov    %esi,%eax
4065eb:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4065ee:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4065f5:	59                   	pop    %ecx
4065f6:	5f                   	pop    %edi
4065f7:	5e                   	pop    %esi
4065f8:	5b                   	pop    %ebx
4065f9:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4065fc:	33 cd                	xor    %ebp,%ecx
4065fe:	e8 ed b9 00 00       	call   0x411ff0
406603:	c9                   	leave
406604:	c2 10 00             	ret    $0x10
406607:	8b ff                	mov    %edi,%edi
406609:	55                   	push   %ebp
40660a:	8b ec                	mov    %esp,%ebp
40660c:	81 ec 6c 0a 00 00    	sub    $0xa6c,%esp
406612:	a1 f4 51 41 00       	mov    0x4151f4,%eax
406617:	33 c5                	xor    %ebp,%eax
406619:	89 45 fc             	mov    %eax,-0x4(%ebp)
40661c:	53                   	push   %ebx
40661d:	8b 1d a4 55 41 00    	mov    0x4155a4,%ebx
406623:	33 c0                	xor    %eax,%eax
406625:	56                   	push   %esi
406626:	8b 75 0c             	mov    0xc(%ebp),%esi
406629:	57                   	push   %edi
40662a:	89 95 c0 f5 ff ff    	mov    %edx,-0xa40(%ebp)
406630:	8d bd a0 f5 ff ff    	lea    -0xa60(%ebp),%edi
406636:	33 d2                	xor    %edx,%edx
406638:	c7 85 94 f5 ff ff 5c 	movl   $0x40165c,-0xa6c(%ebp)
40663f:	16 40 00
406642:	6a 07                	push   $0x7
406644:	59                   	pop    %ecx
406645:	89 95 98 f5 ff ff    	mov    %edx,-0xa68(%ebp)
40664b:	89 95 9c f5 ff ff    	mov    %edx,-0xa64(%ebp)
406651:	f3 ab                	rep stos %eax,%es:(%edi)
406653:	8d 8d a4 f5 ff ff    	lea    -0xa5c(%ebp),%ecx
406659:	88 95 bc f5 ff ff    	mov    %dl,-0xa44(%ebp)
40665f:	e8 db e5 ff ff       	call   0x404c3f
406664:	85 c0                	test   %eax,%eax
406666:	0f 88 20 02 00 00    	js     0x40688c
40666c:	c6 85 bc f5 ff ff 01 	movb   $0x1,-0xa44(%ebp)
406673:	85 f6                	test   %esi,%esi
406675:	74 1b                	je     0x406692
406677:	eb 13                	jmp    0x40668c
406679:	ff 76 04             	push   0x4(%esi)
40667c:	50                   	push   %eax
40667d:	8d 85 94 f5 ff ff    	lea    -0xa6c(%ebp),%eax
406683:	50                   	push   %eax
406684:	e8 c7 eb ff ff       	call   0x405250
406689:	8d 76 08             	lea    0x8(%esi),%esi
40668c:	8b 06                	mov    (%esi),%eax
40668e:	85 c0                	test   %eax,%eax
406690:	75 e7                	jne    0x406679
406692:	8b 03                	mov    (%ebx),%eax
406694:	8d 8d 94 f5 ff ff    	lea    -0xa6c(%ebp),%ecx
40669a:	51                   	push   %ecx
40669b:	8b 70 14             	mov    0x14(%eax),%esi
40669e:	8b ce                	mov    %esi,%ecx
4066a0:	ff 15 28 63 41 00    	call   *0x416328
4066a6:	8b cb                	mov    %ebx,%ecx
4066a8:	ff d6                	call   *%esi
4066aa:	8b f0                	mov    %eax,%esi
4066ac:	85 f6                	test   %esi,%esi
4066ae:	0f 88 da 01 00 00    	js     0x40688e
4066b4:	8b 35 0c 56 41 00    	mov    0x41560c,%esi
4066ba:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
4066c0:	bf 04 01 00 00       	mov    $0x104,%edi
4066c5:	33 db                	xor    %ebx,%ebx
4066c7:	57                   	push   %edi
4066c8:	50                   	push   %eax
4066c9:	56                   	push   %esi
4066ca:	89 9d c4 f5 ff ff    	mov    %ebx,-0xa3c(%ebp)
4066d0:	ff 15 60 61 41 00    	call   *0x416160
4066d6:	85 c0                	test   %eax,%eax
4066d8:	75 17                	jne    0x4066f1
4066da:	e8 b1 e5 ff ff       	call   0x404c90
4066df:	8b f0                	mov    %eax,%esi
4066e1:	8d 8d c4 f5 ff ff    	lea    -0xa3c(%ebp),%ecx
4066e7:	e8 d1 10 00 00       	call   0x4077bd
4066ec:	e9 9d 01 00 00       	jmp    0x40688e
4066f1:	3b c7                	cmp    %edi,%eax
4066f3:	75 15                	jne    0x40670a
4066f5:	8d 8d c4 f5 ff ff    	lea    -0xa3c(%ebp),%ecx
4066fb:	e8 bd 10 00 00       	call   0x4077bd
406700:	be 7a 00 07 80       	mov    $0x8007007a,%esi
406705:	e9 84 01 00 00       	jmp    0x40688e
40670a:	6a 27                	push   $0x27
40670c:	8d 95 f0 fd ff ff    	lea    -0x210(%ebp),%edx
406712:	8b c3                	mov    %ebx,%eax
406714:	5f                   	pop    %edi
406715:	0f b7 0a             	movzwl (%edx),%ecx
406718:	66 85 c9             	test   %cx,%cx