4039d8:	8b 0f                	mov    (%edi),%ecx
4039da:	8b d0                	mov    %eax,%edx
4039dc:	e8 81 fe ff ff       	call   0x403862
4039e1:	8b f0                	mov    %eax,%esi
4039e3:	85 f6                	test   %esi,%esi
4039e5:	78 27                	js     0x403a0e
4039e7:	8b 0d d0 63 40 00    	mov    0x4063d0,%ecx
4039ed:	33 c0                	xor    %eax,%eax
4039ef:	83 f9 64             	cmp    $0x64,%ecx
4039f2:	0f 95 c0             	setne  %al
4039f5:	8d 04 c5 1c 00 00 00 	lea    0x1c(,%eax,8),%eax
4039fc:	03 f8                	add    %eax,%edi
4039fe:	83 3f 00             	cmpl   $0x0,(%edi)
403a01:	75 8a                	jne    0x40398d
403a03:	85 f6                	test   %esi,%esi
403a05:	78 07                	js     0x403a0e
403a07:	e8 dc 02 00 00       	call   0x403ce8
403a0c:	8b f0                	mov    %eax,%esi
403a0e:	8b c6                	mov    %esi,%eax
403a10:	5f                   	pop    %edi
403a11:	5e                   	pop    %esi
403a12:	8b e5                	mov    %ebp,%esp
403a14:	5d                   	pop    %ebp
403a15:	8b e3                	mov    %ebx,%esp
403a17:	5b                   	pop    %ebx
403a18:	c2 04 00             	ret    $0x4
403a1b:	8b ff                	mov    %edi,%edi
403a1d:	51                   	push   %ecx
403a1e:	53                   	push   %ebx
403a1f:	56                   	push   %esi
403a20:	57                   	push   %edi
403a21:	8b 3d e0 63 40 00    	mov    0x4063e0,%edi
403a27:	85 ff                	test   %edi,%edi
403a29:	74 69                	je     0x403a94
403a2b:	33 db                	xor    %ebx,%ebx
403a2d:	eb 5c                	jmp    0x403a8b
403a2f:	8b 77 18             	mov    0x18(%edi),%esi
403a32:	85 f6                	test   %esi,%esi
403a34:	74 0e                	je     0x403a44
403a36:	8b ce                	mov    %esi,%ecx
403a38:	ff 15 d0 71 40 00    	call   *0x4071d0
403a3e:	ff d6                	call   *%esi
403a40:	85 c0                	test   %eax,%eax
403a42:	75 35                	jne    0x403a79
403a44:	8b 77 04             	mov    0x4(%edi),%esi
403a47:	8b ce                	mov    %esi,%ecx
403a49:	53                   	push   %ebx
403a4a:	ff 15 d0 71 40 00    	call   *0x4071d0
403a50:	ff d6                	call   *%esi
403a52:	81 3d d0 63 40 00 84 	cmpl   $0x84,0x4063d0
403a59:	00 00 00
403a5c:	75 1b                	jne    0x403a79
403a5e:	8b 77 1c             	mov    0x1c(%edi),%esi
403a61:	85 f6                	test   %esi,%esi
403a63:	74 21                	je     0x403a86
403a65:	53                   	push   %ebx
403a66:	8b ce                	mov    %esi,%ecx
403a68:	ff 15 d0 71 40 00    	call   *0x4071d0
403a6e:	ff d6                	call   *%esi
403a70:	8b 0f                	mov    (%edi),%ecx
403a72:	8b d0                	mov    %eax,%edx
403a74:	e8 e9 fd ff ff       	call   0x403862
403a79:	83 3d d0 63 40 00 64 	cmpl   $0x64,0x4063d0
403a80:	75 04                	jne    0x403a86
403a82:	6a 1c                	push   $0x1c
403a84:	eb 02                	jmp    0x403a88
403a86:	6a 24                	push   $0x24
403a88:	58                   	pop    %eax
403a89:	03 f8                	add    %eax,%edi
403a8b:	39 1f                	cmp    %ebx,(%edi)
403a8d:	75 a0                	jne    0x403a2f
403a8f:	e8 88 01 00 00       	call   0x403c1c
403a94:	5f                   	pop    %edi
403a95:	5e                   	pop    %esi
403a96:	33 c0                	xor    %eax,%eax
403a98:	5b                   	pop    %ebx
403a99:	59                   	pop    %ecx
403a9a:	c2 04 00             	ret    $0x4
403a9d:	8b ff                	mov    %edi,%edi
403a9f:	55                   	push   %ebp
403aa0:	8b ec                	mov    %esp,%ebp
403aa2:	81 ec 38 02 00 00    	sub    $0x238,%esp
403aa8:	a1 54 60 40 00       	mov    0x406054,%eax
403aad:	33 c5                	xor    %ebp,%eax
403aaf:	89 45 fc             	mov    %eax,-0x4(%ebp)
403ab2:	8b 45 08             	mov    0x8(%ebp),%eax
403ab5:	89 85 cc fd ff ff    	mov    %eax,-0x234(%ebp)
403abb:	53                   	push   %ebx
403abc:	8b 5d 0c             	mov    0xc(%ebp),%ebx
403abf:	89 9d d0 fd ff ff    	mov    %ebx,-0x230(%ebp)
403ac5:	57                   	push   %edi
403ac6:	85 c0                	test   %eax,%eax
403ac8:	0f 84 39 01 00 00    	je     0x403c07
403ace:	33 ff                	xor    %edi,%edi
403ad0:	89 38                	mov    %edi,(%eax)
403ad2:	85 db                	test   %ebx,%ebx
403ad4:	0f 84 2d 01 00 00    	je     0x403c07
403ada:	56                   	push   %esi
403adb:	be 04 01 00 00       	mov    $0x104,%esi
403ae0:	89 3b                	mov    %edi,(%ebx)
403ae2:	56                   	push   %esi
403ae3:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403ae9:	89 bd c8 fd ff ff    	mov    %edi,-0x238(%ebp)
403aef:	50                   	push   %eax
403af0:	ff 35 dc 63 40 00    	push   0x4063dc
403af6:	ff 15 90 70 40 00    	call   *0x407090
403afc:	3b c6                	cmp    %esi,%eax
403afe:	75 0a                	jne    0x403b0a
403b00:	be 6f 00 07 80       	mov    $0x8007006f,%esi
403b05:	e9 ed 00 00 00       	jmp    0x403bf7
403b0a:	85 c0                	test   %eax,%eax
403b0c:	75 1e                	jne    0x403b2c
403b0e:	ff 15 40 70 40 00    	call   *0x407040
403b14:	8b f0                	mov    %eax,%esi
403b16:	85 f6                	test   %esi,%esi
403b18:	0f 8e d9 00 00 00    	jle    0x403bf7
403b1e:	0f b7 f6             	movzwl %si,%esi
403b21:	81 ce 00 00 07 80    	or     $0x80070000,%esi
403b27:	e9 cb 00 00 00       	jmp    0x403bf7
403b2c:	53                   	push   %ebx
403b2d:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403b33:	50                   	push   %eax
403b34:	ff 15 04 80 40 00    	call   *0x408004
403b3a:	8b f0                	mov    %eax,%esi
403b3c:	85 f6                	test   %esi,%esi
403b3e:	0f 89 9e 00 00 00    	jns    0x403be2
403b44:	66 8b 8d d4 fd ff ff 	mov    -0x22c(%ebp),%cx
403b4b:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403b51:	8b df                	mov    %edi,%ebx
403b53:	66 85 c9             	test   %cx,%cx
403b56:	74 30                	je     0x403b88
403b58:	0f b7 d1             	movzwl %cx,%edx
403b5b:	66 83 fa 5c          	cmp    $0x5c,%dx
403b5f:	74 10                	je     0x403b71
403b61:	66 83 fa 2f          	cmp    $0x2f,%dx
403b65:	74 0a                	je     0x403b71
403b67:	66 83 fa 2e          	cmp    $0x2e,%dx
403b6b:	75 06                	jne    0x403b73
403b6d:	8b d8                	mov    %eax,%ebx
403b6f:	eb 02                	jmp    0x403b73
403b71:	8b df                	mov    %edi,%ebx
403b73:	50                   	push   %eax
403b74:	ff 15 14 71 40 00    	call   *0x407114
403b7a:	0f b7 08             	movzwl (%eax),%ecx
403b7d:	8b d1                	mov    %ecx,%edx
403b7f:	66 85 c9             	test   %cx,%cx
403b82:	75 d7                	jne    0x403b5b
403b84:	85 db                	test   %ebx,%ebx
403b86:	75 02                	jne    0x403b8a
403b88:	8b d8                	mov    %eax,%ebx
403b8a:	be 40 15 40 00       	mov    $0x401540,%esi
403b8f:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403b95:	8d 7d f0             	lea    -0x10(%ebp),%edi
403b98:	8b cb                	mov    %ebx,%ecx
403b9a:	2b c8                	sub    %eax,%ecx
403b9c:	d1 f9                	sar    $1,%ecx
403b9e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403b9f:	8d 41 05             	lea    0x5(%ecx),%eax
403ba2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403ba3:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
403ba5:	3d 04 01 00 00       	cmp    $0x104,%eax
403baa:	76 07                	jbe    0x403bb3
403bac:	be 05 40 00 80       	mov    $0x80004005,%esi
403bb1:	eb 44                	jmp    0x403bf7
403bb3:	8d 45 f0             	lea    -0x10(%ebp),%eax
403bb6:	50                   	push   %eax
403bb7:	b8 0e 01 00 00       	mov    $0x10e,%eax
403bbc:	2b c1                	sub    %ecx,%eax
403bbe:	50                   	push   %eax
403bbf:	53                   	push   %ebx
403bc0:	ff 15 b0 71 40 00    	call   *0x4071b0
403bc6:	83 c4 0c             	add    $0xc,%esp
403bc9:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403bcf:	ff b5 d0 fd ff ff    	push   -0x230(%ebp)
403bd5:	50                   	push   %eax
403bd6:	ff 15 04 80 40 00    	call   *0x408004
403bdc:	8b f0                	mov    %eax,%esi
403bde:	85 f6                	test   %esi,%esi
403be0:	78 15                	js     0x403bf7
403be2:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403be8:	50                   	push   %eax
403be9:	ff 15 0c 80 40 00    	call   *0x40800c
403bef:	8b 8d cc fd ff ff    	mov    -0x234(%ebp),%ecx
403bf5:	89 01                	mov    %eax,(%ecx)
403bf7:	8d 8d c8 fd ff ff    	lea    -0x238(%ebp),%ecx
403bfd:	e8 94 0b 00 00       	call   0x404796
403c02:	8b c6                	mov    %esi,%eax
403c04:	5e                   	pop    %esi
403c05:	eb 05                	jmp    0x403c0c
403c07:	b8 03 40 00 80       	mov    $0x80004003,%eax
403c0c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
403c0f:	5f                   	pop    %edi
403c10:	33 cd                	xor    %ebp,%ecx
403c12:	5b                   	pop    %ebx
403c13:	e8 88 13 00 00       	call   0x404fa0
403c18:	c9                   	leave
403c19:	c2 08 00             	ret    $0x8
403c1c:	8b ff                	mov    %edi,%edi
403c1e:	55                   	push   %ebp
403c1f:	8b ec                	mov    %esp,%ebp
403c21:	83 ec 0c             	sub    $0xc,%esp
403c24:	53                   	push   %ebx
403c25:	56                   	push   %esi
403c26:	57                   	push   %edi
403c27:	8d 45 fc             	lea    -0x4(%ebp),%eax
403c2a:	33 db                	xor    %ebx,%ebx
403c2c:	50                   	push   %eax
403c2d:	8d 45 f4             	lea    -0xc(%ebp),%eax
403c30:	89 5d f4             	mov    %ebx,-0xc(%ebp)
403c33:	50                   	push   %eax
403c34:	89 5d fc             	mov    %ebx,-0x4(%ebp)
403c37:	e8 61 fe ff ff       	call   0x403a9d
403c3c:	8b f8                	mov    %eax,%edi
403c3e:	85 ff                	test   %edi,%edi
403c40:	78 7f                	js     0x403cc1
403c42:	8b 45 fc             	mov    -0x4(%ebp),%eax
403c45:	8d 55 f8             	lea    -0x8(%ebp),%edx
403c48:	52                   	push   %edx
403c49:	50                   	push   %eax
403c4a:	8b 08                	mov    (%eax),%ecx
403c4c:	8b 71 1c             	mov    0x1c(%ecx),%esi
403c4f:	8b ce                	mov    %esi,%ecx
403c51:	ff 15 d0 71 40 00    	call   *0x4071d0
403c57:	ff d6                	call   *%esi
403c59:	8b f8                	mov    %eax,%edi
403c5b:	85 ff                	test   %edi,%edi
403c5d:	78 62                	js     0x403cc1
403c5f:	53                   	push   %ebx
403c60:	53                   	push   %ebx
403c61:	68 4c 15 40 00       	push   $0x40154c
403c66:	ff 15 80 70 40 00    	call   *0x407080
403c6c:	8b f0                	mov    %eax,%esi
403c6e:	85 f6                	test   %esi,%esi
403c70:	74 39                	je     0x403cab
403c72:	68 68 15 40 00       	push   $0x401568
403c77:	56                   	push   %esi
403c78:	ff 15 94 70 40 00    	call   *0x407094
403c7e:	8b d8                	mov    %eax,%ebx
403c80:	85 db                	test   %ebx,%ebx
403c82:	74 20                	je     0x403ca4
403c84:	8b 55 f8             	mov    -0x8(%ebp),%edx
403c87:	ff 72 14             	push   0x14(%edx)
403c8a:	0f b7 4a 1a          	movzwl 0x1a(%edx),%ecx
403c8e:	ff 72 10             	push   0x10(%edx)
403c91:	51                   	push   %ecx
403c92:	0f b7 4a 18          	movzwl 0x18(%edx),%ecx
403c96:	51                   	push   %ecx
403c97:	52                   	push   %edx
403c98:	8b cb                	mov    %ebx,%ecx
403c9a:	ff 15 d0 71 40 00    	call   *0x4071d0
403ca0:	ff d3                	call   *%ebx
403ca2:	8b f8                	mov    %eax,%edi
403ca4:	56                   	push   %esi
403ca5:	ff 15 78 70 40 00    	call   *0x407078
403cab:	8b 45 fc             	mov    -0x4(%ebp),%eax
403cae:	ff 75 f8             	push   -0x8(%ebp)
403cb1:	50                   	push   %eax
403cb2:	8b 08                	mov    (%eax),%ecx
403cb4:	8b 71 30             	mov    0x30(%ecx),%esi
403cb7:	8b ce                	mov    %esi,%ecx
403cb9:	ff 15 d0 71 40 00    	call   *0x4071d0
403cbf:	ff d6                	call   *%esi
403cc1:	8b 45 fc             	mov    -0x4(%ebp),%eax
403cc4:	85 c0                	test   %eax,%eax
403cc6:	74 10                	je     0x403cd8
403cc8:	8b 08                	mov    (%eax),%ecx
403cca:	50                   	push   %eax
403ccb:	8b 71 08             	mov    0x8(%ecx),%esi
403cce:	8b ce                	mov    %esi,%ecx
403cd0:	ff 15 d0 71 40 00    	call   *0x4071d0
403cd6:	ff d6                	call   *%esi
403cd8:	ff 75 f4             	push   -0xc(%ebp)
403cdb:	ff 15 14 80 40 00    	call   *0x408014
403ce1:	8b c7                	mov    %edi,%eax
403ce3:	5f                   	pop    %edi
403ce4:	5e                   	pop    %esi
403ce5:	5b                   	pop    %ebx
403ce6:	c9                   	leave
403ce7:	c3                   	ret
403ce8:	8b ff                	mov    %edi,%edi
403cea:	55                   	push   %ebp
403ceb:	8b ec                	mov    %esp,%ebp
403ced:	81 ec 1c 02 00 00    	sub    $0x21c,%esp
403cf3:	a1 54 60 40 00       	mov    0x406054,%eax
403cf8:	33 c5                	xor    %ebp,%eax
403cfa:	89 45 fc             	mov    %eax,-0x4(%ebp)
403cfd:	53                   	push   %ebx
403cfe:	33 c0                	xor    %eax,%eax
403d00:	56                   	push   %esi
403d01:	89 85 e4 fd ff ff    	mov    %eax,-0x21c(%ebp)
403d07:	89 85 ec fd ff ff    	mov    %eax,-0x214(%ebp)
403d0d:	8d 85 ec fd ff ff    	lea    -0x214(%ebp),%eax
403d13:	57                   	push   %edi
403d14:	50                   	push   %eax
403d15:	8d 85 e4 fd ff ff    	lea    -0x21c(%ebp),%eax
403d1b:	50                   	push   %eax
403d1c:	e8 7c fd ff ff       	call   0x403a9d
403d21:	8b b5 e4 fd ff ff    	mov    -0x21c(%ebp),%esi
403d27:	8b d8                	mov    %eax,%ebx
403d29:	85 db                	test   %ebx,%ebx
403d2b:	0f 88 21 01 00 00    	js     0x403e52
403d31:	8b 85 ec fd ff ff    	mov    -0x214(%ebp),%eax
403d37:	8d 8d e8 fd ff ff    	lea    -0x218(%ebp),%ecx
403d3d:	51                   	push   %ecx
403d3e:	33 db                	xor    %ebx,%ebx
403d40:	53                   	push   %ebx
403d41:	53                   	push   %ebx
403d42:	89 9d e8 fd ff ff    	mov    %ebx,-0x218(%ebp)
403d48:	8b 38                	mov    (%eax),%edi
403d4a:	53                   	push   %ebx
403d4b:	6a ff                	push   $0xffffffff
403d4d:	50                   	push   %eax
403d4e:	8b 4f 24             	mov    0x24(%edi),%ecx
403d51:	ff 15 d0 71 40 00    	call   *0x4071d0
403d57:	ff 57 24             	call   *0x24(%edi)
403d5a:	85 c0                	test   %eax,%eax
403d5c:	0f 88 d4 00 00 00    	js     0x403e36
403d62:	39 9d e8 fd ff ff    	cmp    %ebx,-0x218(%ebp)
403d68:	0f 84 c8 00 00 00    	je     0x403e36
403d6e:	56                   	push   %esi
403d6f:	ff 15 08 80 40 00    	call   *0x408008
403d75:	3d 04 01 00 00       	cmp    $0x104,%eax
403d7a:	76 37                	jbe    0x403db3
403d7c:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
403d82:	ff 15 14 80 40 00    	call   *0x408014
403d88:	8b 85 ec fd ff ff    	mov    -0x214(%ebp),%eax
403d8e:	85 c0                	test   %eax,%eax
403d90:	74 10                	je     0x403da2
403d92:	8b 08                	mov    (%eax),%ecx
403d94:	50                   	push   %eax
403d95:	8b 79 08             	mov    0x8(%ecx),%edi
403d98:	8b cf                	mov    %edi,%ecx
403d9a:	ff 15 d0 71 40 00    	call   *0x4071d0
403da0:	ff d7                	call   *%edi
403da2:	56                   	push   %esi
403da3:	ff 15 14 80 40 00    	call   *0x408014
403da9:	b8 35 01 01 80       	mov    $0x80010135,%eax
403dae:	e9 c2 00 00 00       	jmp    0x403e75
403db3:	8d 95 f0 fd ff ff    	lea    -0x210(%ebp),%edx
403db9:	8b ce                	mov    %esi,%ecx
403dbb:	2b d6                	sub    %esi,%edx
403dbd:	0f b7 01             	movzwl (%ecx),%eax
403dc0:	66 89 04 0a          	mov    %ax,(%edx,%ecx,1)
403dc4:	8d 49 02             	lea    0x2(%ecx),%ecx
403dc7:	66 85 c0             	test   %ax,%ax
403dca:	75 f1                	jne    0x403dbd
403dcc:	8d bd f0 fd ff ff    	lea    -0x210(%ebp),%edi
403dd2:	8b df                	mov    %edi,%ebx
403dd4:	66 39 85 f0 fd ff ff 	cmp    %ax,-0x210(%ebp)
403ddb:	74 2a                	je     0x403e07