40648a:	33 c0                	xor    %eax,%eax
40648c:	5e                   	pop    %esi
40648d:	c2 04 00             	ret    $0x4
406490:	55                   	push   %ebp
406491:	8b ec                	mov    %esp,%ebp
406493:	81 ec 20 01 00 00    	sub    $0x120,%esp
406499:	56                   	push   %esi
40649a:	be 04 01 00 00       	mov    $0x104,%esi
40649f:	8d 85 e0 fe ff ff    	lea    -0x120(%ebp),%eax
4064a5:	56                   	push   %esi
4064a6:	50                   	push   %eax
4064a7:	ff 15 e4 80 40 00    	call   *0x4080e4
4064ad:	3b c6                	cmp    %esi,%eax
4064af:	5e                   	pop    %esi
4064b0:	76 02                	jbe    0x4064b4
4064b2:	33 c0                	xor    %eax,%eax
4064b4:	85 c0                	test   %eax,%eax
4064b6:	74 0e                	je     0x4064c6
4064b8:	80 bc 05 df fe ff ff 	cmpb   $0x5c,-0x121(%ebp,%eax,1)
4064bf:	5c
4064c0:	74 04                	je     0x4064c6
4064c2:	33 c9                	xor    %ecx,%ecx
4064c4:	eb 03                	jmp    0x4064c9
4064c6:	33 c9                	xor    %ecx,%ecx
4064c8:	41                   	inc    %ecx
4064c9:	ff 75 08             	push   0x8(%ebp)
4064cc:	8d 89 14 a0 40 00    	lea    0x40a014(%ecx),%ecx
4064d2:	8d 84 05 e0 fe ff ff 	lea    -0x120(%ebp,%eax,1),%eax
4064d9:	51                   	push   %ecx
4064da:	68 f4 a3 40 00       	push   $0x40a3f4
4064df:	50                   	push   %eax
4064e0:	ff 15 74 82 40 00    	call   *0x408274
4064e6:	83 c4 10             	add    $0x10,%esp
4064e9:	8d 85 e0 fe ff ff    	lea    -0x120(%ebp),%eax
4064ef:	6a 08                	push   $0x8
4064f1:	6a 00                	push   $0x0
4064f3:	50                   	push   %eax
4064f4:	ff 15 50 81 40 00    	call   *0x408150
4064fa:	c9                   	leave
4064fb:	c2 04 00             	ret    $0x4
4064fe:	8b 44 24 04          	mov    0x4(%esp),%eax
406502:	56                   	push   %esi
406503:	8b f0                	mov    %eax,%esi
406505:	57                   	push   %edi
406506:	c1 e6 03             	shl    $0x3,%esi
406509:	8b be 58 a2 40 00    	mov    0x40a258(%esi),%edi
40650f:	57                   	push   %edi
406510:	ff 15 54 81 40 00    	call   *0x408154
406516:	85 c0                	test   %eax,%eax
406518:	75 0a                	jne    0x406524
40651a:	57                   	push   %edi
40651b:	e8 70 ff ff ff       	call   0x406490
406520:	85 c0                	test   %eax,%eax
406522:	74 0f                	je     0x406533
406524:	ff b6 5c a2 40 00    	push   0x40a25c(%esi)
40652a:	50                   	push   %eax
40652b:	ff 15 e8 80 40 00    	call   *0x4080e8
406531:	eb 02                	jmp    0x406535
406533:	33 c0                	xor    %eax,%eax
406535:	5f                   	pop    %edi
406536:	5e                   	pop    %esi
406537:	c2 04 00             	ret    $0x4
40653a:	55                   	push   %ebp
40653b:	8b ec                	mov    %esp,%ebp
40653d:	83 ec 1c             	sub    $0x1c,%esp
406540:	56                   	push   %esi
406541:	8b 75 08             	mov    0x8(%ebp),%esi
406544:	57                   	push   %edi
406545:	8b 3d ec 81 40 00    	mov    0x4081ec,%edi
40654b:	eb 0a                	jmp    0x406557
40654d:	8d 45 e4             	lea    -0x1c(%ebp),%eax
406550:	50                   	push   %eax
406551:	ff 15 e8 81 40 00    	call   *0x4081e8
406557:	6a 01                	push   $0x1
406559:	56                   	push   %esi
40655a:	56                   	push   %esi
40655b:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40655e:	6a 00                	push   $0x0
406560:	50                   	push   %eax
406561:	ff d7                	call   *%edi
406563:	85 c0                	test   %eax,%eax
406565:	75 e6                	jne    0x40654d
406567:	5f                   	pop    %edi
406568:	5e                   	pop    %esi
406569:	c9                   	leave
40656a:	c2 04 00             	ret    $0x4
40656d:	ff 25 e8 80 40 00    	jmp    *0x4080e8
406573:	55                   	push   %ebp
406574:	8b ec                	mov    %esp,%ebp
406576:	51                   	push   %ecx
406577:	56                   	push   %esi
406578:	8b 35 f0 80 40 00    	mov    0x4080f0,%esi
40657e:	57                   	push   %edi
40657f:	6a 64                	push   $0x64
406581:	ff 75 08             	push   0x8(%ebp)
406584:	ff d6                	call   *%esi
406586:	bf 02 01 00 00       	mov    $0x102,%edi
40658b:	eb 0e                	jmp    0x40659b
40658d:	6a 0f                	push   $0xf
40658f:	e8 a6 ff ff ff       	call   0x40653a
406594:	6a 64                	push   $0x64
406596:	ff 75 08             	push   0x8(%ebp)
406599:	ff d6                	call   *%esi
40659b:	3b c7                	cmp    %edi,%eax
40659d:	74 ee                	je     0x40658d
40659f:	8d 45 fc             	lea    -0x4(%ebp),%eax
4065a2:	50                   	push   %eax
4065a3:	ff 75 08             	push   0x8(%ebp)
4065a6:	ff 15 ec 80 40 00    	call   *0x4080ec
4065ac:	8b 45 fc             	mov    -0x4(%ebp),%eax
4065af:	5f                   	pop    %edi
4065b0:	5e                   	pop    %esi
4065b1:	c9                   	leave
4065b2:	c2 04 00             	ret    $0x4
4065b5:	83 3d 2c ce 42 00 00 	cmpl   $0x0,0x42ce2c
4065bc:	56                   	push   %esi
4065bd:	75 2d                	jne    0x4065ec
4065bf:	33 c9                	xor    %ecx,%ecx
4065c1:	6a 08                	push   $0x8
4065c3:	8b c1                	mov    %ecx,%eax
4065c5:	5e                   	pop    %esi
4065c6:	8b d0                	mov    %eax,%edx
4065c8:	80 e2 01             	and    $0x1,%dl
4065cb:	f6 da                	neg    %dl
4065cd:	1b d2                	sbb    %edx,%edx
4065cf:	81 e2 20 83 b8 ed    	and    $0xedb88320,%edx
4065d5:	d1 e8                	shr    $1,%eax
4065d7:	33 c2                	xor    %edx,%eax
4065d9:	4e                   	dec    %esi
4065da:	75 ea                	jne    0x4065c6
4065dc:	89 04 8d 28 ce 42 00 	mov    %eax,0x42ce28(,%ecx,4)
4065e3:	41                   	inc    %ecx
4065e4:	81 f9 00 01 00 00    	cmp    $0x100,%ecx
4065ea:	7c d5                	jl     0x4065c1
4065ec:	8b 54 24 10          	mov    0x10(%esp),%edx
4065f0:	8b 44 24 08          	mov    0x8(%esp),%eax
4065f4:	85 d2                	test   %edx,%edx
4065f6:	f7 d0                	not    %eax
4065f8:	76 23                	jbe    0x40661d
4065fa:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
4065fe:	57                   	push   %edi
4065ff:	0f b6 39             	movzbl (%ecx),%edi
406602:	8b f0                	mov    %eax,%esi
406604:	81 e6 ff 00 00 00    	and    $0xff,%esi
40660a:	33 f7                	xor    %edi,%esi
40660c:	c1 e8 08             	shr    $0x8,%eax
40660f:	8b 34 b5 28 ce 42 00 	mov    0x42ce28(,%esi,4),%esi
406616:	33 c6                	xor    %esi,%eax
406618:	41                   	inc    %ecx
406619:	4a                   	dec    %edx
40661a:	75 e3                	jne    0x4065ff
40661c:	5f                   	pop    %edi
40661d:	f7 d0                	not    %eax
40661f:	5e                   	pop    %esi
406620:	c2 0c 00             	ret    $0xc
406623:	55                   	push   %ebp
406624:	8b ec                	mov    %esp,%ebp
406626:	83 ec 44             	sub    $0x44,%esp
406629:	8b 45 08             	mov    0x8(%ebp),%eax
40662c:	53                   	push   %ebx
40662d:	56                   	push   %esi
40662e:	57                   	push   %edi
40662f:	8b 08                	mov    (%eax),%ecx
406631:	8d 70 10             	lea    0x10(%eax),%esi
406634:	8b 40 04             	mov    0x4(%eax),%eax
406637:	89 4d c8             	mov    %ecx,-0x38(%ebp)
40663a:	8b 8e a8 9b 00 00    	mov    0x9ba8(%esi),%ecx
406640:	8b 9e 18 05 00 00    	mov    0x518(%esi),%ebx
406646:	89 45 cc             	mov    %eax,-0x34(%ebp)
406649:	8b 86 1c 05 00 00    	mov    0x51c(%esi),%eax
40664f:	89 45 c0             	mov    %eax,-0x40(%ebp)
406652:	8b 86 a4 9b 00 00    	mov    0x9ba4(%esi),%eax
406658:	3b c8                	cmp    %eax,%ecx
40665a:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40665d:	73 05                	jae    0x406664
40665f:	2b c1                	sub    %ecx,%eax
406661:	48                   	dec    %eax
406662:	eb 08                	jmp    0x40666c
406664:	8b 86 a0 9b 00 00    	mov    0x9ba0(%esi),%eax
40666a:	2b c1                	sub    %ecx,%eax
40666c:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40666f:	e9 c3 09 00 00       	jmp    0x407037
406674:	ff 24 85 72 70 40 00 	jmp    *0x407072(,%eax,4)
40667b:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
40667f:	0f 84 c2 09 00 00    	je     0x407047
406685:	8b 45 c8             	mov    -0x38(%ebp),%eax
406688:	ff 4d cc             	decl   -0x34(%ebp)
40668b:	8b cb                	mov    %ebx,%ecx
40668d:	0f b6 00             	movzbl (%eax),%eax
406690:	d3 e0                	shl    %cl,%eax
406692:	09 45 c0             	or     %eax,-0x40(%ebp)
406695:	ff 45 c8             	incl   -0x38(%ebp)
406698:	83 c3 08             	add    $0x8,%ebx
40669b:	83 fb 03             	cmp    $0x3,%ebx
40669e:	72 db                	jb     0x40667b
4066a0:	8b 45 c0             	mov    -0x40(%ebp),%eax
4066a3:	83 eb 03             	sub    $0x3,%ebx
4066a6:	c1 6d c0 03          	shrl   $0x3,-0x40(%ebp)
4066aa:	83 e0 07             	and    $0x7,%eax
4066ad:	8b c8                	mov    %eax,%ecx
4066af:	80 e1 01             	and    $0x1,%cl
4066b2:	f6 d9                	neg    %cl
4066b4:	1b c9                	sbb    %ecx,%ecx
4066b6:	83 e1 07             	and    $0x7,%ecx
4066b9:	d1 e8                	shr    $1,%eax
4066bb:	83 c1 08             	add    $0x8,%ecx
4066be:	83 e8 00             	sub    $0x0,%eax
4066c1:	89 8e 14 05 00 00    	mov    %ecx,0x514(%esi)
4066c7:	0f 84 2e 01 00 00    	je     0x4067fb
4066cd:	48                   	dec    %eax
4066ce:	74 56                	je     0x406726
4066d0:	48                   	dec    %eax
4066d1:	74 48                	je     0x40671b
4066d3:	48                   	dec    %eax
4066d4:	0f 85 5d 09 00 00    	jne    0x407037
4066da:	83 cf ff             	or     $0xffffffff,%edi
4066dd:	c7 06 11 00 00 00    	movl   $0x11,(%esi)
4066e3:	8b 45 c0             	mov    -0x40(%ebp),%eax
4066e6:	8b 4d 08             	mov    0x8(%ebp),%ecx
4066e9:	89 86 1c 05 00 00    	mov    %eax,0x51c(%esi)
4066ef:	8b 45 cc             	mov    -0x34(%ebp),%eax
4066f2:	89 9e 18 05 00 00    	mov    %ebx,0x518(%esi)
4066f8:	89 41 04             	mov    %eax,0x4(%ecx)
4066fb:	8b 45 08             	mov    0x8(%ebp),%eax
4066fe:	8b 4d c8             	mov    -0x38(%ebp),%ecx
406701:	50                   	push   %eax
406702:	89 08                	mov    %ecx,(%eax)
406704:	8b 4d d0             	mov    -0x30(%ebp),%ecx
406707:	89 8e a8 9b 00 00    	mov    %ecx,0x9ba8(%esi)
40670d:	e8 a0 09 00 00       	call   0x4070b2
406712:	8b c7                	mov    %edi,%eax
406714:	5f                   	pop    %edi
406715:	5e                   	pop    %esi
406716:	5b                   	pop    %ebx
406717:	c9                   	leave
406718:	c2 04 00             	ret    $0x4
40671b:	c7 06 0b 00 00 00    	movl   $0xb,(%esi)
406721:	e9 11 09 00 00       	jmp    0x407037
406726:	80 3d b0 e3 42 00 00 	cmpb   $0x0,0x42e3b0
40672d:	0f 85 a0 00 00 00    	jne    0x4067d3
406733:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
406737:	b8 30 d2 42 00       	mov    $0x42d230,%eax
40673c:	3d 6c d4 42 00       	cmp    $0x42d46c,%eax
406741:	b1 08                	mov    $0x8,%cl
406743:	7e 14                	jle    0x406759
406745:	3d 30 d6 42 00       	cmp    $0x42d630,%eax
40674a:	7d 04                	jge    0x406750
40674c:	fe c1                	inc    %cl
40674e:	eb 09                	jmp    0x406759
406750:	3d 90 d6 42 00       	cmp    $0x42d690,%eax
406755:	7d 02                	jge    0x406759
406757:	b1 07                	mov    $0x7,%cl
406759:	0f be c9             	movsbl %cl,%ecx
40675c:	89 08                	mov    %ecx,(%eax)
40675e:	83 c0 04             	add    $0x4,%eax
406761:	3d b0 d6 42 00       	cmp    $0x42d6b0,%eax
406766:	7c d4                	jl     0x40673c
406768:	8d 45 f8             	lea    -0x8(%ebp),%eax
40676b:	bf 30 d2 42 00       	mov    $0x42d230,%edi
406770:	50                   	push   %eax
406771:	68 30 db 42 00       	push   $0x42db30
406776:	68 24 a4 40 00       	push   $0x40a424
40677b:	68 2c d2 42 00       	push   $0x42d22c
406780:	68 54 84 40 00       	push   $0x408454
406785:	68 14 84 40 00       	push   $0x408414
40678a:	68 01 01 00 00       	push   $0x101
40678f:	68 20 01 00 00       	push   $0x120
406794:	57                   	push   %edi
406795:	e8 80 09 00 00       	call   0x40711a
40679a:	6a 1e                	push   $0x1e
40679c:	59                   	pop    %ecx
40679d:	6a 05                	push   $0x5
40679f:	58                   	pop    %eax
4067a0:	f3 ab                	rep stos %eax,%es:(%edi)
4067a2:	8d 45 f8             	lea    -0x8(%ebp),%eax
4067a5:	50                   	push   %eax
4067a6:	68 30 db 42 00       	push   $0x42db30
4067ab:	68 28 a4 40 00       	push   $0x40a428
4067b0:	68 28 d2 42 00       	push   $0x42d228
4067b5:	68 d0 84 40 00       	push   $0x4084d0
4067ba:	68 94 84 40 00       	push   $0x408494
4067bf:	6a 00                	push   $0x0
4067c1:	6a 1e                	push   $0x1e
4067c3:	68 30 d2 42 00       	push   $0x42d230
4067c8:	e8 4d 09 00 00       	call   0x40711a
4067cd:	fe 05 b0 e3 42 00    	incb   0x42e3b0
4067d3:	a0 24 a4 40 00       	mov    0x40a424,%al
4067d8:	88 46 10             	mov    %al,0x10(%esi)
4067db:	a0 28 a4 40 00       	mov    0x40a428,%al
4067e0:	88 46 11             	mov    %al,0x11(%esi)
4067e3:	a1 2c d2 42 00       	mov    0x42d22c,%eax
4067e8:	89 46 14             	mov    %eax,0x14(%esi)
4067eb:	a1 28 d2 42 00       	mov    0x42d228,%eax
4067f0:	89 46 18             	mov    %eax,0x18(%esi)
4067f3:	83 26 00             	andl   $0x0,(%esi)
4067f6:	e9 3c 08 00 00       	jmp    0x407037
4067fb:	8b cb                	mov    %ebx,%ecx
4067fd:	c7 06 09 00 00 00    	movl   $0x9,(%esi)
406803:	83 e1 07             	and    $0x7,%ecx
406806:	d3 6d c0             	shrl   %cl,-0x40(%ebp)
406809:	2b d9                	sub    %ecx,%ebx
40680b:	e9 27 08 00 00       	jmp    0x407037
406810:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
406814:	0f 84 2d 08 00 00    	je     0x407047
40681a:	8b 45 c8             	mov    -0x38(%ebp),%eax
40681d:	ff 4d cc             	decl   -0x34(%ebp)
406820:	8b cb                	mov    %ebx,%ecx
406822:	0f b6 00             	movzbl (%eax),%eax
406825:	d3 e0                	shl    %cl,%eax
406827:	09 45 c0             	or     %eax,-0x40(%ebp)
40682a:	ff 45 c8             	incl   -0x38(%ebp)
40682d:	83 c3 08             	add    $0x8,%ebx
406830:	83 fb 20             	cmp    $0x20,%ebx
406833:	72 db                	jb     0x406810
406835:	8b 45 c0             	mov    -0x40(%ebp),%eax
406838:	33 db                	xor    %ebx,%ebx
40683a:	25 ff ff 00 00       	and    $0xffff,%eax
40683f:	89 5d c0             	mov    %ebx,-0x40(%ebp)
406842:	3b c3                	cmp    %ebx,%eax
406844:	89 46 04             	mov    %eax,0x4(%esi)
406847:	0f 84 e9 00 00 00    	je     0x406936
40684d:	6a 0a                	push   $0xa
40684f:	58                   	pop    %eax
406850:	e9 e7 00 00 00       	jmp    0x40693c
406855:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
406859:	0f 84 e8 07 00 00    	je     0x407047
40685f:	8b 45 d4             	mov    -0x2c(%ebp),%eax
406862:	85 c0                	test   %eax,%eax
406864:	0f 85 98 00 00 00    	jne    0x406902
40686a:	8b 8e a0 9b 00 00    	mov    0x9ba0(%esi),%ecx
406870:	8b 55 d0             	mov    -0x30(%ebp),%edx
406873:	3b d1                	cmp    %ecx,%edx
406875:	75 29                	jne    0x4068a0
406877:	8b 86 a4 9b 00 00    	mov    0x9ba4(%esi),%eax
40687d:	8d be a0 1b 00 00    	lea    0x1ba0(%esi),%edi
406883:	3b c7                	cmp    %edi,%eax
406885:	74 19                	je     0x4068a0
406887:	8b d7                	mov    %edi,%edx
406889:	3b d0                	cmp    %eax,%edx
40688b:	89 55 d0             	mov    %edx,-0x30(%ebp)
40688e:	73 05                	jae    0x406895
406890:	2b c2                	sub    %edx,%eax
406892:	48                   	dec    %eax
406893:	eb 04                	jmp    0x406899
406895:	2b ca                	sub    %edx,%ecx
406897:	8b c1                	mov    %ecx,%eax
406899:	85 c0                	test   %eax,%eax
40689b:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40689e:	75 62                	jne    0x406902
4068a0:	ff 75 08             	push   0x8(%ebp)