4067e7:	88 4d ff             	mov    %cl,-0x1(%ebp)
4067ea:	f6 45 ff 02          	testb  $0x2,-0x1(%ebp)
4067ee:	0f 84 d2 01 00 00    	je     0x4069c6
4067f4:	8b 4f 18             	mov    0x18(%edi),%ecx
4067f7:	8b 0c 81             	mov    (%ecx,%eax,4),%ecx
4067fa:	83 c1 08             	add    $0x8,%ecx
4067fd:	89 4d e8             	mov    %ecx,-0x18(%ebp)
406800:	33 c9                	xor    %ecx,%ecx
406802:	3b 47 20             	cmp    0x20(%edi),%eax
406805:	8d 45 d4             	lea    -0x2c(%ebp),%eax
406808:	50                   	push   %eax
406809:	89 4d dc             	mov    %ecx,-0x24(%ebp)
40680c:	51                   	push   %ecx
40680d:	7c 07                	jl     0x406816
40680f:	68 07 10 00 00       	push   $0x1007
406814:	eb 01                	jmp    0x406817
406816:	53                   	push   %ebx
406817:	ff 75 08             	push   0x8(%ebp)
40681a:	ff d6                	call   *%esi
40681c:	8b 47 18             	mov    0x18(%edi),%eax
40681f:	8b 4d d8             	mov    -0x28(%ebp),%ecx
406822:	c7 45 dc 01 00 00 00 	movl   $0x1,-0x24(%ebp)
406829:	8b 04 88             	mov    (%eax,%ecx,4),%eax
40682c:	05 0c 01 00 00       	add    $0x10c,%eax
406831:	89 45 e8             	mov    %eax,-0x18(%ebp)
406834:	8d 45 d4             	lea    -0x2c(%ebp),%eax
406837:	50                   	push   %eax
406838:	6a 00                	push   $0x0
40683a:	53                   	push   %ebx
40683b:	ff 75 08             	push   0x8(%ebp)
40683e:	ff d6                	call   *%esi
406840:	8b 47 18             	mov    0x18(%edi),%eax
406843:	8b 4d d8             	mov    -0x28(%ebp),%ecx
406846:	68 04 01 00 00       	push   $0x104
40684b:	8b 04 88             	mov    (%eax,%ecx,4),%eax
40684e:	ff 30                	push   (%eax)
406850:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
406856:	50                   	push   %eax
406857:	e8 6a 20 00 00       	call   0x4088c6
40685c:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
406862:	83 c4 0c             	add    $0xc,%esp
406865:	89 45 e8             	mov    %eax,-0x18(%ebp)
406868:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40686b:	50                   	push   %eax
40686c:	6a 00                	push   $0x0
40686e:	53                   	push   %ebx
40686f:	c7 45 dc 03 00 00 00 	movl   $0x3,-0x24(%ebp)
406876:	ff 75 08             	push   0x8(%ebp)
406879:	ff d6                	call   *%esi
40687b:	8b 47 18             	mov    0x18(%edi),%eax
40687e:	8b 4d d8             	mov    -0x28(%ebp),%ecx
406881:	8b 04 88             	mov    (%eax,%ecx,4),%eax
406884:	83 c0 08             	add    $0x8,%eax
406887:	50                   	push   %eax
406888:	8d 85 a0 fc ff ff    	lea    -0x360(%ebp),%eax
40688e:	50                   	push   %eax
40688f:	e8 b4 27 00 00       	call   0x409048
406894:	8b 47 18             	mov    0x18(%edi),%eax
406897:	59                   	pop    %ecx
406898:	59                   	pop    %ecx
406899:	8b 4d d8             	mov    -0x28(%ebp),%ecx
40689c:	8b 04 88             	mov    (%eax,%ecx,4),%eax
40689f:	ff 30                	push   (%eax)
4068a1:	6a 00                	push   $0x0
4068a3:	68 10 04 00 00       	push   $0x410
4068a8:	ff 15 0c a1 40 00    	call   *0x40a10c
4068ae:	85 c0                	test   %eax,%eax
4068b0:	89 45 d0             	mov    %eax,-0x30(%ebp)
4068b3:	74 18                	je     0x4068cd
4068b5:	8d 8d a0 fc ff ff    	lea    -0x360(%ebp),%ecx
4068bb:	51                   	push   %ecx
4068bc:	50                   	push   %eax
4068bd:	e8 5d 23 00 00       	call   0x408c1f
4068c2:	59                   	pop    %ecx
4068c3:	59                   	pop    %ecx
4068c4:	ff 75 d0             	push   -0x30(%ebp)
4068c7:	ff 15 dc a0 40 00    	call   *0x40a0dc
4068cd:	6a 02                	push   $0x2
4068cf:	8d 85 a4 fd ff ff    	lea    -0x25c(%ebp),%eax
4068d5:	68 80 00 00 00       	push   $0x80
4068da:	50                   	push   %eax
4068db:	8d 85 a0 fc ff ff    	lea    -0x360(%ebp),%eax
4068e1:	50                   	push   %eax
4068e2:	e8 37 21 00 00       	call   0x408a1e
4068e7:	59                   	pop    %ecx
4068e8:	50                   	push   %eax
4068e9:	e8 fa 21 00 00       	call   0x408ae8
4068ee:	8d 85 a4 fd ff ff    	lea    -0x25c(%ebp),%eax
4068f4:	83 c4 10             	add    $0x10,%esp
4068f7:	89 45 e8             	mov    %eax,-0x18(%ebp)
4068fa:	8d 45 d4             	lea    -0x2c(%ebp),%eax
4068fd:	50                   	push   %eax
4068fe:	6a 00                	push   $0x0
406900:	53                   	push   %ebx
406901:	c7 45 dc 05 00 00 00 	movl   $0x5,-0x24(%ebp)
406908:	ff 75 08             	push   0x8(%ebp)
40690b:	ff d6                	call   *%esi
40690d:	8d 85 24 fe ff ff    	lea    -0x1dc(%ebp),%eax
406913:	c7 45 dc 06 00 00 00 	movl   $0x6,-0x24(%ebp)
40691a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40691d:	8d 45 d4             	lea    -0x2c(%ebp),%eax
406920:	50                   	push   %eax
406921:	6a 00                	push   $0x0
406923:	53                   	push   %ebx
406924:	ff 75 08             	push   0x8(%ebp)
406927:	ff d6                	call   *%esi
406929:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
40692f:	68 88 ca 40 00       	push   $0x40ca88
406934:	50                   	push   %eax
406935:	e8 0e 27 00 00       	call   0x409048
40693a:	8b 47 18             	mov    0x18(%edi),%eax
40693d:	59                   	pop    %ecx
40693e:	59                   	pop    %ecx
40693f:	8b 4d d8             	mov    -0x28(%ebp),%ecx
406942:	8b 0c 88             	mov    (%eax,%ecx,4),%ecx
406945:	8b 81 20 02 00 00    	mov    0x220(%ecx),%eax
40694b:	89 45 c8             	mov    %eax,-0x38(%ebp)
40694e:	8b 89 24 02 00 00    	mov    0x224(%ecx),%ecx
406954:	85 c0                	test   %eax,%eax
406956:	89 4d cc             	mov    %ecx,-0x34(%ebp)
406959:	74 4c                	je     0x4069a7
40695b:	8d 45 a8             	lea    -0x58(%ebp),%eax
40695e:	50                   	push   %eax
40695f:	8d 45 c8             	lea    -0x38(%ebp),%eax
406962:	50                   	push   %eax
406963:	ff 15 78 a0 40 00    	call   *0x40a078
406969:	8d 45 b8             	lea    -0x48(%ebp),%eax
40696c:	50                   	push   %eax
40696d:	8d 45 a8             	lea    -0x58(%ebp),%eax
406970:	50                   	push   %eax
406971:	6a 00                	push   $0x0
406973:	ff 15 74 a0 40 00    	call   *0x40a074
406979:	0f b7 45 ba          	movzwl -0x46(%ebp),%eax
40697d:	50                   	push   %eax
40697e:	0f b7 45 be          	movzwl -0x42(%ebp),%eax
406982:	50                   	push   %eax
406983:	0f b7 45 c4          	movzwl -0x3c(%ebp),%eax
406987:	50                   	push   %eax
406988:	0f b7 45 c2          	movzwl -0x3e(%ebp),%eax
40698c:	50                   	push   %eax
40698d:	0f b7 45 c0          	movzwl -0x40(%ebp),%eax
406991:	50                   	push   %eax
406992:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
406998:	68 8c ca 40 00       	push   $0x40ca8c
40699d:	50                   	push   %eax
40699e:	ff 15 58 a1 40 00    	call   *0x40a158
4069a4:	83 c4 1c             	add    $0x1c,%esp
4069a7:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
4069ad:	c7 45 dc 07 00 00 00 	movl   $0x7,-0x24(%ebp)
4069b4:	89 45 e8             	mov    %eax,-0x18(%ebp)
4069b7:	8d 45 d4             	lea    -0x2c(%ebp),%eax
4069ba:	50                   	push   %eax
4069bb:	6a 00                	push   $0x0
4069bd:	53                   	push   %ebx
4069be:	ff 75 08             	push   0x8(%ebp)
4069c1:	ff d6                	call   *%esi
4069c3:	8b 45 d8             	mov    -0x28(%ebp),%eax
4069c6:	f6 45 ff 04          	testb  $0x4,-0x1(%ebp)
4069ca:	74 45                	je     0x406a11
4069cc:	8b 4f 18             	mov    0x18(%edi),%ecx
4069cf:	51                   	push   %ecx
4069d0:	51                   	push   %ecx
4069d1:	8b 04 81             	mov    (%ecx,%eax,4),%eax
4069d4:	dd 80 18 02 00 00    	fldl   0x218(%eax)
4069da:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
4069e0:	dd 1c 24             	fstpl  (%esp)
4069e3:	68 28 cc 40 00       	push   $0x40cc28
4069e8:	50                   	push   %eax
4069e9:	ff 15 58 a1 40 00    	call   *0x40a158
4069ef:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
4069f5:	83 c4 10             	add    $0x10,%esp
4069f8:	89 45 e8             	mov    %eax,-0x18(%ebp)
4069fb:	8d 45 d4             	lea    -0x2c(%ebp),%eax
4069fe:	50                   	push   %eax
4069ff:	6a 00                	push   $0x0
406a01:	53                   	push   %ebx
406a02:	c7 45 dc 02 00 00 00 	movl   $0x2,-0x24(%ebp)
406a09:	ff 75 08             	push   0x8(%ebp)
406a0c:	ff d6                	call   *%esi
406a0e:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a11:	f6 45 ff 08          	testb  $0x8,-0x1(%ebp)
406a15:	74 43                	je     0x406a5a
406a17:	8b 4f 18             	mov    0x18(%edi),%ecx
406a1a:	68 04 01 00 00       	push   $0x104
406a1f:	8b 04 81             	mov    (%ecx,%eax,4),%eax
406a22:	8b 80 10 02 00 00    	mov    0x210(%eax),%eax
406a28:	c1 e8 0a             	shr    $0xa,%eax
406a2b:	50                   	push   %eax
406a2c:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
406a32:	50                   	push   %eax
406a33:	e8 8e 1e 00 00       	call   0x4088c6
406a38:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
406a3e:	83 c4 0c             	add    $0xc,%esp
406a41:	89 45 e8             	mov    %eax,-0x18(%ebp)
406a44:	8d 45 d4             	lea    -0x2c(%ebp),%eax
406a47:	50                   	push   %eax
406a48:	6a 00                	push   $0x0
406a4a:	53                   	push   %ebx
406a4b:	c7 45 dc 04 00 00 00 	movl   $0x4,-0x24(%ebp)
406a52:	ff 75 08             	push   0x8(%ebp)
406a55:	ff d6                	call   *%esi
406a57:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a5a:	40                   	inc    %eax
406a5b:	3b 47 1c             	cmp    0x1c(%edi),%eax
406a5e:	89 45 d8             	mov    %eax,-0x28(%ebp)
406a61:	0f 82 68 fd ff ff    	jb     0x4067cf
406a67:	33 db                	xor    %ebx,%ebx
406a69:	3b 47 20             	cmp    0x20(%edi),%eax
406a6c:	53                   	push   %ebx
406a6d:	7f 14                	jg     0x406a83
406a6f:	50                   	push   %eax
406a70:	68 08 10 00 00       	push   $0x1008
406a75:	ff 75 08             	push   0x8(%ebp)
406a78:	ff d6                	call   *%esi
406a7a:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a7d:	40                   	inc    %eax
406a7e:	89 45 d8             	mov    %eax,-0x28(%ebp)
406a81:	eb e6                	jmp    0x406a69
406a83:	6a 01                	push   $0x1
406a85:	6a 0b                	push   $0xb
406a87:	ff 75 08             	push   0x8(%ebp)
406a8a:	ff d6                	call   *%esi
406a8c:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a8f:	5f                   	pop    %edi
406a90:	5e                   	pop    %esi
406a91:	5b                   	pop    %ebx
406a92:	c9                   	leave
406a93:	c2 04 00             	ret    $0x4
406a96:	56                   	push   %esi
406a97:	8b f1                	mov    %ecx,%esi
406a99:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
406a9d:	74 05                	je     0x406aa4
406a9f:	6a fc                	push   $0xfffffffc
406aa1:	58                   	pop    %eax
406aa2:	eb 33                	jmp    0x406ad7
406aa4:	8b 44 24 0c          	mov    0xc(%esp),%eax
406aa8:	c6 46 05 01          	movb   $0x1,0x5(%esi)
406aac:	85 c0                	test   %eax,%eax
406aae:	7c 20                	jl     0x406ad0
406ab0:	3b 46 1c             	cmp    0x1c(%esi),%eax
406ab3:	73 1b                	jae    0x406ad0
406ab5:	8b 4e 18             	mov    0x18(%esi),%ecx
406ab8:	68 50 02 00 00       	push   $0x250
406abd:	ff 34 81             	push   (%ecx,%eax,4)
406ac0:	ff 74 24 10          	push   0x10(%esp)
406ac4:	e8 8b 25 00 00       	call   0x409054
406ac9:	83 c4 0c             	add    $0xc,%esp
406acc:	6a 01                	push   $0x1
406ace:	eb 02                	jmp    0x406ad2
406ad0:	6a fe                	push   $0xfffffffe
406ad2:	80 66 05 00          	andb   $0x0,0x5(%esi)
406ad6:	58                   	pop    %eax
406ad7:	5e                   	pop    %esi
406ad8:	c2 08 00             	ret    $0x8
406adb:	56                   	push   %esi
406adc:	8b f1                	mov    %ecx,%esi
406ade:	33 c9                	xor    %ecx,%ecx
406ae0:	38 4e 04             	cmp    %cl,0x4(%esi)
406ae3:	74 05                	je     0x406aea
406ae5:	6a fc                	push   $0xfffffffc
406ae7:	58                   	pop    %eax
406ae8:	eb 2d                	jmp    0x406b17
406aea:	8b 56 1c             	mov    0x1c(%esi),%edx
406aed:	53                   	push   %ebx
406aee:	3b d1                	cmp    %ecx,%edx
406af0:	57                   	push   %edi
406af1:	c6 46 05 01          	movb   $0x1,0x5(%esi)
406af5:	7e 17                	jle    0x406b0e
406af7:	8b 46 18             	mov    0x18(%esi),%eax
406afa:	8b f8                	mov    %eax,%edi
406afc:	8b 1f                	mov    (%edi),%ebx
406afe:	8b 1b                	mov    (%ebx),%ebx
406b00:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
406b04:	74 15                	je     0x406b1b
406b06:	41                   	inc    %ecx
406b07:	83 c7 04             	add    $0x4,%edi
406b0a:	3b ca                	cmp    %edx,%ecx
406b0c:	7c ee                	jl     0x406afc
406b0e:	6a fe                	push   $0xfffffffe
406b10:	80 66 05 00          	andb   $0x0,0x5(%esi)
406b14:	58                   	pop    %eax
406b15:	5f                   	pop    %edi
406b16:	5b                   	pop    %ebx
406b17:	5e                   	pop    %esi
406b18:	c2 08 00             	ret    $0x8
406b1b:	68 50 02 00 00       	push   $0x250
406b20:	ff 34 88             	push   (%eax,%ecx,4)
406b23:	ff 74 24 18          	push   0x18(%esp)
406b27:	e8 28 25 00 00       	call   0x409054
406b2c:	83 c4 0c             	add    $0xc,%esp
406b2f:	6a 01                	push   $0x1
406b31:	eb dd                	jmp    0x406b10
406b33:	55                   	push   %ebp
406b34:	8b ec                	mov    %esp,%ebp
406b36:	51                   	push   %ecx
406b37:	56                   	push   %esi
406b38:	6a 40                	push   $0x40
406b3a:	68 00 10 00 00       	push   $0x1000
406b3f:	ff 75 10             	push   0x10(%ebp)
406b42:	6a 00                	push   $0x0
406b44:	ff 75 08             	push   0x8(%ebp)
406b47:	ff 15 a4 a0 40 00    	call   *0x40a0a4
406b4d:	8b f0                	mov    %eax,%esi
406b4f:	85 f6                	test   %esi,%esi
406b51:	74 1a                	je     0x406b6d
406b53:	8d 45 fc             	lea    -0x4(%ebp),%eax
406b56:	50                   	push   %eax
406b57:	ff 75 10             	push   0x10(%ebp)
406b5a:	ff 75 0c             	push   0xc(%ebp)
406b5d:	56                   	push   %esi
406b5e:	ff 75 08             	push   0x8(%ebp)
406b61:	ff 15 a0 a0 40 00    	call   *0x40a0a0
406b67:	f7 d8                	neg    %eax
406b69:	1b c0                	sbb    %eax,%eax
406b6b:	23 c6                	and    %esi,%eax
406b6d:	5e                   	pop    %esi
406b6e:	c9                   	leave
406b6f:	c3                   	ret
406b70:	55                   	push   %ebp
406b71:	8b ec                	mov    %esp,%ebp
406b73:	51                   	push   %ecx
406b74:	51                   	push   %ecx
406b75:	53                   	push   %ebx
406b76:	56                   	push   %esi
406b77:	57                   	push   %edi
406b78:	8b 7d 08             	mov    0x8(%ebp),%edi
406b7b:	ff 75 10             	push   0x10(%ebp)
406b7e:	ff 75 0c             	push   0xc(%ebp)
406b81:	57                   	push   %edi
406b82:	e8 ac ff ff ff       	call   0x406b33
406b87:	8b f0                	mov    %eax,%esi
406b89:	33 db                	xor    %ebx,%ebx
406b8b:	83 c4 0c             	add    $0xc,%esp
406b8e:	3b f3                	cmp    %ebx,%esi
406b90:	89 75 10             	mov    %esi,0x10(%ebp)
406b93:	74 5c                	je     0x406bf1
406b95:	ff 75 18             	push   0x18(%ebp)
406b98:	ff 75 14             	push   0x14(%ebp)
406b9b:	57                   	push   %edi
406b9c:	e8 92 ff ff ff       	call   0x406b33
406ba1:	83 c4 0c             	add    $0xc,%esp
406ba4:	3b c3                	cmp    %ebx,%eax
406ba6:	89 45 0c             	mov    %eax,0xc(%ebp)
406ba9:	75 10                	jne    0x406bbb
406bab:	68 00 80 00 00       	push   $0x8000
406bb0:	53                   	push   %ebx
406bb1:	56                   	push   %esi
406bb2:	57                   	push   %edi
406bb3:	ff 15 a8 a0 40 00    	call   *0x40a0a8
406bb9:	eb 36                	jmp    0x406bf1