402a27:	8b 4e 34             	mov    0x34(%esi),%ecx
402a2a:	d1 f8                	sar    $1,%eax
402a2c:	89 01                	mov    %eax,(%ecx)
402a2e:	66 8b 54 24 10       	mov    0x10(%esp),%dx
402a33:	b8 ff ff 00 00       	mov    $0xffff,%eax
402a38:	66 3b c2             	cmp    %dx,%ax
402a3b:	75 08                	jne    0x402a45
402a3d:	5f                   	pop    %edi
402a3e:	33 c0                	xor    %eax,%eax
402a40:	5e                   	pop    %esi
402a41:	59                   	pop    %ecx
402a42:	c2 04 00             	ret    $0x4
402a45:	8b 4e 24             	mov    0x24(%esi),%ecx
402a48:	8b 39                	mov    (%ecx),%edi
402a4a:	53                   	push   %ebx
402a4b:	85 ff                	test   %edi,%edi
402a4d:	74 27                	je     0x402a76
402a4f:	8b 46 34             	mov    0x34(%esi),%eax
402a52:	8b 18                	mov    (%eax),%ebx
402a54:	8b cf                	mov    %edi,%ecx
402a56:	8d 1c 59             	lea    (%ecx,%ebx,2),%ebx
402a59:	3b cb                	cmp    %ebx,%ecx
402a5b:	73 19                	jae    0x402a76
402a5d:	ff 08                	decl   (%eax)
402a5f:	8b 76 24             	mov    0x24(%esi),%esi
402a62:	8b 06                	mov    (%esi),%eax
402a64:	8d 48 02             	lea    0x2(%eax),%ecx
402a67:	5b                   	pop    %ebx
402a68:	89 0e                	mov    %ecx,(%esi)
402a6a:	5f                   	pop    %edi
402a6b:	66 89 10             	mov    %dx,(%eax)
402a6e:	66 8b c2             	mov    %dx,%ax
402a71:	5e                   	pop    %esi
402a72:	59                   	pop    %ecx
402a73:	c2 04 00             	ret    $0x4
402a76:	f6 46 40 02          	testb  $0x2,0x40(%esi)
402a7a:	74 0c                	je     0x402a88
402a7c:	5b                   	pop    %ebx
402a7d:	5f                   	pop    %edi
402a7e:	b8 ff ff 00 00       	mov    $0xffff,%eax
402a83:	5e                   	pop    %esi
402a84:	59                   	pop    %ecx
402a85:	c2 04 00             	ret    $0x4
402a88:	55                   	push   %ebp
402a89:	85 ff                	test   %edi,%edi
402a8b:	75 04                	jne    0x402a91
402a8d:	33 ed                	xor    %ebp,%ebp
402a8f:	eb 10                	jmp    0x402aa1
402a91:	8b 56 34             	mov    0x34(%esi),%edx
402a94:	8b 2a                	mov    (%edx),%ebp
402a96:	8b 46 10             	mov    0x10(%esi),%eax
402a99:	03 ed                	add    %ebp,%ebp
402a9b:	2b 28                	sub    (%eax),%ebp
402a9d:	03 ef                	add    %edi,%ebp
402a9f:	d1 fd                	sar    $1,%ebp
402aa1:	8b c5                	mov    %ebp,%eax
402aa3:	d1 e8                	shr    $1,%eax
402aa5:	8b d5                	mov    %ebp,%edx
402aa7:	89 54 24 10          	mov    %edx,0x10(%esp)
402aab:	83 f8 20             	cmp    $0x20,%eax
402aae:	73 05                	jae    0x402ab5
402ab0:	b8 20 00 00 00       	mov    $0x20,%eax
402ab5:	8b 4e 10             	mov    0x10(%esi),%ecx
402ab8:	8b 19                	mov    (%ecx),%ebx
402aba:	33 ff                	xor    %edi,%edi
402abc:	85 c0                	test   %eax,%eax
402abe:	76 28                	jbe    0x402ae8
402ac0:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
402ac5:	2b c8                	sub    %eax,%ecx
402ac7:	3b cd                	cmp    %ebp,%ecx
402ac9:	73 06                	jae    0x402ad1
402acb:	d1 e8                	shr    $1,%eax
402acd:	75 f1                	jne    0x402ac0
402acf:	eb 17                	jmp    0x402ae8
402ad1:	85 c0                	test   %eax,%eax
402ad3:	76 13                	jbe    0x402ae8
402ad5:	03 c5                	add    %ebp,%eax
402ad7:	8b c8                	mov    %eax,%ecx
402ad9:	89 44 24 10          	mov    %eax,0x10(%esp)
402add:	e8 ce 08 00 00       	call   0x4033b0
402ae2:	8b 54 24 10          	mov    0x10(%esp),%edx
402ae6:	8b f8                	mov    %eax,%edi
402ae8:	85 ed                	test   %ebp,%ebp
402aea:	76 19                	jbe    0x402b05
402aec:	8d 44 2d 00          	lea    0x0(%ebp,%ebp,1),%eax
402af0:	50                   	push   %eax
402af1:	53                   	push   %ebx
402af2:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
402af5:	51                   	push   %ecx
402af6:	57                   	push   %edi
402af7:	e8 9a 29 00 00       	call   0x405496
402afc:	8b 54 24 20          	mov    0x20(%esp),%edx
402b00:	83 c4 10             	add    $0x10,%esp
402b03:	85 ed                	test   %ebp,%ebp
402b05:	75 43                	jne    0x402b4a
402b07:	8b 46 14             	mov    0x14(%esi),%eax
402b0a:	89 7e 3c             	mov    %edi,0x3c(%esi)
402b0d:	89 38                	mov    %edi,(%eax)
402b0f:	8b 4e 24             	mov    0x24(%esi),%ecx
402b12:	89 39                	mov    %edi,(%ecx)
402b14:	8b 46 34             	mov    0x34(%esi),%eax
402b17:	03 d2                	add    %edx,%edx
402b19:	d1 fa                	sar    $1,%edx
402b1b:	89 10                	mov    %edx,(%eax)
402b1d:	8b 4e 10             	mov    0x10(%esi),%ecx
402b20:	f6 46 40 04          	testb  $0x4,0x40(%esi)
402b24:	89 39                	mov    %edi,(%ecx)
402b26:	8b 56 20             	mov    0x20(%esi),%edx
402b29:	74 12                	je     0x402b3d
402b2b:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
402b31:	8b 46 30             	mov    0x30(%esi),%eax
402b34:	d1 ff                	sar    $1,%edi
402b36:	89 38                	mov    %edi,(%eax)
402b38:	e9 8a 00 00 00       	jmp    0x402bc7
402b3d:	89 3a                	mov    %edi,(%edx)
402b3f:	8b 46 30             	mov    0x30(%esi),%eax
402b42:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
402b48:	eb 7d                	jmp    0x402bc7
402b4a:	8b 4e 3c             	mov    0x3c(%esi),%ecx
402b4d:	2b cb                	sub    %ebx,%ecx
402b4f:	d1 f9                	sar    $1,%ecx
402b51:	8d 04 4f             	lea    (%edi,%ecx,2),%eax
402b54:	8b 4e 24             	mov    0x24(%esi),%ecx
402b57:	89 46 3c             	mov    %eax,0x3c(%esi)
402b5a:	8b 01                	mov    (%ecx),%eax
402b5c:	8b 4e 14             	mov    0x14(%esi),%ecx
402b5f:	8b 29                	mov    (%ecx),%ebp
402b61:	2b c3                	sub    %ebx,%eax
402b63:	2b eb                	sub    %ebx,%ebp
402b65:	d1 f8                	sar    $1,%eax
402b67:	d1 fd                	sar    $1,%ebp
402b69:	03 d2                	add    %edx,%edx
402b6b:	8d 04 47             	lea    (%edi,%eax,2),%eax
402b6e:	2b d0                	sub    %eax,%edx
402b70:	8d 2c 6f             	lea    (%edi,%ebp,2),%ebp
402b73:	89 29                	mov    %ebp,(%ecx)
402b75:	8b 4e 24             	mov    0x24(%esi),%ecx
402b78:	89 01                	mov    %eax,(%ecx)
402b7a:	8b 46 34             	mov    0x34(%esi),%eax
402b7d:	03 d7                	add    %edi,%edx
402b7f:	d1 fa                	sar    $1,%edx
402b81:	89 10                	mov    %edx,(%eax)
402b83:	f6 46 40 04          	testb  $0x4,0x40(%esi)
402b87:	74 17                	je     0x402ba0
402b89:	8b 4e 10             	mov    0x10(%esi),%ecx
402b8c:	89 39                	mov    %edi,(%ecx)
402b8e:	8b 56 20             	mov    0x20(%esi),%edx
402b91:	c7 02 00 00 00 00    	movl   $0x0,(%edx)
402b97:	8b 46 30             	mov    0x30(%esi),%eax
402b9a:	d1 ff                	sar    $1,%edi
402b9c:	89 38                	mov    %edi,(%eax)
402b9e:	eb 27                	jmp    0x402bc7
402ba0:	8b 4e 24             	mov    0x24(%esi),%ecx
402ba3:	8b 01                	mov    (%ecx),%eax
402ba5:	8b 56 20             	mov    0x20(%esi),%edx
402ba8:	8b 0a                	mov    (%edx),%ecx
402baa:	8b 56 10             	mov    0x10(%esi),%edx
402bad:	2b cb                	sub    %ebx,%ecx
402baf:	d1 f9                	sar    $1,%ecx
402bb1:	8d 0c 4f             	lea    (%edi,%ecx,2),%ecx
402bb4:	89 3a                	mov    %edi,(%edx)
402bb6:	8b 56 20             	mov    0x20(%esi),%edx
402bb9:	2b c1                	sub    %ecx,%eax
402bbb:	89 0a                	mov    %ecx,(%edx)
402bbd:	8b 4e 30             	mov    0x30(%esi),%ecx
402bc0:	83 c0 02             	add    $0x2,%eax
402bc3:	d1 f8                	sar    $1,%eax
402bc5:	89 01                	mov    %eax,(%ecx)
402bc7:	f6 46 40 01          	testb  $0x1,0x40(%esi)
402bcb:	5d                   	pop    %ebp
402bcc:	74 09                	je     0x402bd7
402bce:	53                   	push   %ebx
402bcf:	e8 62 27 00 00       	call   0x405336
402bd4:	83 c4 04             	add    $0x4,%esp
402bd7:	8b 46 34             	mov    0x34(%esi),%eax
402bda:	83 4e 40 01          	orl    $0x1,0x40(%esi)
402bde:	ff 08                	decl   (%eax)
402be0:	8b 76 24             	mov    0x24(%esi),%esi
402be3:	8b 06                	mov    (%esi),%eax
402be5:	66 8b 4c 24 14       	mov    0x14(%esp),%cx
402bea:	8d 50 02             	lea    0x2(%eax),%edx
402bed:	5b                   	pop    %ebx
402bee:	89 16                	mov    %edx,(%esi)
402bf0:	5f                   	pop    %edi
402bf1:	66 89 08             	mov    %cx,(%eax)
402bf4:	66 8b c1             	mov    %cx,%ax
402bf7:	5e                   	pop    %esi
402bf8:	59                   	pop    %ecx
402bf9:	c2 04 00             	ret    $0x4
402bfc:	cc                   	int3
402bfd:	cc                   	int3
402bfe:	cc                   	int3
402bff:	cc                   	int3
402c00:	8b 41 20             	mov    0x20(%ecx),%eax
402c03:	8b 00                	mov    (%eax),%eax
402c05:	85 c0                	test   %eax,%eax
402c07:	74 4c                	je     0x402c55
402c09:	8b 51 10             	mov    0x10(%ecx),%edx
402c0c:	3b 02                	cmp    (%edx),%eax
402c0e:	76 45                	jbe    0x402c55
402c10:	66 8b 54 24 04       	mov    0x4(%esp),%dx
402c15:	56                   	push   %esi
402c16:	be ff ff 00 00       	mov    $0xffff,%esi
402c1b:	66 3b f2             	cmp    %dx,%si
402c1e:	5e                   	pop    %esi
402c1f:	74 0c                	je     0x402c2d
402c21:	66 3b 50 fe          	cmp    -0x2(%eax),%dx
402c25:	74 06                	je     0x402c2d
402c27:	f6 41 40 02          	testb  $0x2,0x40(%ecx)
402c2b:	75 28                	jne    0x402c55
402c2d:	8b 41 30             	mov    0x30(%ecx),%eax
402c30:	ff 00                	incl   (%eax)
402c32:	8b 41 20             	mov    0x20(%ecx),%eax
402c35:	83 00 fe             	addl   $0xfffffffe,(%eax)
402c38:	b8 ff ff 00 00       	mov    $0xffff,%eax
402c3d:	66 3b c2             	cmp    %dx,%ax
402c40:	74 0e                	je     0x402c50
402c42:	8b 49 20             	mov    0x20(%ecx),%ecx
402c45:	8b 01                	mov    (%ecx),%eax
402c47:	66 89 10             	mov    %dx,(%eax)
402c4a:	0f b7 c2             	movzwl %dx,%eax
402c4d:	c2 04 00             	ret    $0x4
402c50:	33 c0                	xor    %eax,%eax
402c52:	c2 04 00             	ret    $0x4
402c55:	b8 ff ff 00 00       	mov    $0xffff,%eax
402c5a:	c2 04 00             	ret    $0x4
402c5d:	cc                   	int3
402c5e:	cc                   	int3
402c5f:	cc                   	int3
402c60:	8b 51 20             	mov    0x20(%ecx),%edx
402c63:	56                   	push   %esi
402c64:	8b 32                	mov    (%edx),%esi
402c66:	85 f6                	test   %esi,%esi
402c68:	75 07                	jne    0x402c71
402c6a:	b8 ff ff 00 00       	mov    $0xffff,%eax
402c6f:	5e                   	pop    %esi
402c70:	c3                   	ret
402c71:	53                   	push   %ebx
402c72:	57                   	push   %edi
402c73:	8b 79 30             	mov    0x30(%ecx),%edi
402c76:	8b 1f                	mov    (%edi),%ebx
402c78:	8b c6                	mov    %esi,%eax
402c7a:	8d 1c 58             	lea    (%eax,%ebx,2),%ebx
402c7d:	3b c3                	cmp    %ebx,%eax
402c7f:	73 07                	jae    0x402c88
402c81:	66 8b 06             	mov    (%esi),%ax
402c84:	5f                   	pop    %edi
402c85:	5b                   	pop    %ebx
402c86:	5e                   	pop    %esi
402c87:	c3                   	ret
402c88:	f6 41 40 04          	testb  $0x4,0x40(%ecx)
402c8c:	75 31                	jne    0x402cbf
402c8e:	8b 41 24             	mov    0x24(%ecx),%eax
402c91:	8b 00                	mov    (%eax),%eax
402c93:	85 c0                	test   %eax,%eax
402c95:	74 28                	je     0x402cbf
402c97:	3b c6                	cmp    %esi,%eax
402c99:	77 05                	ja     0x402ca0
402c9b:	39 71 3c             	cmp    %esi,0x3c(%ecx)
402c9e:	76 1f                	jbe    0x402cbf
402ca0:	39 41 3c             	cmp    %eax,0x3c(%ecx)
402ca3:	73 03                	jae    0x402ca8
402ca5:	89 41 3c             	mov    %eax,0x3c(%ecx)
402ca8:	8b 12                	mov    (%edx),%edx
402caa:	8b 41 3c             	mov    0x3c(%ecx),%eax
402cad:	2b c2                	sub    %edx,%eax
402caf:	d1 f8                	sar    $1,%eax
402cb1:	89 07                	mov    %eax,(%edi)
402cb3:	8b 49 20             	mov    0x20(%ecx),%ecx
402cb6:	8b 11                	mov    (%ecx),%edx
402cb8:	66 8b 02             	mov    (%edx),%ax
402cbb:	5f                   	pop    %edi
402cbc:	5b                   	pop    %ebx
402cbd:	5e                   	pop    %esi
402cbe:	c3                   	ret
402cbf:	5f                   	pop    %edi
402cc0:	5b                   	pop    %ebx
402cc1:	b8 ff ff 00 00       	mov    $0xffff,%eax
402cc6:	5e                   	pop    %esi
402cc7:	c3                   	ret
402cc8:	cc                   	int3
402cc9:	cc                   	int3
402cca:	cc                   	int3
402ccb:	cc                   	int3
402ccc:	cc                   	int3
402ccd:	cc                   	int3
402cce:	cc                   	int3
402ccf:	cc                   	int3
402cd0:	8b 51 24             	mov    0x24(%ecx),%edx
402cd3:	8b 02                	mov    (%edx),%eax
402cd5:	85 c0                	test   %eax,%eax
402cd7:	74 08                	je     0x402ce1
402cd9:	39 41 3c             	cmp    %eax,0x3c(%ecx)
402cdc:	73 03                	jae    0x402ce1
402cde:	89 41 3c             	mov    %eax,0x3c(%ecx)
402ce1:	53                   	push   %ebx
402ce2:	8a 5c 24 14          	mov    0x14(%esp),%bl
402ce6:	56                   	push   %esi
402ce7:	57                   	push   %edi
402ce8:	f6 c3 01             	test   $0x1,%bl
402ceb:	0f 84 b5 00 00 00    	je     0x402da6
402cf1:	8b 41 20             	mov    0x20(%ecx),%eax
402cf4:	8b 30                	mov    (%eax),%esi
402cf6:	85 f6                	test   %esi,%esi
402cf8:	0f 84 a8 00 00 00    	je     0x402da6
402cfe:	8b 44 24 18          	mov    0x18(%esp),%eax
402d02:	8b 3d 00 a2 41 00    	mov    0x41a200,%edi
402d08:	83 f8 02             	cmp    $0x2,%eax
402d0b:	75 12                	jne    0x402d1f
402d0d:	8b 51 10             	mov    0x10(%ecx),%edx
402d10:	8b 41 3c             	mov    0x3c(%ecx),%eax
402d13:	2b 02                	sub    (%edx),%eax
402d15:	8b 54 24 14          	mov    0x14(%esp),%edx
402d19:	d1 f8                	sar    $1,%eax
402d1b:	03 d0                	add    %eax,%edx
402d1d:	eb 27                	jmp    0x402d46
402d1f:	83 f8 01             	cmp    $0x1,%eax
402d22:	75 16                	jne    0x402d3a
402d24:	f6 c3 02             	test   $0x2,%bl
402d27:	75 15                	jne    0x402d3e
402d29:	8b 51 10             	mov    0x10(%ecx),%edx
402d2c:	8b c6                	mov    %esi,%eax
402d2e:	2b 02                	sub    (%edx),%eax
402d30:	8b 54 24 14          	mov    0x14(%esp),%edx
402d34:	d1 f8                	sar    $1,%eax
402d36:	03 d0                	add    %eax,%edx
402d38:	eb 0c                	jmp    0x402d46
402d3a:	85 c0                	test   %eax,%eax
402d3c:	74 04                	je     0x402d42
402d3e:	8b d7                	mov    %edi,%edx
402d40:	eb 04                	jmp    0x402d46
402d42:	8b 54 24 14          	mov    0x14(%esp),%edx
402d46:	85 d2                	test   %edx,%edx
402d48:	0f 8c cc 00 00 00    	jl     0x402e1a
402d4e:	8b 41 10             	mov    0x10(%ecx),%eax
402d51:	8b 00                	mov    (%eax),%eax
402d53:	55                   	push   %ebp
402d54:	8b 69 3c             	mov    0x3c(%ecx),%ebp
402d57:	2b e8                	sub    %eax,%ebp
402d59:	d1 fd                	sar    $1,%ebp
402d5b:	3b d5                	cmp    %ebp,%edx
402d5d:	5d                   	pop    %ebp
402d5e:	0f 8f b6 00 00 00    	jg     0x402e1a
402d64:	2b c6                	sub    %esi,%eax
402d66:	8b 71 30             	mov    0x30(%ecx),%esi
402d69:	d1 f8                	sar    $1,%eax
402d6b:	03 c2                	add    %edx,%eax
402d6d:	29 06                	sub    %eax,(%esi)
402d6f:	8b 71 20             	mov    0x20(%ecx),%esi
402d72:	03 c0                	add    %eax,%eax