40590b:	85 c0                	test   %eax,%eax
40590d:	0f 88 89 00 00 00    	js     0x40599c
405913:	83 c7 24             	add    $0x24,%edi
405916:	83 3f 00             	cmpl   $0x0,(%edi)
405919:	75 c1                	jne    0x4058dc
40591b:	8b 35 ac c5 40 00    	mov    0x40c5ac,%esi
405921:	85 f6                	test   %esi,%esi
405923:	74 0e                	je     0x405933
405925:	8b ce                	mov    %esi,%ecx
405927:	ff 15 20 f2 40 00    	call   *0x40f220
40592d:	ff d6                	call   *%esi
40592f:	85 c0                	test   %eax,%eax
405931:	78 69                	js     0x40599c
405933:	8b 3d f8 c0 40 00    	mov    0x40c0f8,%edi
405939:	33 c0                	xor    %eax,%eax
40593b:	8b 0d fc c0 40 00    	mov    0x40c0fc,%ecx
405941:	3b f9                	cmp    %ecx,%edi
405943:	73 4c                	jae    0x405991
405945:	8b 17                	mov    (%edi),%edx
405947:	89 55 fc             	mov    %edx,-0x4(%ebp)
40594a:	85 d2                	test   %edx,%edx
40594c:	74 38                	je     0x405986
40594e:	8b 72 1c             	mov    0x1c(%edx),%esi
405951:	8b ce                	mov    %esi,%ecx
405953:	6a 00                	push   $0x0
405955:	ff 15 20 f2 40 00    	call   *0x40f220
40595b:	ff d6                	call   *%esi
40595d:	8b 75 fc             	mov    -0x4(%ebp),%esi
405960:	8b d0                	mov    %eax,%edx
405962:	8b 0e                	mov    (%esi),%ecx
405964:	e8 ca f9 ff ff       	call   0x405333
405969:	85 c0                	test   %eax,%eax
40596b:	78 2f                	js     0x40599c
40596d:	8b 76 04             	mov    0x4(%esi),%esi
405970:	8b ce                	mov    %esi,%ecx
405972:	6a 00                	push   $0x0
405974:	ff 15 20 f2 40 00    	call   *0x40f220
40597a:	ff d6                	call   *%esi
40597c:	85 c0                	test   %eax,%eax
40597e:	78 1c                	js     0x40599c
405980:	8b 0d fc c0 40 00    	mov    0x40c0fc,%ecx
405986:	83 c7 04             	add    $0x4,%edi
405989:	3b f9                	cmp    %ecx,%edi
40598b:	72 b8                	jb     0x405945
40598d:	85 c0                	test   %eax,%eax
40598f:	78 0b                	js     0x40599c
405991:	8b 0d f4 c0 40 00    	mov    0x40c0f4,%ecx
405997:	e8 82 fe ff ff       	call   0x40581e
40599c:	5f                   	pop    %edi
40599d:	5e                   	pop    %esi
40599e:	8b e5                	mov    %ebp,%esp
4059a0:	5d                   	pop    %ebp
4059a1:	8b e3                	mov    %ebx,%esp
4059a3:	5b                   	pop    %ebx
4059a4:	c2 08 00             	ret    $0x8
4059a7:	cc                   	int3
4059a8:	cc                   	int3
4059a9:	cc                   	int3
4059aa:	cc                   	int3
4059ab:	cc                   	int3
4059ac:	cc                   	int3
4059ad:	cc                   	int3
4059ae:	cc                   	int3
4059af:	cc                   	int3
4059b0:	c2 04 00             	ret    $0x4
4059b3:	6a 0c                	push   $0xc
4059b5:	68 90 aa 40 00       	push   $0x40aa90
4059ba:	e8 29 48 00 00       	call   0x40a1e8
4059bf:	33 f6                	xor    %esi,%esi
4059c1:	89 75 fc             	mov    %esi,-0x4(%ebp)
4059c4:	51                   	push   %ecx
4059c5:	ff 15 4c f0 40 00    	call   *0x40f04c
4059cb:	eb 1b                	jmp    0x4059e8
4059cd:	8b 45 ec             	mov    -0x14(%ebp),%eax
4059d0:	8b 00                	mov    (%eax),%eax
4059d2:	33 c9                	xor    %ecx,%ecx
4059d4:	81 38 17 00 00 c0    	cmpl   $0xc0000017,(%eax)
4059da:	0f 94 c1             	sete   %cl
4059dd:	8b c1                	mov    %ecx,%eax
4059df:	c3                   	ret
4059e0:	8b 65 e8             	mov    -0x18(%ebp),%esp
4059e3:	be 0e 00 07 80       	mov    $0x8007000e,%esi
4059e8:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4059eb:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4059f2:	8b c6                	mov    %esi,%eax
4059f4:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4059f7:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4059fe:	59                   	pop    %ecx
4059ff:	5f                   	pop    %edi
405a00:	5e                   	pop    %esi
405a01:	5b                   	pop    %ebx
405a02:	c9                   	leave
405a03:	c3                   	ret
405a04:	8b ff                	mov    %edi,%edi
405a06:	53                   	push   %ebx
405a07:	8b d9                	mov    %ecx,%ebx
405a09:	57                   	push   %edi
405a0a:	85 db                	test   %ebx,%ebx
405a0c:	74 30                	je     0x405a3e
405a0e:	8b 7b 08             	mov    0x8(%ebx),%edi
405a11:	85 ff                	test   %edi,%edi
405a13:	74 22                	je     0x405a37
405a15:	56                   	push   %esi
405a16:	8b 37                	mov    (%edi),%esi
405a18:	8b ce                	mov    %esi,%ecx
405a1a:	ff 77 04             	push   0x4(%edi)
405a1d:	ff 15 20 f2 40 00    	call   *0x40f220
405a23:	ff d6                	call   *%esi
405a25:	8b 77 08             	mov    0x8(%edi),%esi
405a28:	57                   	push   %edi
405a29:	ff 15 04 f2 40 00    	call   *0x40f204
405a2f:	8b fe                	mov    %esi,%edi
405a31:	59                   	pop    %ecx
405a32:	85 f6                	test   %esi,%esi
405a34:	75 e0                	jne    0x405a16
405a36:	5e                   	pop    %esi
405a37:	83 63 08 00          	andl   $0x0,0x8(%ebx)
405a3b:	5f                   	pop    %edi
405a3c:	5b                   	pop    %ebx
405a3d:	c3                   	ret
405a3e:	b9 05 00 00 c0       	mov    $0xc0000005,%ecx
405a43:	e8 cb 08 00 00       	call   0x406313
405a48:	cc                   	int3
405a49:	8b ff                	mov    %edi,%edi
405a4b:	53                   	push   %ebx
405a4c:	57                   	push   %edi
405a4d:	8b f9                	mov    %ecx,%edi
405a4f:	8d 5f 04             	lea    0x4(%edi),%ebx
405a52:	83 3b 00             	cmpl   $0x0,(%ebx)
405a55:	74 37                	je     0x405a8e
405a57:	83 7f 0c 00          	cmpl   $0x0,0xc(%edi)
405a5b:	74 0b                	je     0x405a68
405a5d:	8b cb                	mov    %ebx,%ecx
405a5f:	e8 a0 ff ff ff       	call   0x405a04
405a64:	83 67 0c 00          	andl   $0x0,0xc(%edi)
405a68:	8b 4f 28             	mov    0x28(%edi),%ecx
405a6b:	85 c9                	test   %ecx,%ecx
405a6d:	74 12                	je     0x405a81
405a6f:	8b 01                	mov    (%ecx),%eax
405a71:	56                   	push   %esi
405a72:	51                   	push   %ecx
405a73:	8b 70 08             	mov    0x8(%eax),%esi
405a76:	8b ce                	mov    %esi,%ecx
405a78:	ff 15 20 f2 40 00    	call   *0x40f220
405a7e:	ff d6                	call   *%esi
405a80:	5e                   	pop    %esi
405a81:	8d 47 10             	lea    0x10(%edi),%eax
405a84:	50                   	push   %eax
405a85:	ff 15 48 f0 40 00    	call   *0x40f048
405a8b:	83 23 00             	andl   $0x0,(%ebx)
405a8e:	5f                   	pop    %edi
405a8f:	5b                   	pop    %ebx
405a90:	c3                   	ret
405a91:	cc                   	int3
405a92:	cc                   	int3
405a93:	cc                   	int3
405a94:	cc                   	int3
405a95:	cc                   	int3
405a96:	cc                   	int3
405a97:	cc                   	int3
405a98:	cc                   	int3
405a99:	cc                   	int3
405a9a:	cc                   	int3
405a9b:	cc                   	int3
405a9c:	cc                   	int3
405a9d:	cc                   	int3
405a9e:	cc                   	int3
405a9f:	cc                   	int3
405aa0:	8b 41 08             	mov    0x8(%ecx),%eax
405aa3:	c3                   	ret
405aa4:	cc                   	int3
405aa5:	cc                   	int3
405aa6:	cc                   	int3
405aa7:	cc                   	int3
405aa8:	cc                   	int3
405aa9:	cc                   	int3
405aaa:	cc                   	int3
405aab:	cc                   	int3
405aac:	cc                   	int3
405aad:	cc                   	int3
405aae:	cc                   	int3
405aaf:	cc                   	int3
405ab0:	8b ff                	mov    %edi,%edi
405ab2:	55                   	push   %ebp
405ab3:	8b ec                	mov    %esp,%ebp
405ab5:	53                   	push   %ebx
405ab6:	8b 5d 08             	mov    0x8(%ebp),%ebx
405ab9:	85 db                	test   %ebx,%ebx
405abb:	75 07                	jne    0x405ac4
405abd:	b8 03 40 00 80       	mov    $0x80004003,%eax
405ac2:	eb 3f                	jmp    0x405b03
405ac4:	56                   	push   %esi
405ac5:	57                   	push   %edi
405ac6:	33 ff                	xor    %edi,%edi
405ac8:	8d 71 28             	lea    0x28(%ecx),%esi
405acb:	39 3e                	cmp    %edi,(%esi)
405acd:	75 1a                	jne    0x405ae9
405acf:	56                   	push   %esi
405ad0:	68 e4 24 40 00       	push   $0x4024e4
405ad5:	6a 01                	push   $0x1
405ad7:	57                   	push   %edi
405ad8:	68 d0 23 40 00       	push   $0x4023d0
405add:	ff 15 24 f1 40 00    	call   *0x40f124
405ae3:	8b f8                	mov    %eax,%edi
405ae5:	85 ff                	test   %edi,%edi
405ae7:	78 16                	js     0x405aff
405ae9:	8b 0e                	mov    (%esi),%ecx
405aeb:	89 0b                	mov    %ecx,(%ebx)
405aed:	8b 0e                	mov    (%esi),%ecx
405aef:	51                   	push   %ecx
405af0:	8b 11                	mov    (%ecx),%edx
405af2:	8b 72 04             	mov    0x4(%edx),%esi
405af5:	8b ce                	mov    %esi,%ecx
405af7:	ff 15 20 f2 40 00    	call   *0x40f220
405afd:	ff d6                	call   *%esi
405aff:	8b c7                	mov    %edi,%eax
405b01:	5f                   	pop    %edi
405b02:	5e                   	pop    %esi
405b03:	5b                   	pop    %ebx
405b04:	5d                   	pop    %ebp
405b05:	c2 04 00             	ret    $0x4
405b08:	cc                   	int3
405b09:	cc                   	int3
405b0a:	cc                   	int3
405b0b:	cc                   	int3
405b0c:	cc                   	int3
405b0d:	cc                   	int3
405b0e:	cc                   	int3
405b0f:	cc                   	int3
405b10:	8b ff                	mov    %edi,%edi
405b12:	55                   	push   %ebp
405b13:	8b ec                	mov    %esp,%ebp
405b15:	8b 45 08             	mov    0x8(%ebp),%eax
405b18:	56                   	push   %esi
405b19:	68 00 25 40 00       	push   $0x402500
405b1e:	68 f4 24 40 00       	push   $0x4024f4
405b23:	8b 08                	mov    (%eax),%ecx
405b25:	50                   	push   %eax
405b26:	8b 71 0c             	mov    0xc(%ecx),%esi
405b29:	8b ce                	mov    %esi,%ecx
405b2b:	ff 15 20 f2 40 00    	call   *0x40f220
405b31:	ff d6                	call   *%esi
405b33:	5e                   	pop    %esi
405b34:	5d                   	pop    %ebp
405b35:	c2 04 00             	ret    $0x4
405b38:	cc                   	int3
405b39:	cc                   	int3
405b3a:	cc                   	int3
405b3b:	cc                   	int3
405b3c:	cc                   	int3
405b3d:	cc                   	int3
405b3e:	cc                   	int3
405b3f:	cc                   	int3
405b40:	b8 05 40 00 80       	mov    $0x80004005,%eax
405b45:	c2 10 00             	ret    $0x10
405b48:	8b ff                	mov    %edi,%edi
405b4a:	55                   	push   %ebp
405b4b:	8b ec                	mov    %esp,%ebp
405b4d:	81 ec 50 0a 00 00    	sub    $0xa50,%esp
405b53:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
405b58:	33 c5                	xor    %ebp,%eax
405b5a:	89 45 fc             	mov    %eax,-0x4(%ebp)
405b5d:	53                   	push   %ebx
405b5e:	33 c0                	xor    %eax,%eax
405b60:	c7 85 b0 f5 ff ff 50 	movl   $0x401650,-0xa50(%ebp)
405b67:	16 40 00
405b6a:	56                   	push   %esi
405b6b:	8b 75 0c             	mov    0xc(%ebp),%esi
405b6e:	8b d9                	mov    %ecx,%ebx
405b70:	89 85 b4 f5 ff ff    	mov    %eax,-0xa4c(%ebp)
405b76:	89 85 b8 f5 ff ff    	mov    %eax,-0xa48(%ebp)
405b7c:	89 85 bc f5 ff ff    	mov    %eax,-0xa44(%ebp)
405b82:	57                   	push   %edi
405b83:	8b fa                	mov    %edx,%edi
405b85:	85 f6                	test   %esi,%esi
405b87:	74 1b                	je     0x405ba4
405b89:	eb 13                	jmp    0x405b9e
405b8b:	ff 76 04             	push   0x4(%esi)
405b8e:	50                   	push   %eax
405b8f:	8d 85 b0 f5 ff ff    	lea    -0xa50(%ebp),%eax
405b95:	50                   	push   %eax
405b96:	e8 c5 06 00 00       	call   0x406260
405b9b:	8d 76 08             	lea    0x8(%esi),%esi
405b9e:	8b 06                	mov    (%esi),%eax
405ba0:	85 c0                	test   %eax,%eax
405ba2:	75 e7                	jne    0x405b8b
405ba4:	8b 03                	mov    (%ebx),%eax
405ba6:	8d 8d b0 f5 ff ff    	lea    -0xa50(%ebp),%ecx
405bac:	51                   	push   %ecx
405bad:	8b 70 14             	mov    0x14(%eax),%esi
405bb0:	8b ce                	mov    %esi,%ecx
405bb2:	ff 15 20 f2 40 00    	call   *0x40f220
405bb8:	8b cb                	mov    %ebx,%ecx
405bba:	ff d6                	call   *%esi
405bbc:	8b f0                	mov    %eax,%esi
405bbe:	85 f6                	test   %esi,%esi
405bc0:	0f 88 34 01 00 00    	js     0x405cfa
405bc6:	8b 35 b4 c0 40 00    	mov    0x40c0b4,%esi
405bcc:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
405bd2:	68 04 01 00 00       	push   $0x104
405bd7:	50                   	push   %eax
405bd8:	33 db                	xor    %ebx,%ebx
405bda:	56                   	push   %esi
405bdb:	89 9d c8 f5 ff ff    	mov    %ebx,-0xa38(%ebp)
405be1:	ff 15 ac f0 40 00    	call   *0x40f0ac
405be7:	85 c0                	test   %eax,%eax
405be9:	75 0c                	jne    0x405bf7
405beb:	e8 06 07 00 00       	call   0x4062f6
405bf0:	8b f0                	mov    %eax,%esi
405bf2:	e9 f8 00 00 00       	jmp    0x405cef
405bf7:	3d 04 01 00 00       	cmp    $0x104,%eax
405bfc:	75 15                	jne    0x405c13
405bfe:	8d 8d c8 f5 ff ff    	lea    -0xa38(%ebp),%ecx
405c04:	e8 83 0a 00 00       	call   0x40668c
405c09:	be 7a 00 07 80       	mov    $0x8007007a,%esi
405c0e:	e9 e7 00 00 00       	jmp    0x405cfa
405c13:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
405c19:	ba 08 02 00 00       	mov    $0x208,%edx
405c1e:	50                   	push   %eax
405c1f:	8d 8d cc f5 ff ff    	lea    -0xa34(%ebp),%ecx
405c25:	e8 ac 03 00 00       	call   0x405fd6
405c2a:	85 f6                	test   %esi,%esi
405c2c:	74 13                	je     0x405c41
405c2e:	53                   	push   %ebx
405c2f:	ff 15 88 f0 40 00    	call   *0x40f088
405c35:	3b f0                	cmp    %eax,%esi
405c37:	74 08                	je     0x405c41
405c39:	8d 85 cc f5 ff ff    	lea    -0xa34(%ebp),%eax
405c3f:	eb 78                	jmp    0x405cb9
405c41:	6a 22                	push   $0x22
405c43:	5e                   	pop    %esi
405c44:	8d 85 cc f5 ff ff    	lea    -0xa34(%ebp),%eax
405c4a:	66 89 b5 dc f9 ff ff 	mov    %si,-0x624(%ebp)
405c51:	50                   	push   %eax
405c52:	8d 8d de f9 ff ff    	lea    -0x622(%ebp),%ecx
405c58:	e8 c7 03 00 00       	call   0x406024
405c5d:	84 c0                	test   %al,%al
405c5f:	75 15                	jne    0x405c76
405c61:	8d 8d c8 f5 ff ff    	lea    -0xa38(%ebp),%ecx
405c67:	e8 20 0a 00 00       	call   0x40668c
405c6c:	be 05 40 00 80       	mov    $0x80004005,%esi
405c71:	e9 84 00 00 00       	jmp    0x405cfa
405c76:	8d 8d dc f9 ff ff    	lea    -0x624(%ebp),%ecx
405c7c:	8d 51 02             	lea    0x2(%ecx),%edx
405c7f:	66 8b 01             	mov    (%ecx),%ax
405c82:	83 c1 02             	add    $0x2,%ecx
405c85:	66 3b c3             	cmp    %bx,%ax
405c88:	75 f5                	jne    0x405c7f
405c8a:	2b ca                	sub    %edx,%ecx
405c8c:	d1 f9                	sar    $1,%ecx