406947:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40694b:	74 04                	je     0x406951
40694d:	85 c0                	test   %eax,%eax
40694f:	78 19                	js     0x40696a
406951:	83 c7 0c             	add    $0xc,%edi
406954:	83 3f 00             	cmpl   $0x0,(%edi)
406957:	75 b5                	jne    0x40690e
406959:	b8 02 40 00 80       	mov    $0x80004002,%eax
40695e:	eb 0a                	jmp    0x40696a
406960:	8b 7f fc             	mov    -0x4(%edi),%edi
406963:	eb 8c                	jmp    0x4068f1
406965:	b8 57 00 07 80       	mov    $0x80070057,%eax
40696a:	5f                   	pop    %edi
40696b:	5e                   	pop    %esi
40696c:	5b                   	pop    %ebx
40696d:	c9                   	leave
40696e:	c2 08 00             	ret    $0x8
406971:	6a 10                	push   $0x10
406973:	b8 34 2c 41 00       	mov    $0x412c34,%eax
406978:	e8 4a bc 00 00       	call   0x4125c7
40697d:	8b d9                	mov    %ecx,%ebx
40697f:	89 5d e8             	mov    %ebx,-0x18(%ebp)
406982:	85 db                	test   %ebx,%ebx
406984:	75 07                	jne    0x40698d
406986:	b8 57 00 07 80       	mov    $0x80070057,%eax
40698b:	eb 5a                	jmp    0x4069e7
40698d:	33 ff                	xor    %edi,%edi
40698f:	6a 0c                	push   $0xc
406991:	89 7d fc             	mov    %edi,-0x4(%ebp)
406994:	e8 0f ab 00 00       	call   0x4114a8
406999:	59                   	pop    %ecx
40699a:	8b c8                	mov    %eax,%ecx
40699c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40699f:	eb 10                	jmp    0x4069b1
4069a1:	b8 a7 69 40 00       	mov    $0x4069a7,%eax
4069a6:	c3                   	ret
4069a7:	8b 5d e8             	mov    -0x18(%ebp),%ebx
4069aa:	33 ff                	xor    %edi,%edi
4069ac:	8b cf                	mov    %edi,%ecx
4069ae:	89 4d ec             	mov    %ecx,-0x14(%ebp)
4069b1:	85 c9                	test   %ecx,%ecx
4069b3:	75 07                	jne    0x4069bc
4069b5:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
4069ba:	eb 29                	jmp    0x4069e5
4069bc:	8b 45 08             	mov    0x8(%ebp),%eax
4069bf:	8d 73 0c             	lea    0xc(%ebx),%esi
4069c2:	56                   	push   %esi
4069c3:	c7 01 40 6e 40 00    	movl   $0x406e40,(%ecx)
4069c9:	89 41 04             	mov    %eax,0x4(%ecx)
4069cc:	ff 15 64 61 41 00    	call   *0x416164
4069d2:	8b 45 ec             	mov    -0x14(%ebp),%eax
4069d5:	8b 4b 08             	mov    0x8(%ebx),%ecx
4069d8:	56                   	push   %esi
4069d9:	89 48 08             	mov    %ecx,0x8(%eax)
4069dc:	89 43 08             	mov    %eax,0x8(%ebx)
4069df:	ff 15 5c 61 41 00    	call   *0x41615c
4069e5:	8b c7                	mov    %edi,%eax
4069e7:	e8 40 bb 00 00       	call   0x41252c
4069ec:	c2 04 00             	ret    $0x4
4069ef:	8b ff                	mov    %edi,%edi
4069f1:	55                   	push   %ebp
4069f2:	8b ec                	mov    %esp,%ebp
4069f4:	6a ff                	push   $0xffffffff
4069f6:	68 4f 2c 41 00       	push   $0x412c4f
4069fb:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
406a01:	50                   	push   %eax
406a02:	56                   	push   %esi
406a03:	a1 f4 51 41 00       	mov    0x4151f4,%eax
406a08:	33 c5                	xor    %ebp,%eax
406a0a:	50                   	push   %eax
406a0b:	8d 45 f4             	lea    -0xc(%ebp),%eax
406a0e:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
406a14:	8b 09                	mov    (%ecx),%ecx
406a16:	85 c9                	test   %ecx,%ecx
406a18:	74 10                	je     0x406a2a
406a1a:	8b 01                	mov    (%ecx),%eax
406a1c:	51                   	push   %ecx
406a1d:	8b 70 08             	mov    0x8(%eax),%esi
406a20:	8b ce                	mov    %esi,%ecx
406a22:	ff 15 28 63 41 00    	call   *0x416328
406a28:	ff d6                	call   *%esi
406a2a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406a2d:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406a34:	59                   	pop    %ecx
406a35:	5e                   	pop    %esi
406a36:	c9                   	leave
406a37:	c3                   	ret
406a38:	cc                   	int3
406a39:	cc                   	int3
406a3a:	cc                   	int3
406a3b:	cc                   	int3
406a3c:	cc                   	int3
406a3d:	cc                   	int3
406a3e:	cc                   	int3
406a3f:	cc                   	int3
406a40:	33 c0                	xor    %eax,%eax
406a42:	c3                   	ret
406a43:	cc                   	int3
406a44:	cc                   	int3
406a45:	cc                   	int3
406a46:	cc                   	int3
406a47:	cc                   	int3
406a48:	cc                   	int3
406a49:	cc                   	int3
406a4a:	cc                   	int3
406a4b:	cc                   	int3
406a4c:	cc                   	int3
406a4d:	cc                   	int3
406a4e:	cc                   	int3
406a4f:	cc                   	int3
406a50:	c2 04 00             	ret    $0x4
406a53:	c7 01 54 19 40 00    	movl   $0x401954,(%ecx)
406a59:	83 c1 08             	add    $0x8,%ecx
406a5c:	80 79 18 00          	cmpb   $0x0,0x18(%ecx)
406a60:	74 0b                	je     0x406a6d
406a62:	51                   	push   %ecx
406a63:	c6 41 18 00          	movb   $0x0,0x18(%ecx)
406a67:	ff 15 c8 60 41 00    	call   *0x4160c8
406a6d:	c3                   	ret
406a6e:	cc                   	int3
406a6f:	cc                   	int3
406a70:	8b ff                	mov    %edi,%edi
406a72:	55                   	push   %ebp
406a73:	8b ec                	mov    %esp,%ebp
406a75:	8b 55 14             	mov    0x14(%ebp),%edx
406a78:	b8 03 40 00 80       	mov    $0x80004003,%eax
406a7d:	85 d2                	test   %edx,%edx
406a7f:	74 33                	je     0x406ab4
406a81:	83 22 00             	andl   $0x0,(%edx)
406a84:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406a88:	8b 4d 10             	mov    0x10(%ebp),%ecx
406a8b:	74 10                	je     0x406a9d
406a8d:	e8 65 e2 ff ff       	call   0x404cf7
406a92:	85 c0                	test   %eax,%eax
406a94:	75 07                	jne    0x406a9d
406a96:	b8 10 01 04 80       	mov    $0x80040110,%eax
406a9b:	eb 17                	jmp    0x406ab4
406a9d:	8b 45 08             	mov    0x8(%ebp),%eax
406aa0:	56                   	push   %esi
406aa1:	52                   	push   %edx
406aa2:	51                   	push   %ecx
406aa3:	8b 70 24             	mov    0x24(%eax),%esi
406aa6:	8b ce                	mov    %esi,%ecx
406aa8:	ff 75 0c             	push   0xc(%ebp)
406aab:	ff 15 28 63 41 00    	call   *0x416328
406ab1:	ff d6                	call   *%esi
406ab3:	5e                   	pop    %esi
406ab4:	5d                   	pop    %ebp
406ab5:	c2 10 00             	ret    $0x10
406ab8:	cc                   	int3
406ab9:	cc                   	int3
406aba:	cc                   	int3
406abb:	cc                   	int3
406abc:	cc                   	int3
406abd:	cc                   	int3
406abe:	cc                   	int3
406abf:	cc                   	int3
406ac0:	8b ff                	mov    %edi,%edi
406ac2:	55                   	push   %ebp
406ac3:	8b ec                	mov    %esp,%ebp
406ac5:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406ac9:	56                   	push   %esi
406aca:	57                   	push   %edi
406acb:	8b 3d a4 55 41 00    	mov    0x4155a4,%edi
406ad1:	8b 07                	mov    (%edi),%eax
406ad3:	74 05                	je     0x406ada
406ad5:	8b 70 04             	mov    0x4(%eax),%esi
406ad8:	eb 03                	jmp    0x406add
406ada:	8b 70 08             	mov    0x8(%eax),%esi
406add:	8b ce                	mov    %esi,%ecx
406adf:	ff 15 28 63 41 00    	call   *0x416328
406ae5:	8b cf                	mov    %edi,%ecx
406ae7:	ff d6                	call   *%esi
406ae9:	5f                   	pop    %edi
406aea:	33 c0                	xor    %eax,%eax
406aec:	5e                   	pop    %esi
406aed:	5d                   	pop    %ebp
406aee:	c2 08 00             	ret    $0x8
406af1:	cc                   	int3
406af2:	cc                   	int3
406af3:	cc                   	int3
406af4:	cc                   	int3
406af5:	cc                   	int3
406af6:	cc                   	int3
406af7:	cc                   	int3
406af8:	cc                   	int3
406af9:	cc                   	int3
406afa:	cc                   	int3
406afb:	cc                   	int3
406afc:	cc                   	int3
406afd:	cc                   	int3
406afe:	cc                   	int3
406aff:	cc                   	int3
406b00:	83 21 00             	andl   $0x0,(%ecx)
406b03:	8b c1                	mov    %ecx,%eax
406b05:	83 61 04 00          	andl   $0x0,0x4(%ecx)
406b09:	83 49 08 ff          	orl    $0xffffffff,0x8(%ecx)
406b0d:	c3                   	ret
406b0e:	8b ff                	mov    %edi,%edi
406b10:	55                   	push   %ebp
406b11:	8b ec                	mov    %esp,%ebp
406b13:	56                   	push   %esi
406b14:	57                   	push   %edi
406b15:	8b 7d 0c             	mov    0xc(%ebp),%edi
406b18:	8b f1                	mov    %ecx,%esi
406b1a:	85 ff                	test   %edi,%edi
406b1c:	75 07                	jne    0x406b25
406b1e:	b8 03 40 00 80       	mov    $0x80004003,%eax
406b23:	eb 31                	jmp    0x406b56
406b25:	8b 4e 0c             	mov    0xc(%esi),%ecx
406b28:	33 c0                	xor    %eax,%eax
406b2a:	85 c9                	test   %ecx,%ecx
406b2c:	75 0d                	jne    0x406b3b
406b2e:	ff 75 08             	push   0x8(%ebp)
406b31:	8b ce                	mov    %esi,%ecx
406b33:	e8 67 03 00 00       	call   0x406e9f
406b38:	8b 4e 0c             	mov    0xc(%esi),%ecx
406b3b:	89 0f                	mov    %ecx,(%edi)
406b3d:	8b 4e 0c             	mov    0xc(%esi),%ecx
406b40:	85 c9                	test   %ecx,%ecx
406b42:	74 12                	je     0x406b56
406b44:	8b 01                	mov    (%ecx),%eax
406b46:	51                   	push   %ecx
406b47:	8b 70 04             	mov    0x4(%eax),%esi
406b4a:	8b ce                	mov    %esi,%ecx
406b4c:	ff 15 28 63 41 00    	call   *0x416328
406b52:	ff d6                	call   *%esi
406b54:	33 c0                	xor    %eax,%eax
406b56:	5f                   	pop    %edi
406b57:	5e                   	pop    %esi
406b58:	5d                   	pop    %ebp
406b59:	c2 08 00             	ret    $0x8
406b5c:	8b ff                	mov    %edi,%edi
406b5e:	55                   	push   %ebp
406b5f:	8b ec                	mov    %esp,%ebp
406b61:	83 ec 0c             	sub    $0xc,%esp
406b64:	33 c0                	xor    %eax,%eax
406b66:	56                   	push   %esi
406b67:	8b f1                	mov    %ecx,%esi
406b69:	57                   	push   %edi
406b6a:	8b 7e 0c             	mov    0xc(%esi),%edi
406b6d:	85 ff                	test   %edi,%edi
406b6f:	74 07                	je     0x406b78
406b71:	8b cf                	mov    %edi,%ecx
406b73:	39 46 14             	cmp    %eax,0x14(%esi)
406b76:	75 0f                	jne    0x406b87
406b78:	ff 75 14             	push   0x14(%ebp)
406b7b:	8b ce                	mov    %esi,%ecx
406b7d:	e8 1d 03 00 00       	call   0x406e9f
406b82:	8b 7e 0c             	mov    0xc(%esi),%edi
406b85:	8b cf                	mov    %edi,%ecx
406b87:	85 c9                	test   %ecx,%ecx
406b89:	74 72                	je     0x406bfd
406b8b:	8b 46 14             	mov    0x14(%esi),%eax
406b8e:	89 45 fc             	mov    %eax,-0x4(%ebp)
406b91:	53                   	push   %ebx
406b92:	85 c0                	test   %eax,%eax
406b94:	74 4e                	je     0x406be4
406b96:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
406b9a:	75 48                	jne    0x406be4
406b9c:	8b 45 0c             	mov    0xc(%ebp),%eax
406b9f:	8b 00                	mov    (%eax),%eax
406ba1:	8b c8                	mov    %eax,%ecx
406ba3:	89 45 f8             	mov    %eax,-0x8(%ebp)
406ba6:	e8 0a e0 ff ff       	call   0x404bb5
406bab:	8b 76 18             	mov    0x18(%esi),%esi
406bae:	8b c8                	mov    %eax,%ecx
406bb0:	83 ee 01             	sub    $0x1,%esi
406bb3:	89 4d f4             	mov    %ecx,-0xc(%ebp)
406bb6:	78 2c                	js     0x406be4
406bb8:	6b de 0c             	imul   $0xc,%esi,%ebx
406bbb:	03 5d fc             	add    -0x4(%ebp),%ebx
406bbe:	8b 43 04             	mov    0x4(%ebx),%eax
406bc1:	3b c8                	cmp    %eax,%ecx
406bc3:	75 17                	jne    0x406bdc
406bc5:	03 c0                	add    %eax,%eax
406bc7:	50                   	push   %eax
406bc8:	ff 75 f8             	push   -0x8(%ebp)
406bcb:	ff 33                	push   (%ebx)
406bcd:	e8 19 bf 00 00       	call   0x412aeb
406bd2:	83 c4 0c             	add    $0xc,%esp
406bd5:	85 c0                	test   %eax,%eax
406bd7:	74 2a                	je     0x406c03
406bd9:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406bdc:	83 eb 0c             	sub    $0xc,%ebx
406bdf:	83 ee 01             	sub    $0x1,%esi
406be2:	79 da                	jns    0x406bbe
406be4:	ff 75 18             	push   0x18(%ebp)
406be7:	8b 37                	mov    (%edi),%esi
406be9:	ff 75 10             	push   0x10(%ebp)
406bec:	ff 75 0c             	push   0xc(%ebp)
406bef:	8b 4e 28             	mov    0x28(%esi),%ecx
406bf2:	57                   	push   %edi
406bf3:	ff 15 28 63 41 00    	call   *0x416328
406bf9:	ff 56 28             	call   *0x28(%esi)
406bfc:	5b                   	pop    %ebx
406bfd:	5f                   	pop    %edi
406bfe:	5e                   	pop    %esi
406bff:	c9                   	leave
406c00:	c2 14 00             	ret    $0x14
406c03:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406c06:	6b c6 0c             	imul   $0xc,%esi,%eax
406c09:	8b 4c 08 08          	mov    0x8(%eax,%ecx,1),%ecx
406c0d:	8b 45 18             	mov    0x18(%ebp),%eax
406c10:	89 08                	mov    %ecx,(%eax)
406c12:	33 c0                	xor    %eax,%eax
406c14:	eb e6                	jmp    0x406bfc
406c16:	8b ff                	mov    %edi,%edi
406c18:	55                   	push   %ebp
406c19:	8b ec                	mov    %esp,%ebp
406c1b:	56                   	push   %esi
406c1c:	8b f1                	mov    %ecx,%esi
406c1e:	33 d2                	xor    %edx,%edx
406c20:	8b 46 0c             	mov    0xc(%esi),%eax
406c23:	85 c0                	test   %eax,%eax
406c25:	74 05                	je     0x406c2c
406c27:	39 56 14             	cmp    %edx,0x14(%esi)
406c2a:	75 0d                	jne    0x406c39
406c2c:	ff 75 14             	push   0x14(%ebp)
406c2f:	e8 6b 02 00 00       	call   0x406e9f
406c34:	8b d0                	mov    %eax,%edx
406c36:	8b 46 0c             	mov    0xc(%esi),%eax
406c39:	85 c0                	test   %eax,%eax
406c3b:	74 26                	je     0x406c63
406c3d:	ff 75 28             	push   0x28(%ebp)
406c40:	8b 30                	mov    (%eax),%esi
406c42:	ff 75 24             	push   0x24(%ebp)
406c45:	ff 75 20             	push   0x20(%ebp)
406c48:	8b 4e 2c             	mov    0x2c(%esi),%ecx
406c4b:	ff 75 1c             	push   0x1c(%ebp)
406c4e:	ff 75 18             	push   0x18(%ebp)
406c51:	ff 75 0c             	push   0xc(%ebp)
406c54:	ff 75 08             	push   0x8(%ebp)
406c57:	50                   	push   %eax
406c58:	ff 15 28 63 41 00    	call   *0x416328
406c5e:	ff 56 2c             	call   *0x2c(%esi)
406c61:	8b d0                	mov    %eax,%edx
406c63:	8b c2                	mov    %edx,%eax
406c65:	5e                   	pop    %esi
406c66:	5d                   	pop    %ebp
406c67:	c2 24 00             	ret    $0x24
406c6a:	6a 24                	push   $0x24
406c6c:	b8 7d 2c 41 00       	mov    $0x412c7d,%eax
406c71:	e8 51 b9 00 00       	call   0x4125c7
406c76:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
406c79:	8b 5d 08             	mov    0x8(%ebp),%ebx
406c7c:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406c7f:	51                   	push   %ecx
406c80:	53                   	push   %ebx
406c81:	8b 03                	mov    (%ebx),%eax