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
40671b:	74 28                	je     0x406745
40671d:	66 89 8c 45 e0 f9 ff 	mov    %cx,-0x620(%ebp,%eax,2)
406724:	ff
406725:	66 3b cf             	cmp    %di,%cx
406728:	75 10                	jne    0x40673a
40672a:	3d 06 02 00 00       	cmp    $0x206,%eax
40672f:	73 09                	jae    0x40673a
406731:	40                   	inc    %eax
406732:	66 89 bc 45 e0 f9 ff 	mov    %di,-0x620(%ebp,%eax,2)
406739:	ff
40673a:	83 c2 02             	add    $0x2,%edx
40673d:	40                   	inc    %eax
40673e:	3d 07 02 00 00       	cmp    $0x207,%eax
406743:	72 d0                	jb     0x406715
406745:	33 c9                	xor    %ecx,%ecx
406747:	66 89 8c 45 e0 f9 ff 	mov    %cx,-0x620(%ebp,%eax,2)
40674e:	ff
40674f:	85 f6                	test   %esi,%esi
406751:	74 16                	je     0x406769
406753:	53                   	push   %ebx
406754:	ff 15 cc 60 41 00    	call   *0x4160cc
40675a:	3b f0                	cmp    %eax,%esi
40675c:	74 0b                	je     0x406769
40675e:	8d 85 e0 f9 ff ff    	lea    -0x620(%ebp),%eax
406764:	e9 a2 00 00 00       	jmp    0x40680b
406769:	6a 22                	push   $0x22
40676b:	5e                   	pop    %esi
40676c:	8d 8d e0 f9 ff ff    	lea    -0x620(%ebp),%ecx
406772:	66 89 b5 c8 f5 ff ff 	mov    %si,-0xa38(%ebp)
406779:	8d 51 02             	lea    0x2(%ecx),%edx
40677c:	66 8b 01             	mov    (%ecx),%ax
40677f:	83 c1 02             	add    $0x2,%ecx
406782:	66 3b c3             	cmp    %bx,%ax
406785:	75 f5                	jne    0x40677c
406787:	2b ca                	sub    %edx,%ecx
406789:	d1 f9                	sar    $1,%ecx
40678b:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
406792:	50                   	push   %eax
406793:	8d 85 e0 f9 ff ff    	lea    -0x620(%ebp),%eax
406799:	50                   	push   %eax
40679a:	8d 85 ca f5 ff ff    	lea    -0xa36(%ebp),%eax
4067a0:	68 14 04 00 00       	push   $0x414
4067a5:	50                   	push   %eax
4067a6:	ff 15 c4 62 41 00    	call   *0x4162c4
4067ac:	83 c4 10             	add    $0x10,%esp
4067af:	85 c0                	test   %eax,%eax
4067b1:	74 15                	je     0x4067c8
4067b3:	8d 8d c4 f5 ff ff    	lea    -0xa3c(%ebp),%ecx
4067b9:	e8 ff 0f 00 00       	call   0x4077bd
4067be:	be 05 40 00 80       	mov    $0x80004005,%esi
4067c3:	e9 c6 00 00 00       	jmp    0x40688e
4067c8:	8d 8d c8 f5 ff ff    	lea    -0xa38(%ebp),%ecx
4067ce:	8d 51 02             	lea    0x2(%ecx),%edx
4067d1:	66 8b 01             	mov    (%ecx),%ax
4067d4:	83 c1 02             	add    $0x2,%ecx
4067d7:	66 3b c3             	cmp    %bx,%ax
4067da:	75 f5                	jne    0x4067d1
4067dc:	2b ca                	sub    %edx,%ecx
4067de:	d1 f9                	sar    $1,%ecx
4067e0:	66 89 b4 4d c8 f5 ff 	mov    %si,-0xa38(%ebp,%ecx,2)
4067e7:	ff
4067e8:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4067ef:	81 f9 18 04 00 00    	cmp    $0x418,%ecx
4067f5:	0f 83 b1 00 00 00    	jae    0x4068ac
4067fb:	33 c0                	xor    %eax,%eax
4067fd:	66 89 84 0d c8 f5 ff 	mov    %ax,-0xa38(%ebp,%ecx,1)
406804:	ff
406805:	8d 85 c8 f5 ff ff    	lea    -0xa38(%ebp),%eax
40680b:	50                   	push   %eax
40680c:	68 a8 2a 40 00       	push   $0x402aa8
406811:	8d 85 94 f5 ff ff    	lea    -0xa6c(%ebp),%eax
406817:	50                   	push   %eax
406818:	e8 33 ea ff ff       	call   0x405250
40681d:	8b f0                	mov    %eax,%esi
40681f:	85 f6                	test   %esi,%esi
406821:	0f 88 ba fe ff ff    	js     0x4066e1
406827:	8d 85 e0 f9 ff ff    	lea    -0x620(%ebp),%eax
40682d:	50                   	push   %eax
40682e:	68 b8 2a 40 00       	push   $0x402ab8
406833:	8d 85 94 f5 ff ff    	lea    -0xa6c(%ebp),%eax
406839:	50                   	push   %eax
40683a:	e8 11 ea ff ff       	call   0x405250
40683f:	8b f0                	mov    %eax,%esi
406841:	85 f6                	test   %esi,%esi
406843:	0f 88 98 fe ff ff    	js     0x4066e1
406849:	8d 8d 94 f5 ff ff    	lea    -0xa6c(%ebp),%ecx
40684f:	8b 85 c0 f5 ff ff    	mov    -0xa40(%ebp),%eax
406855:	0f b7 c0             	movzwl %ax,%eax
406858:	89 9d c0 f5 ff ff    	mov    %ebx,-0xa40(%ebp)
40685e:	39 5d 08             	cmp    %ebx,0x8(%ebp)
406861:	74 04                	je     0x406867
406863:	6a 01                	push   $0x1
406865:	eb 01                	jmp    0x406868
406867:	53                   	push   %ebx
406868:	68 d0 2a 40 00       	push   $0x402ad0
40686d:	50                   	push   %eax
40686e:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
406874:	50                   	push   %eax
406875:	e8 41 ea ff ff       	call   0x4052bb
40687a:	8d 8d c0 f5 ff ff    	lea    -0xa40(%ebp),%ecx
406880:	8b f0                	mov    %eax,%esi
406882:	e8 36 0f 00 00       	call   0x4077bd
406887:	e9 55 fe ff ff       	jmp    0x4066e1
40688c:	8b f0                	mov    %eax,%esi
40688e:	8d 8d 94 f5 ff ff    	lea    -0xa6c(%ebp),%ecx
406894:	e8 4c e9 ff ff       	call   0x4051e5
406899:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40689c:	8b c6                	mov    %esi,%eax
40689e:	5f                   	pop    %edi
40689f:	5e                   	pop    %esi
4068a0:	33 cd                	xor    %ebp,%ecx
4068a2:	5b                   	pop    %ebx
4068a3:	e8 48 b7 00 00       	call   0x411ff0
4068a8:	c9                   	leave
4068a9:	c2 08 00             	ret    $0x8
4068ac:	e8 87 b8 00 00       	call   0x412138
4068b1:	cc                   	int3
4068b2:	8b ff                	mov    %edi,%edi
4068b4:	55                   	push   %ebp
4068b5:	8b ec                	mov    %esp,%ebp
4068b7:	51                   	push   %ecx
4068b8:	51                   	push   %ecx
4068b9:	53                   	push   %ebx
4068ba:	56                   	push   %esi
4068bb:	8b f1                	mov    %ecx,%esi
4068bd:	57                   	push   %edi
4068be:	85 f6                	test   %esi,%esi
4068c0:	0f 84 9f 00 00 00    	je     0x406965
4068c6:	85 d2                	test   %edx,%edx
4068c8:	0f 84 97 00 00 00    	je     0x406965
4068ce:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4068d1:	85 db                	test   %ebx,%ebx
4068d3:	75 0a                	jne    0x4068df
4068d5:	b8 03 40 00 80       	mov    $0x80004003,%eax
4068da:	e9 8b 00 00 00       	jmp    0x40696a
4068df:	83 23 00             	andl   $0x0,(%ebx)
4068e2:	8b 4d 08             	mov    0x8(%ebp),%ecx
4068e5:	e8 0d e4 ff ff       	call   0x404cf7
4068ea:	85 c0                	test   %eax,%eax
4068ec:	74 1b                	je     0x406909
4068ee:	8b 7a 04             	mov    0x4(%edx),%edi
4068f1:	03 fe                	add    %esi,%edi
4068f3:	57                   	push   %edi
4068f4:	8b 07                	mov    (%edi),%eax
4068f6:	8b 70 04             	mov    0x4(%eax),%esi
4068f9:	8b ce                	mov    %esi,%ecx
4068fb:	ff 15 28 63 41 00    	call   *0x416328
406901:	ff d6                	call   *%esi
406903:	89 3b                	mov    %edi,(%ebx)
406905:	33 c0                	xor    %eax,%eax
406907:	eb 61                	jmp    0x40696a
406909:	8d 7a 08             	lea    0x8(%edx),%edi
40690c:	eb 46                	jmp    0x406954
40690e:	8b 47 f8             	mov    -0x8(%edi),%eax
406911:	89 45 f8             	mov    %eax,-0x8(%ebp)
406914:	85 c0                	test   %eax,%eax
406916:	74 0e                	je     0x406926
406918:	8b 55 08             	mov    0x8(%ebp),%edx
40691b:	8b c8                	mov    %eax,%ecx
40691d:	e8 6e e2 ff ff       	call   0x404b90
406922:	85 c0                	test   %eax,%eax
406924:	74 2b                	je     0x406951
406926:	8b 07                	mov    (%edi),%eax
406928:	89 45 fc             	mov    %eax,-0x4(%ebp)
40692b:	83 f8 01             	cmp    $0x1,%eax
40692e:	74 30                	je     0x406960
406930:	ff 77 fc             	push   -0x4(%edi)
406933:	8b c8                	mov    %eax,%ecx
406935:	53                   	push   %ebx
406936:	ff 75 08             	push   0x8(%ebp)
406939:	56                   	push   %esi
40693a:	ff 15 28 63 41 00    	call   *0x416328
406940:	ff 55 fc             	call   *-0x4(%ebp)
406943:	85 c0                	test   %eax,%eax
406945:	74 23                	je     0x40696a