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)
4069d7:	01 19                	add    %ebx,(%ecx)
4069d9:	eb 7a                	jmp    0x406a55
4069db:	3b fa                	cmp    %edx,%edi
4069dd:	72 7b                	jb     0x406a5a
4069df:	8b 03                	mov    (%ebx),%eax
4069e1:	90                   	nop
4069e2:	a8 c0                	test   $0xc0,%al
4069e4:	74 19                	je     0x4069ff
4069e6:	ff 75 18             	push   0x18(%ebp)
4069e9:	51                   	push   %ecx
4069ea:	e8 cb 44 00 00       	call   0x40aeba
4069ef:	59                   	pop    %ecx
4069f0:	59                   	pop    %ecx
4069f1:	85 c0                	test   %eax,%eax
4069f3:	0f 85 a9 00 00 00    	jne    0x406aa2
4069f9:	8b 4d 14             	mov    0x14(%ebp),%ecx
4069fc:	8b 55 fc             	mov    -0x4(%ebp),%edx
4069ff:	8b c7                	mov    %edi,%eax
406a01:	85 d2                	test   %edx,%edx
406a03:	74 0e                	je     0x406a13
406a05:	33 d2                	xor    %edx,%edx
406a07:	f7 75 fc             	divl   -0x4(%ebp)
406a0a:	8b c7                	mov    %edi,%eax
406a0c:	2b c2                	sub    %edx,%eax
406a0e:	89 45 f8             	mov    %eax,-0x8(%ebp)
406a11:	eb 03                	jmp    0x406a16
406a13:	89 7d f8             	mov    %edi,-0x8(%ebp)
406a16:	83 f8 fe             	cmp    $0xfffffffe,%eax
406a19:	72 06                	jb     0x406a21
406a1b:	6a fe                	push   $0xfffffffe
406a1d:	58                   	pop    %eax
406a1e:	89 45 f8             	mov    %eax,-0x8(%ebp)
406a21:	ff 75 18             	push   0x18(%ebp)
406a24:	50                   	push   %eax
406a25:	ff 75 08             	push   0x8(%ebp)
406a28:	51                   	push   %ecx
406a29:	e8 95 47 00 00       	call   0x40b1c3
406a2e:	59                   	pop    %ecx
406a2f:	50                   	push   %eax
406a30:	e8 8e 4f 00 00       	call   0x40b9c3
406a35:	8b d8                	mov    %eax,%ebx
406a37:	83 c4 10             	add    $0x10,%esp
406a3a:	83 fb ff             	cmp    $0xffffffff,%ebx
406a3d:	74 71                	je     0x406ab0
406a3f:	8b 45 f8             	mov    -0x8(%ebp),%eax
406a42:	3b d8                	cmp    %eax,%ebx
406a44:	76 06                	jbe    0x406a4c
406a46:	8b d8                	mov    %eax,%ebx
406a48:	2b fb                	sub    %ebx,%edi
406a4a:	eb 06                	jmp    0x406a52
406a4c:	2b fb                	sub    %ebx,%edi
406a4e:	3b d8                	cmp    %eax,%ebx
406a50:	72 5e                	jb     0x406ab0
406a52:	8b 4d 14             	mov    0x14(%ebp),%ecx
406a55:	8b 55 fc             	mov    -0x4(%ebp),%edx
406a58:	eb 2f                	jmp    0x406a89
406a5a:	8b 45 08             	mov    0x8(%ebp),%eax
406a5d:	ff 75 18             	push   0x18(%ebp)
406a60:	51                   	push   %ecx
406a61:	0f be 00             	movsbl (%eax),%eax
406a64:	50                   	push   %eax
406a65:	e8 d3 54 00 00       	call   0x40bf3d
406a6a:	83 c4 0c             	add    $0xc,%esp
406a6d:	83 f8 ff             	cmp    $0xffffffff,%eax
406a70:	74 30                	je     0x406aa2
406a72:	8b 4d 14             	mov    0x14(%ebp),%ecx
406a75:	4f                   	dec    %edi
406a76:	33 db                	xor    %ebx,%ebx
406a78:	8b 51 18             	mov    0x18(%ecx),%edx
406a7b:	89 55 fc             	mov    %edx,-0x4(%ebp)
406a7e:	85 d2                	test   %edx,%edx
406a80:	7f 06                	jg     0x406a88
406a82:	33 d2                	xor    %edx,%edx
406a84:	42                   	inc    %edx
406a85:	89 55 fc             	mov    %edx,-0x4(%ebp)
406a88:	43                   	inc    %ebx
406a89:	01 5d 08             	add    %ebx,0x8(%ebp)
406a8c:	85 ff                	test   %edi,%edi
406a8e:	0f 85 02 ff ff ff    	jne    0x406996
406a94:	8b 45 10             	mov    0x10(%ebp),%eax
406a97:	e9 b8 fe ff ff       	jmp    0x406954
406a9c:	6a 10                	push   $0x10
406a9e:	58                   	pop    %eax
406a9f:	f0 09 03             	lock or %eax,(%ebx)
406aa2:	2b f7                	sub    %edi,%esi
406aa4:	33 d2                	xor    %edx,%edx
406aa6:	8b c6                	mov    %esi,%eax
406aa8:	f7 75 0c             	divl   0xc(%ebp)
406aab:	e9 a4 fe ff ff       	jmp    0x406954
406ab0:	8b 45 f4             	mov    -0xc(%ebp),%eax
406ab3:	6a 10                	push   $0x10
406ab5:	59                   	pop    %ecx
406ab6:	f0 09 08             	lock or %ecx,(%eax)
406ab9:	eb e7                	jmp    0x406aa2
406abb:	8b ff                	mov    %edi,%edi
406abd:	55                   	push   %ebp
406abe:	8b ec                	mov    %esp,%ebp
406ac0:	83 ec 28             	sub    $0x28,%esp
406ac3:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406ac6:	56                   	push   %esi
406ac7:	6a 00                	push   $0x0
406ac9:	e8 9c fc ff ff       	call   0x40676a
406ace:	8d 45 d8             	lea    -0x28(%ebp),%eax
406ad1:	50                   	push   %eax
406ad2:	ff 75 14             	push   0x14(%ebp)
406ad5:	ff 75 10             	push   0x10(%ebp)
406ad8:	ff 75 0c             	push   0xc(%ebp)
406adb:	ff 75 08             	push   0x8(%ebp)
406ade:	e8 ba fd ff ff       	call   0x40689d
406ae3:	83 c4 14             	add    $0x14,%esp
406ae6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406ae9:	8b f0                	mov    %eax,%esi
406aeb:	e8 c2 fc ff ff       	call   0x4067b2
406af0:	8b c6                	mov    %esi,%eax
406af2:	5e                   	pop    %esi
406af3:	c9                   	leave
406af4:	c3                   	ret
406af5:	6a 10                	push   $0x10
406af7:	68 40 fe 41 00       	push   $0x41fe40
406afc:	e8 9f d3 ff ff       	call   0x403ea0
406b01:	8b 75 08             	mov    0x8(%ebp),%esi
406b04:	85 f6                	test   %esi,%esi
406b06:	75 14                	jne    0x406b1c
406b08:	e8 22 3c 00 00       	call   0x40a72f
406b0d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406b13:	e8 b1 09 00 00       	call   0x4074c9
406b18:	33 c0                	xor    %eax,%eax
406b1a:	eb 65                	jmp    0x406b81
406b1c:	8b 7d 0c             	mov    0xc(%ebp),%edi
406b1f:	85 ff                	test   %edi,%edi
406b21:	74 e5                	je     0x406b08
406b23:	33 db                	xor    %ebx,%ebx
406b25:	66 39 1f             	cmp    %bx,(%edi)
406b28:	74 de                	je     0x406b08
406b2a:	66 39 1e             	cmp    %bx,(%esi)
406b2d:	75 0d                	jne    0x406b3c
406b2f:	e8 fb 3b 00 00       	call   0x40a72f
406b34:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406b3a:	eb dc                	jmp    0x406b18
406b3c:	8d 45 e4             	lea    -0x1c(%ebp),%eax
406b3f:	50                   	push   %eax
406b40:	e8 53 5b 00 00       	call   0x40c698
406b45:	59                   	pop    %ecx
406b46:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
406b49:	75 0d                	jne    0x406b58
406b4b:	e8 df 3b 00 00       	call   0x40a72f
406b50:	c7 00 18 00 00 00    	movl   $0x18,(%eax)
406b56:	eb c0                	jmp    0x406b18
406b58:	89 5d e0             	mov    %ebx,-0x20(%ebp)
406b5b:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406b5e:	ff 75 e4             	push   -0x1c(%ebp)
406b61:	ff 75 10             	push   0x10(%ebp)
406b64:	57                   	push   %edi
406b65:	56                   	push   %esi
406b66:	e8 95 60 00 00       	call   0x40cc00
406b6b:	83 c4 10             	add    $0x10,%esp
406b6e:	8b f0                	mov    %eax,%esi
406b70:	89 75 e0             	mov    %esi,-0x20(%ebp)
406b73:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406b7a:	e8 15 00 00 00       	call   0x406b94
406b7f:	8b c6                	mov    %esi,%eax
406b81:	8b 4d f0             	mov    -0x10(%ebp),%ecx
406b84:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406b8b:	59                   	pop    %ecx
406b8c:	5f                   	pop    %edi
406b8d:	5e                   	pop    %esi
406b8e:	5b                   	pop    %ebx
406b8f:	c9                   	leave
406b90:	c3                   	ret
406b91:	8b 75 e0             	mov    -0x20(%ebp),%esi
406b94:	85 f6                	test   %esi,%esi
406b96:	75 09                	jne    0x406ba1
406b98:	ff 75 e4             	push   -0x1c(%ebp)
406b9b:	e8 61 5b 00 00       	call   0x40c701
406ba0:	59                   	pop    %ecx