407c2f:	e8 c2 93 01 00       	call   0x420ff6
407c34:	59                   	pop    %ecx
407c35:	85 c0                	test   %eax,%eax
407c37:	74 4c                	je     0x407c85
407c39:	89 30                	mov    %esi,(%eax)
407c3b:	89 47 0c             	mov    %eax,0xc(%edi)
407c3e:	8b 47 04             	mov    0x4(%edi),%eax
407c41:	40                   	inc    %eax
407c42:	03 c3                	add    %ebx,%eax
407c44:	89 47 08             	mov    %eax,0x8(%edi)
407c47:	74 40                	je     0x407c89
407c49:	83 c0 07             	add    $0x7,%eax
407c4c:	83 e0 f8             	and    $0xfffffff8,%eax
407c4f:	33 c9                	xor    %ecx,%ecx
407c51:	89 47 08             	mov    %eax,0x8(%edi)
407c54:	6a 02                	push   $0x2
407c56:	5a                   	pop    %edx
407c57:	f7 e2                	mul    %edx
407c59:	0f 90 c1             	seto   %cl
407c5c:	f7 d9                	neg    %ecx
407c5e:	0b c8                	or     %eax,%ecx
407c60:	51                   	push   %ecx
407c61:	e8 90 93 01 00       	call   0x420ff6
407c66:	8b 4f 04             	mov    0x4(%edi),%ecx
407c69:	8b f0                	mov    %eax,%esi
407c6b:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407c72:	51                   	push   %ecx
407c73:	ff 37                	push   (%edi)
407c75:	56                   	push   %esi
407c76:	e8 05 94 01 00       	call   0x421080
407c7b:	83 c4 10             	add    $0x10,%esp
407c7e:	89 37                	mov    %esi,(%edi)
407c80:	e9 6d ff ff ff       	jmp    0x407bf2
407c85:	33 c0                	xor    %eax,%eax
407c87:	eb b2                	jmp    0x407c3b
407c89:	6a 08                	push   $0x8
407c8b:	58                   	pop    %eax
407c8c:	eb c1                	jmp    0x407c4f
407c8e:	55                   	push   %ebp
407c8f:	8b ec                	mov    %esp,%ebp
407c91:	83 ec 18             	sub    $0x18,%esp
407c94:	56                   	push   %esi
407c95:	8b f1                	mov    %ecx,%esi
407c97:	3b 75 08             	cmp    0x8(%ebp),%esi
407c9a:	0f 84 f4 73 03 00    	je     0x43f094
407ca0:	6a ff                	push   $0xffffffff
407ca2:	6a 00                	push   $0x0
407ca4:	ff 75 08             	push   0x8(%ebp)
407ca7:	e8 05 ff ff ff       	call   0x407bb1
407cac:	5e                   	pop    %esi
407cad:	8b e5                	mov    %ebp,%esp
407caf:	5d                   	pop    %ebp
407cb0:	c2 04 00             	ret    $0x4
407cb3:	55                   	push   %ebp
407cb4:	8b ec                	mov    %esp,%ebp
407cb6:	51                   	push   %ecx
407cb7:	51                   	push   %ecx
407cb8:	8b 45 08             	mov    0x8(%ebp),%eax
407cbb:	56                   	push   %esi
407cbc:	8b f1                	mov    %ecx,%esi
407cbe:	40                   	inc    %eax
407cbf:	39 46 08             	cmp    %eax,0x8(%esi)
407cc2:	72 07                	jb     0x407ccb
407cc4:	5e                   	pop    %esi
407cc5:	8b e5                	mov    %ebp,%esp
407cc7:	5d                   	pop    %ebp
407cc8:	c2 04 00             	ret    $0x4
407ccb:	3d c2 41 00 00       	cmp    $0x41c2,%eax
407cd0:	0f 83 df 73 03 00    	jae    0x43f0b5
407cd6:	03 c0                	add    %eax,%eax
407cd8:	89 46 08             	mov    %eax,0x8(%esi)
407cdb:	85 c0                	test   %eax,%eax
407cdd:	74 48                	je     0x407d27
407cdf:	83 c0 07             	add    $0x7,%eax
407ce2:	83 e0 f8             	and    $0xfffffff8,%eax
407ce5:	57                   	push   %edi
407ce6:	33 c9                	xor    %ecx,%ecx
407ce8:	89 46 08             	mov    %eax,0x8(%esi)
407ceb:	6a 02                	push   $0x2
407ced:	5a                   	pop    %edx
407cee:	f7 e2                	mul    %edx
407cf0:	0f 90 c1             	seto   %cl
407cf3:	f7 d9                	neg    %ecx
407cf5:	0b c8                	or     %eax,%ecx
407cf7:	51                   	push   %ecx
407cf8:	e8 a8 92 01 00       	call   0x420fa5
407cfd:	83 3e 00             	cmpl   $0x0,(%esi)
407d00:	8b f8                	mov    %eax,%edi
407d02:	59                   	pop    %ecx
407d03:	74 1d                	je     0x407d22
407d05:	8b 4e 04             	mov    0x4(%esi),%ecx
407d08:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407d0f:	51                   	push   %ecx
407d10:	ff 36                	push   (%esi)
407d12:	57                   	push   %edi
407d13:	e8 68 93 01 00       	call   0x421080
407d18:	ff 36                	push   (%esi)
407d1a:	e8 91 b3 01 00       	call   0x4230b0
407d1f:	83 c4 10             	add    $0x10,%esp
407d22:	89 3e                	mov    %edi,(%esi)
407d24:	5f                   	pop    %edi
407d25:	eb 9d                	jmp    0x407cc4
407d27:	6a 08                	push   $0x8
407d29:	58                   	pop    %eax
407d2a:	eb b9                	jmp    0x407ce5
407d2c:	55                   	push   %ebp
407d2d:	8b ec                	mov    %esp,%ebp
407d2f:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
407d33:	56                   	push   %esi
407d34:	8b f1                	mov    %ecx,%esi
407d36:	74 6d                	je     0x407da5
407d38:	ff 75 08             	push   0x8(%ebp)
407d3b:	e8 fc b0 01 00       	call   0x422e3c
407d40:	59                   	pop    %ecx
407d41:	8b 4e 0c             	mov    0xc(%esi),%ecx
407d44:	89 46 04             	mov    %eax,0x4(%esi)
407d47:	8b 11                	mov    (%ecx),%edx
407d49:	83 fa 01             	cmp    $0x1,%edx
407d4c:	7f 25                	jg     0x407d73
407d4e:	50                   	push   %eax
407d4f:	8b ce                	mov    %esi,%ecx
407d51:	e8 31 03 00 00       	call   0x408087
407d56:	8b 46 04             	mov    0x4(%esi),%eax
407d59:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
407d60:	50                   	push   %eax
407d61:	ff 75 08             	push   0x8(%ebp)
407d64:	ff 36                	push   (%esi)
407d66:	e8 15 93 01 00       	call   0x421080
407d6b:	83 c4 0c             	add    $0xc,%esp
407d6e:	5e                   	pop    %esi
407d6f:	5d                   	pop    %ebp
407d70:	c2 04 00             	ret    $0x4
407d73:	8d 42 ff             	lea    -0x1(%edx),%eax
407d76:	89 01                	mov    %eax,(%ecx)
407d78:	8b ce                	mov    %esi,%ecx
407d7a:	e8 0a 04 00 00       	call   0x408189
407d7f:	8b 46 04             	mov    0x4(%esi),%eax
407d82:	40                   	inc    %eax
407d83:	50                   	push   %eax
407d84:	e8 e7 03 00 00       	call   0x408170
407d89:	33 c9                	xor    %ecx,%ecx
407d8b:	89 46 08             	mov    %eax,0x8(%esi)
407d8e:	6a 02                	push   $0x2
407d90:	5a                   	pop    %edx
407d91:	f7 e2                	mul    %edx
407d93:	0f 90 c1             	seto   %cl
407d96:	f7 d9                	neg    %ecx
407d98:	0b c8                	or     %eax,%ecx
407d9a:	51                   	push   %ecx
407d9b:	e8 05 92 01 00       	call   0x420fa5
407da0:	59                   	pop    %ecx
407da1:	89 06                	mov    %eax,(%esi)
407da3:	eb b1                	jmp    0x407d56
407da5:	6a ff                	push   $0xffffffff
407da7:	6a 00                	push   $0x0
407da9:	e8 de 00 00 00       	call   0x407e8c
407dae:	eb be                	jmp    0x407d6e
407db0:	55                   	push   %ebp
407db1:	8b ec                	mov    %esp,%ebp
407db3:	53                   	push   %ebx
407db4:	57                   	push   %edi
407db5:	ff 75 08             	push   0x8(%ebp)
407db8:	8b f9                	mov    %ecx,%edi
407dba:	e8 7d b0 01 00       	call   0x422e3c
407dbf:	8b d8                	mov    %eax,%ebx
407dc1:	8b 47 0c             	mov    0xc(%edi),%eax
407dc4:	59                   	pop    %ecx
407dc5:	8b 08                	mov    (%eax),%ecx
407dc7:	83 f9 01             	cmp    $0x1,%ecx
407dca:	0f 8f 55 73 03 00    	jg     0x43f125
407dd0:	8b 47 04             	mov    0x4(%edi),%eax
407dd3:	8b cf                	mov    %edi,%ecx
407dd5:	03 c3                	add    %ebx,%eax
407dd7:	50                   	push   %eax
407dd8:	e8 d6 fe ff ff       	call   0x407cb3
407ddd:	8b 4f 04             	mov    0x4(%edi),%ecx
407de0:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
407de3:	50                   	push   %eax
407de4:	8b 07                	mov    (%edi),%eax
407de6:	ff 75 08             	push   0x8(%ebp)
407de9:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407dec:	50                   	push   %eax
407ded:	e8 8e 92 01 00       	call   0x421080
407df2:	01 5f 04             	add    %ebx,0x4(%edi)
407df5:	83 c4 0c             	add    $0xc,%esp
407df8:	8b 07                	mov    (%edi),%eax
407dfa:	33 d2                	xor    %edx,%edx
407dfc:	8b 4f 04             	mov    0x4(%edi),%ecx
407dff:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
407e03:	8b c7                	mov    %edi,%eax
407e05:	5f                   	pop    %edi
407e06:	5b                   	pop    %ebx
407e07:	5d                   	pop    %ebp
407e08:	c2 08 00             	ret    $0x8
407e0b:	55                   	push   %ebp
407e0c:	8b ec                	mov    %esp,%ebp
407e0e:	57                   	push   %edi
407e0f:	8b f9                	mov    %ecx,%edi
407e11:	8b 4f 0c             	mov    0xc(%edi),%ecx
407e14:	8b 01                	mov    (%ecx),%eax
407e16:	83 f8 01             	cmp    $0x1,%eax
407e19:	0f 8f 54 73 03 00    	jg     0x43f173
407e1f:	51                   	push   %ecx
407e20:	ff 75 08             	push   0x8(%ebp)
407e23:	8b cf                	mov    %edi,%ecx
407e25:	e8 86 ff ff ff       	call   0x407db0
407e2a:	5f                   	pop    %edi
407e2b:	5d                   	pop    %ebp
407e2c:	c2 04 00             	ret    $0x4
407e2f:	55                   	push   %ebp
407e30:	8b ec                	mov    %esp,%ebp
407e32:	51                   	push   %ecx
407e33:	53                   	push   %ebx
407e34:	8b c1                	mov    %ecx,%eax
407e36:	56                   	push   %esi
407e37:	57                   	push   %edi
407e38:	33 f6                	xor    %esi,%esi
407e3a:	89 45 fc             	mov    %eax,-0x4(%ebp)
407e3d:	8b 78 04             	mov    0x4(%eax),%edi
407e40:	8d 57 ff             	lea    -0x1(%edi),%edx
407e43:	85 ff                	test   %edi,%edi
407e45:	74 35                	je     0x407e7c
407e47:	8b 5d 08             	mov    0x8(%ebp),%ebx
407e4a:	0f b7 03             	movzwl (%ebx),%eax
407e4d:	33 c9                	xor    %ecx,%ecx
407e4f:	66 85 c0             	test   %ax,%ax
407e52:	74 22                	je     0x407e76
407e54:	8b 45 fc             	mov    -0x4(%ebp),%eax
407e57:	8b 00                	mov    (%eax),%eax
407e59:	0f b7 04 50          	movzwl (%eax,%edx,2),%eax
407e5d:	89 45 08             	mov    %eax,0x8(%ebp)
407e60:	0f b7 03             	movzwl (%ebx),%eax
407e63:	66 39 45 08          	cmp    %ax,0x8(%ebp)
407e67:	74 18                	je     0x407e81
407e69:	41                   	inc    %ecx
407e6a:	0f b7 04 4b          	movzwl (%ebx,%ecx,2),%eax
407e6e:	66 85 c0             	test   %ax,%ax
407e71:	75 f0                	jne    0x407e63
407e73:	0f b7 03             	movzwl (%ebx),%eax
407e76:	4a                   	dec    %edx
407e77:	46                   	inc    %esi
407e78:	3b f7                	cmp    %edi,%esi
407e7a:	72 d1                	jb     0x407e4d
407e7c:	83 c8 ff             	or     $0xffffffff,%eax
407e7f:	eb 02                	jmp    0x407e83
407e81:	8b c2                	mov    %edx,%eax
407e83:	5f                   	pop    %edi
407e84:	5e                   	pop    %esi
407e85:	5b                   	pop    %ebx
407e86:	8b e5                	mov    %ebp,%esp
407e88:	5d                   	pop    %ebp
407e89:	c2 04 00             	ret    $0x4
407e8c:	55                   	push   %ebp
407e8d:	8b ec                	mov    %esp,%ebp
407e8f:	53                   	push   %ebx
407e90:	56                   	push   %esi
407e91:	8b 75 0c             	mov    0xc(%ebp),%esi
407e94:	8b d9                	mov    %ecx,%ebx
407e96:	85 f6                	test   %esi,%esi
407e98:	74 0a                	je     0x407ea4
407e9a:	57                   	push   %edi
407e9b:	8b 7d 08             	mov    0x8(%ebp),%edi
407e9e:	3b 7b 04             	cmp    0x4(%ebx),%edi
407ea1:	72 07                	jb     0x407eaa
407ea3:	5f                   	pop    %edi
407ea4:	5e                   	pop    %esi
407ea5:	5b                   	pop    %ebx
407ea6:	5d                   	pop    %ebp
407ea7:	c2 08 00             	ret    $0x8
407eaa:	83 fe ff             	cmp    $0xffffffff,%esi
407ead:	75 33                	jne    0x407ee2
407eaf:	8b 73 04             	mov    0x4(%ebx),%esi
407eb2:	2b f7                	sub    %edi,%esi
407eb4:	e8 f6 00 00 00       	call   0x407faf
407eb9:	8b 43 04             	mov    0x4(%ebx),%eax
407ebc:	8b 0b                	mov    (%ebx),%ecx
407ebe:	2b c7                	sub    %edi,%eax
407ec0:	2b c6                	sub    %esi,%eax
407ec2:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
407ec9:	50                   	push   %eax
407eca:	8d 04 37             	lea    (%edi,%esi,1),%eax
407ecd:	8d 04 41             	lea    (%ecx,%eax,2),%eax
407ed0:	50                   	push   %eax
407ed1:	8d 04 79             	lea    (%ecx,%edi,2),%eax
407ed4:	50                   	push   %eax
407ed5:	e8 a6 91 01 00       	call   0x421080
407eda:	83 c4 0c             	add    $0xc,%esp
407edd:	29 73 04             	sub    %esi,0x4(%ebx)
407ee0:	eb c1                	jmp    0x407ea3
407ee2:	8d 04 37             	lea    (%edi,%esi,1),%eax
407ee5:	3b 43 04             	cmp    0x4(%ebx),%eax
407ee8:	76 ca                	jbe    0x407eb4
407eea:	eb c3                	jmp    0x407eaf
407eec:	56                   	push   %esi
407eed:	8b f1                	mov    %ecx,%esi
407eef:	8b 4e 0c             	mov    0xc(%esi),%ecx
407ef2:	8b 01                	mov    (%ecx),%eax
407ef4:	83 f8 01             	cmp    $0x1,%eax
407ef7:	7f 0d                	jg     0x407f06
407ef9:	8b 06                	mov    (%esi),%eax
407efb:	33 c9                	xor    %ecx,%ecx
407efd:	83 66 04 00          	andl   $0x0,0x4(%esi)
407f01:	5e                   	pop    %esi
407f02:	66 89 08             	mov    %cx,(%eax)
407f05:	c3                   	ret
407f06:	48                   	dec    %eax
407f07:	6a 04                	push   $0x4
407f09:	89 01                	mov    %eax,(%ecx)
407f0b:	e8 e6 90 01 00       	call   0x420ff6
407f10:	59                   	pop    %ecx
407f11:	85 c0                	test   %eax,%eax
407f13:	74 28                	je     0x407f3d
407f15:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
407f1b:	6a 08                	push   $0x8
407f1d:	89 46 0c             	mov    %eax,0xc(%esi)
407f20:	33 c9                	xor    %ecx,%ecx
407f22:	58                   	pop    %eax
407f23:	6a 02                	push   $0x2
407f25:	5a                   	pop    %edx
407f26:	89 46 08             	mov    %eax,0x8(%esi)
407f29:	f7 e2                	mul    %edx
407f2b:	0f 90 c1             	seto   %cl
407f2e:	f7 d9                	neg    %ecx
407f30:	0b c8                	or     %eax,%ecx
407f32:	51                   	push   %ecx
407f33:	e8 6d 90 01 00       	call   0x420fa5
407f38:	59                   	pop    %ecx
407f39:	89 06                	mov    %eax,(%esi)
407f3b:	eb bc                	jmp    0x407ef9
407f3d:	33 c0                	xor    %eax,%eax
407f3f:	eb da                	jmp    0x407f1b
407f41:	55                   	push   %ebp
407f42:	8b ec                	mov    %esp,%ebp
407f44:	56                   	push   %esi
407f45:	57                   	push   %edi
407f46:	ff 75 08             	push   0x8(%ebp)
407f49:	8b f1                	mov    %ecx,%esi
407f4b:	e8 ec ae 01 00       	call   0x422e3c
407f50:	59                   	pop    %ecx
407f51:	89 46 04             	mov    %eax,0x4(%esi)
407f54:	8d 78 01             	lea    0x1(%eax),%edi
407f57:	85 ff                	test   %edi,%edi
407f59:	74 4b                	je     0x407fa6
407f5b:	8d 47 07             	lea    0x7(%edi),%eax
407f5e:	83 e0 f8             	and    $0xfffffff8,%eax
407f61:	33 c9                	xor    %ecx,%ecx
407f63:	89 46 08             	mov    %eax,0x8(%esi)
407f66:	6a 02                	push   $0x2
407f68:	5a                   	pop    %edx
407f69:	f7 e2                	mul    %edx