406665:	83 f8 ff             	cmp    $0xffffffff,%eax
406668:	74 09                	je     0x406673
40666a:	83 f8 fe             	cmp    $0xfffffffe,%eax
40666d:	74 04                	je     0x406673
40666f:	85 c0                	test   %eax,%eax
406671:	75 07                	jne    0x40667a
406673:	c7 46 10 fe ff ff ff 	movl   $0xfffffffe,0x10(%esi)
40667a:	83 c6 38             	add    $0x38,%esi
40667d:	47                   	inc    %edi
40667e:	81 fe d8 11 42 00    	cmp    $0x4211d8,%esi
406684:	75 af                	jne    0x406635
406686:	5f                   	pop    %edi
406687:	33 c0                	xor    %eax,%eax
406689:	5e                   	pop    %esi
40668a:	c3                   	ret
40668b:	8b ff                	mov    %edi,%edi
40668d:	55                   	push   %ebp
40668e:	8b ec                	mov    %esp,%ebp
406690:	6b 45 08 38          	imul   $0x38,0x8(%ebp),%eax
406694:	05 30 11 42 00       	add    $0x421130,%eax
406699:	5d                   	pop    %ebp
40669a:	c3                   	ret
40669b:	8b ff                	mov    %edi,%edi
40669d:	56                   	push   %esi
40669e:	e8 e5 48 00 00       	call   0x40af88
4066a3:	e8 8e 45 00 00       	call   0x40ac36
4066a8:	33 f6                	xor    %esi,%esi
4066aa:	a1 40 1e 42 00       	mov    0x421e40,%eax
4066af:	ff 34 06             	push   (%esi,%eax,1)
4066b2:	e8 da 48 00 00       	call   0x40af91
4066b7:	a1 40 1e 42 00       	mov    0x421e40,%eax
4066bc:	59                   	pop    %ecx
4066bd:	8b 04 06             	mov    (%esi,%eax,1),%eax
4066c0:	83 c0 20             	add    $0x20,%eax
4066c3:	50                   	push   %eax
4066c4:	ff 15 98 90 41 00    	call   *0x419098
4066ca:	83 c6 04             	add    $0x4,%esi
4066cd:	83 fe 0c             	cmp    $0xc,%esi
4066d0:	75 d8                	jne    0x4066aa
4066d2:	ff 35 40 1e 42 00    	push   0x421e40
4066d8:	e8 c2 40 00 00       	call   0x40a79f
4066dd:	83 25 40 1e 42 00 00 	andl   $0x0,0x421e40
4066e4:	59                   	pop    %ecx
4066e5:	5e                   	pop    %esi
4066e6:	c3                   	ret
4066e7:	8b ff                	mov    %edi,%edi
4066e9:	55                   	push   %ebp
4066ea:	8b ec                	mov    %esp,%ebp
4066ec:	8b 45 08             	mov    0x8(%ebp),%eax
4066ef:	83 c0 20             	add    $0x20,%eax
4066f2:	50                   	push   %eax
4066f3:	ff 15 90 90 41 00    	call   *0x419090
4066f9:	5d                   	pop    %ebp
4066fa:	c3                   	ret
4066fb:	8b ff                	mov    %edi,%edi
4066fd:	55                   	push   %ebp
4066fe:	8b ec                	mov    %esp,%ebp
406700:	8b 45 08             	mov    0x8(%ebp),%eax
406703:	83 c0 20             	add    $0x20,%eax
406706:	50                   	push   %eax
406707:	ff 15 94 90 41 00    	call   *0x419094
40670d:	5d                   	pop    %ebp
40670e:	c3                   	ret
40670f:	6a 0c                	push   $0xc
406711:	68 20 fe 41 00       	push   $0x41fe20
406716:	e8 85 d7 ff ff       	call   0x403ea0
40671b:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40671f:	8b 45 08             	mov    0x8(%ebp),%eax
406722:	ff 30                	push   (%eax)
406724:	e8 be ff ff ff       	call   0x4066e7
406729:	59                   	pop    %ecx
40672a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40672e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
406731:	e8 b8 00 00 00       	call   0x4067ee
406736:	8b f0                	mov    %eax,%esi
406738:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40673b:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406742:	e8 17 00 00 00       	call   0x40675e
406747:	8b c6                	mov    %esi,%eax
406749:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40674c:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406753:	59                   	pop    %ecx
406754:	5f                   	pop    %edi
406755:	5e                   	pop    %esi
406756:	5b                   	pop    %ebx
406757:	c9                   	leave
406758:	c2 0c 00             	ret    $0xc
40675b:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40675e:	8b 45 10             	mov    0x10(%ebp),%eax
406761:	ff 30                	push   (%eax)
406763:	e8 93 ff ff ff       	call   0x4066fb
406768:	59                   	pop    %ecx
406769:	c3                   	ret
40676a:	8b ff                	mov    %edi,%edi
40676c:	55                   	push   %ebp
40676d:	8b ec                	mov    %esp,%ebp
40676f:	8b d1                	mov    %ecx,%edx
406771:	33 c0                	xor    %eax,%eax
406773:	8b 4d 08             	mov    0x8(%ebp),%ecx
406776:	88 42 14             	mov    %al,0x14(%edx)
406779:	89 02                	mov    %eax,(%edx)
40677b:	88 42 08             	mov    %al,0x8(%edx)
40677e:	88 42 1c             	mov    %al,0x1c(%edx)
406781:	88 42 24             	mov    %al,0x24(%edx)
406784:	85 c9                	test   %ecx,%ecx
406786:	74 07                	je     0x40678f
406788:	8b 01                	mov    (%ecx),%eax
40678a:	8b 49 04             	mov    0x4(%ecx),%ecx
40678d:	eb 13                	jmp    0x4067a2
40678f:	39 05 98 20 42 00    	cmp    %eax,0x422098
406795:	75 15                	jne    0x4067ac
406797:	a1 e0 12 42 00       	mov    0x4212e0,%eax
40679c:	8b 0d e4 12 42 00    	mov    0x4212e4,%ecx
4067a2:	c6 42 14 01          	movb   $0x1,0x14(%edx)
4067a6:	89 4a 10             	mov    %ecx,0x10(%edx)
4067a9:	89 42 0c             	mov    %eax,0xc(%edx)
4067ac:	8b c2                	mov    %edx,%eax
4067ae:	5d                   	pop    %ebp
4067af:	c2 04 00             	ret    $0x4
4067b2:	8b ff                	mov    %edi,%edi
4067b4:	56                   	push   %esi
4067b5:	57                   	push   %edi
4067b6:	8b f9                	mov    %ecx,%edi
4067b8:	80 7f 14 02          	cmpb   $0x2,0x14(%edi)
4067bc:	75 09                	jne    0x4067c7
4067be:	8b 07                	mov    (%edi),%eax
4067c0:	83 a0 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%eax)
4067c7:	80 7f 1c 00          	cmpb   $0x0,0x1c(%edi)
4067cb:	74 0b                	je     0x4067d8
4067cd:	8b 77 18             	mov    0x18(%edi),%esi
4067d0:	e8 ab 00 00 00       	call   0x406880
4067d5:	89 70 10             	mov    %esi,0x10(%eax)
4067d8:	80 7f 24 00          	cmpb   $0x0,0x24(%edi)
4067dc:	74 0d                	je     0x4067eb
4067de:	8b 77 20             	mov    0x20(%edi),%esi
4067e1:	8b cf                	mov    %edi,%ecx
4067e3:	e8 98 00 00 00       	call   0x406880
4067e8:	89 70 14             	mov    %esi,0x14(%eax)
4067eb:	5f                   	pop    %edi
4067ec:	5e                   	pop    %esi
4067ed:	c3                   	ret
4067ee:	8b ff                	mov    %edi,%edi
4067f0:	55                   	push   %ebp
4067f1:	8b ec                	mov    %esp,%ebp
4067f3:	51                   	push   %ecx
4067f4:	53                   	push   %ebx
4067f5:	56                   	push   %esi
4067f6:	8b f1                	mov    %ecx,%esi
4067f8:	57                   	push   %edi
4067f9:	8b 06                	mov    (%esi),%eax
4067fb:	8b 7e 04             	mov    0x4(%esi),%edi
4067fe:	8b 18                	mov    (%eax),%ebx
406800:	53                   	push   %ebx
406801:	e8 80 57 00 00       	call   0x40bf86
406806:	ff 76 04             	push   0x4(%esi)
406809:	88 45 fc             	mov    %al,-0x4(%ebp)
40680c:	8b 06                	mov    (%esi),%eax
40680e:	ff 30                	push   (%eax)
406810:	8b 46 10             	mov    0x10(%esi),%eax
406813:	ff 30                	push   (%eax)
406815:	8b 46 0c             	mov    0xc(%esi),%eax
406818:	ff 30                	push   (%eax)
40681a:	8b 46 08             	mov    0x8(%esi),%eax
40681d:	ff 30                	push   (%eax)
40681f:	e8 f0 00 00 00       	call   0x406914
406824:	57                   	push   %edi
406825:	53                   	push   %ebx
406826:	ff 75 fc             	push   -0x4(%ebp)
406829:	8b f0                	mov    %eax,%esi
40682b:	e8 01 58 00 00       	call   0x40c031
406830:	83 c4 24             	add    $0x24,%esp
406833:	8b c6                	mov    %esi,%eax
406835:	5f                   	pop    %edi
406836:	5e                   	pop    %esi
406837:	5b                   	pop    %ebx
406838:	c9                   	leave
406839:	c3                   	ret
40683a:	8b ff                	mov    %edi,%edi
40683c:	55                   	push   %ebp
40683d:	8b ec                	mov    %esp,%ebp
40683f:	51                   	push   %ecx
406840:	56                   	push   %esi
406841:	57                   	push   %edi
406842:	8b f9                	mov    %ecx,%edi
406844:	ff 15 28 90 41 00    	call   *0x419028
40684a:	80 7f 08 00          	cmpb   $0x0,0x8(%edi)
40684e:	89 45 fc             	mov    %eax,-0x4(%ebp)
406851:	75 0b                	jne    0x40685e
406853:	33 c0                	xor    %eax,%eax
406855:	c6 47 08 01          	movb   $0x1,0x8(%edi)
406859:	89 47 04             	mov    %eax,0x4(%edi)
40685c:	eb 03                	jmp    0x406861
40685e:	8b 47 04             	mov    0x4(%edi),%eax
406861:	50                   	push   %eax
406862:	8d 45 fc             	lea    -0x4(%ebp),%eax
406865:	50                   	push   %eax
406866:	e8 44 5d 00 00       	call   0x40c5af
40686b:	59                   	pop    %ecx
40686c:	59                   	pop    %ecx
40686d:	ff 75 fc             	push   -0x4(%ebp)
406870:	8b f0                	mov    %eax,%esi
406872:	89 37                	mov    %esi,(%edi)
406874:	ff 15 88 90 41 00    	call   *0x419088
40687a:	5f                   	pop    %edi
40687b:	8b c6                	mov    %esi,%eax
40687d:	5e                   	pop    %esi
40687e:	c9                   	leave
40687f:	c3                   	ret
406880:	8b ff                	mov    %edi,%edi
406882:	56                   	push   %esi
406883:	8b f1                	mov    %ecx,%esi
406885:	83 3e 00             	cmpl   $0x0,(%esi)
406888:	75 09                	jne    0x406893
40688a:	e8 ab ff ff ff       	call   0x40683a
40688f:	85 c0                	test   %eax,%eax
406891:	74 04                	je     0x406897
406893:	8b 06                	mov    (%esi),%eax
406895:	5e                   	pop    %esi
406896:	c3                   	ret
406897:	e8 8e 3c 00 00       	call   0x40a52a
40689c:	cc                   	int3
40689d:	8b ff                	mov    %edi,%edi
40689f:	55                   	push   %ebp
4068a0:	8b ec                	mov    %esp,%ebp
4068a2:	83 ec 20             	sub    $0x20,%esp
4068a5:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4068a9:	74 2b                	je     0x4068d6
4068ab:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
4068af:	74 25                	je     0x4068d6
4068b1:	8b 4d 14             	mov    0x14(%ebp),%ecx
4068b4:	85 c9                	test   %ecx,%ecx
4068b6:	75 22                	jne    0x4068da
4068b8:	8b 45 18             	mov    0x18(%ebp),%eax
4068bb:	50                   	push   %eax
4068bc:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
4068c0:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
4068c7:	33 c0                	xor    %eax,%eax
4068c9:	50                   	push   %eax
4068ca:	50                   	push   %eax
4068cb:	50                   	push   %eax
4068cc:	50                   	push   %eax
4068cd:	50                   	push   %eax
4068ce:	e8 79 0b 00 00       	call   0x40744c
4068d3:	83 c4 18             	add    $0x18,%esp
4068d6:	33 c0                	xor    %eax,%eax
4068d8:	c9                   	leave
4068d9:	c3                   	ret
4068da:	8d 45 14             	lea    0x14(%ebp),%eax
4068dd:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4068e0:	89 45 e0             	mov    %eax,-0x20(%ebp)
4068e3:	8b 45 18             	mov    0x18(%ebp),%eax
4068e6:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4068e9:	8d 45 08             	lea    0x8(%ebp),%eax
4068ec:	89 45 e8             	mov    %eax,-0x18(%ebp)
4068ef:	8d 45 0c             	lea    0xc(%ebp),%eax
4068f2:	89 45 ec             	mov    %eax,-0x14(%ebp)
4068f5:	8d 45 10             	lea    0x10(%ebp),%eax
4068f8:	89 45 f0             	mov    %eax,-0x10(%ebp)
4068fb:	8d 45 f8             	lea    -0x8(%ebp),%eax
4068fe:	50                   	push   %eax
4068ff:	8d 45 e0             	lea    -0x20(%ebp),%eax
406902:	89 4d f4             	mov    %ecx,-0xc(%ebp)
406905:	50                   	push   %eax
406906:	8d 45 f4             	lea    -0xc(%ebp),%eax
406909:	50                   	push   %eax
40690a:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40690d:	e8 fd fd ff ff       	call   0x40670f
406912:	c9                   	leave
406913:	c3                   	ret
406914:	8b ff                	mov    %edi,%edi
406916:	55                   	push   %ebp
406917:	8b ec                	mov    %esp,%ebp
406919:	83 ec 0c             	sub    $0xc,%esp
40691c:	53                   	push   %ebx
40691d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406920:	56                   	push   %esi
406921:	57                   	push   %edi
406922:	85 db                	test   %ebx,%ebx
406924:	74 2c                	je     0x406952
406926:	8b 7d 10             	mov    0x10(%ebp),%edi
406929:	85 ff                	test   %edi,%edi
40692b:	74 25                	je     0x406952
40692d:	8b 4d 14             	mov    0x14(%ebp),%ecx
406930:	85 c9                	test   %ecx,%ecx
406932:	75 25                	jne    0x406959
406934:	8b 45 18             	mov    0x18(%ebp),%eax
406937:	50                   	push   %eax
406938:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40693c:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
406943:	33 c0                	xor    %eax,%eax
406945:	50                   	push   %eax
406946:	50                   	push   %eax
406947:	50                   	push   %eax
406948:	50                   	push   %eax
406949:	50                   	push   %eax
40694a:	e8 fd 0a 00 00       	call   0x40744c
40694f:	83 c4 18             	add    $0x18,%esp
406952:	33 c0                	xor    %eax,%eax
406954:	5f                   	pop    %edi
406955:	5e                   	pop    %esi
406956:	5b                   	pop    %ebx
406957:	c9                   	leave
406958:	c3                   	ret
406959:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40695d:	74 d5                	je     0x406934
40695f:	83 c8 ff             	or     $0xffffffff,%eax
406962:	33 d2                	xor    %edx,%edx
406964:	f7 f3                	div    %ebx
406966:	3b f8                	cmp    %eax,%edi
406968:	77 ca                	ja     0x406934
40696a:	8d 41 0c             	lea    0xc(%ecx),%eax
40696d:	89 45 f4             	mov    %eax,-0xc(%ebp)
406970:	8b 00                	mov    (%eax),%eax
406972:	90                   	nop
406973:	a9 c0 04 00 00       	test   $0x4c0,%eax
406978:	74 05                	je     0x40697f
40697a:	8b 51 18             	mov    0x18(%ecx),%edx
40697d:	eb 05                	jmp    0x406984
40697f:	ba 00 10 00 00       	mov    $0x1000,%edx
406984:	8b f3                	mov    %ebx,%esi
406986:	89 55 fc             	mov    %edx,-0x4(%ebp)
406989:	0f af f7             	imul   %edi,%esi
40698c:	8b fe                	mov    %esi,%edi
40698e:	85 f6                	test   %esi,%esi
406990:	0f 84 fe 00 00 00    	je     0x406a94
406996:	8d 59 0c             	lea    0xc(%ecx),%ebx
406999:	8b 03                	mov    (%ebx),%eax
40699b:	90                   	nop
40699c:	a8 c0                	test   $0xc0,%al
40699e:	74 3b                	je     0x4069db
4069a0:	8b 41 08             	mov    0x8(%ecx),%eax
4069a3:	85 c0                	test   %eax,%eax
4069a5:	74 34                	je     0x4069db
4069a7:	0f 88 ef 00 00 00    	js     0x406a9c
4069ad:	8b 03                	mov    (%ebx),%eax
4069af:	90                   	nop
4069b0:	a8 01                	test   $0x1,%al
4069b2:	0f 85 ea 00 00 00    	jne    0x406aa2
4069b8:	8b 59 08             	mov    0x8(%ecx),%ebx
4069bb:	3b fb                	cmp    %ebx,%edi
4069bd:	73 02                	jae    0x4069c1
4069bf:	8b df                	mov    %edi,%ebx
4069c1:	53                   	push   %ebx
4069c2:	ff 75 08             	push   0x8(%ebp)
4069c5:	ff 31                	push   (%ecx)
4069c7:	e8 64 d9 ff ff       	call   0x404330
4069cc:	8b 4d 14             	mov    0x14(%ebp),%ecx
4069cf:	83 c4 0c             	add    $0xc,%esp
4069d2:	2b fb                	sub    %ebx,%edi
4069d4:	29 59 08             	sub    %ebx,0x8(%ecx)