407a8d:	8b 4f 0c             	mov    0xc(%edi),%ecx
407a90:	8b 01                	mov    (%ecx),%eax
407a92:	83 f8 01             	cmp    $0x1,%eax
407a95:	0f 8f 32 75 03 00    	jg     0x43efcd
407a9b:	8b 47 04             	mov    0x4(%edi),%eax
407a9e:	6a 02                	push   $0x2
407aa0:	5e                   	pop    %esi
407aa1:	03 c6                	add    %esi,%eax
407aa3:	39 47 08             	cmp    %eax,0x8(%edi)
407aa6:	72 25                	jb     0x407acd
407aa8:	8b 57 04             	mov    0x4(%edi),%edx
407aab:	8b 0f                	mov    (%edi),%ecx
407aad:	66 8b 45 08          	mov    0x8(%ebp),%ax
407ab1:	66 89 04 51          	mov    %ax,(%ecx,%edx,2)
407ab5:	ff 47 04             	incl   0x4(%edi)
407ab8:	33 d2                	xor    %edx,%edx
407aba:	8b 07                	mov    (%edi),%eax
407abc:	8b 4f 04             	mov    0x4(%edi),%ecx
407abf:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
407ac3:	8b c7                	mov    %edi,%eax
407ac5:	5f                   	pop    %edi
407ac6:	5e                   	pop    %esi
407ac7:	8b e5                	mov    %ebp,%esp
407ac9:	5d                   	pop    %ebp
407aca:	c2 04 00             	ret    $0x4
407acd:	3d c2 41 00 00       	cmp    $0x41c2,%eax
407ad2:	0f 83 3b 75 03 00    	jae    0x43f013
407ad8:	03 c0                	add    %eax,%eax
407ada:	50                   	push   %eax
407adb:	89 47 08             	mov    %eax,0x8(%edi)
407ade:	e8 8d 06 00 00       	call   0x408170
407ae3:	33 c9                	xor    %ecx,%ecx
407ae5:	89 47 08             	mov    %eax,0x8(%edi)
407ae8:	f7 e6                	mul    %esi
407aea:	0f 90 c1             	seto   %cl
407aed:	f7 d9                	neg    %ecx
407aef:	0b c8                	or     %eax,%ecx
407af1:	51                   	push   %ecx
407af2:	e8 ae 94 01 00       	call   0x420fa5
407af7:	83 3f 00             	cmpl   $0x0,(%edi)
407afa:	8b f0                	mov    %eax,%esi
407afc:	59                   	pop    %ecx
407afd:	74 1d                	je     0x407b1c
407aff:	8b 4f 04             	mov    0x4(%edi),%ecx
407b02:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407b09:	51                   	push   %ecx
407b0a:	ff 37                	push   (%edi)
407b0c:	56                   	push   %esi
407b0d:	e8 6e 95 01 00       	call   0x421080
407b12:	ff 37                	push   (%edi)
407b14:	e8 97 b5 01 00       	call   0x4230b0
407b19:	83 c4 10             	add    $0x10,%esp
407b1c:	89 37                	mov    %esi,(%edi)
407b1e:	eb 88                	jmp    0x407aa8
407b20:	55                   	push   %ebp
407b21:	8b ec                	mov    %esp,%ebp
407b23:	8b 51 04             	mov    0x4(%ecx),%edx
407b26:	8b 01                	mov    (%ecx),%eax
407b28:	56                   	push   %esi
407b29:	8b 75 08             	mov    0x8(%ebp),%esi
407b2c:	3b f2                	cmp    %edx,%esi
407b2e:	73 08                	jae    0x407b38
407b30:	8d 04 70             	lea    (%eax,%esi,2),%eax
407b33:	5e                   	pop    %esi
407b34:	5d                   	pop    %ebp
407b35:	c2 04 00             	ret    $0x4
407b38:	8d 04 50             	lea    (%eax,%edx,2),%eax
407b3b:	eb f6                	jmp    0x407b33
407b3d:	56                   	push   %esi
407b3e:	8b f1                	mov    %ecx,%esi
407b40:	e8 1f df ff ff       	call   0x405a64
407b45:	56                   	push   %esi
407b46:	e8 21 95 01 00       	call   0x42106c
407b4b:	59                   	pop    %ecx
407b4c:	8b c6                	mov    %esi,%eax
407b4e:	5e                   	pop    %esi
407b4f:	c2 04 00             	ret    $0x4
407b52:	55                   	push   %ebp
407b53:	8b ec                	mov    %esp,%ebp
407b55:	56                   	push   %esi
407b56:	8b f1                	mov    %ecx,%esi
407b58:	e8 52 04 00 00       	call   0x407faf
407b5d:	8b 4e 04             	mov    0x4(%esi),%ecx
407b60:	8b 55 08             	mov    0x8(%ebp),%edx
407b63:	8b 06                	mov    (%esi),%eax
407b65:	3b d1                	cmp    %ecx,%edx
407b67:	73 08                	jae    0x407b71
407b69:	8d 04 50             	lea    (%eax,%edx,2),%eax
407b6c:	5e                   	pop    %esi
407b6d:	5d                   	pop    %ebp
407b6e:	c2 04 00             	ret    $0x4
407b71:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407b74:	eb f6                	jmp    0x407b6c
407b76:	55                   	push   %ebp
407b77:	8b ec                	mov    %esp,%ebp
407b79:	8b 45 08             	mov    0x8(%ebp),%eax
407b7c:	56                   	push   %esi
407b7d:	8b f1                	mov    %ecx,%esi
407b7f:	33 c9                	xor    %ecx,%ecx
407b81:	6a 02                	push   $0x2
407b83:	5a                   	pop    %edx
407b84:	83 66 04 00          	andl   $0x0,0x4(%esi)
407b88:	40                   	inc    %eax
407b89:	89 46 08             	mov    %eax,0x8(%esi)
407b8c:	f7 e2                	mul    %edx
407b8e:	0f 90 c1             	seto   %cl
407b91:	f7 d9                	neg    %ecx
407b93:	0b c8                	or     %eax,%ecx
407b95:	51                   	push   %ecx
407b96:	e8 5b 94 01 00       	call   0x420ff6
407b9b:	59                   	pop    %ecx
407b9c:	33 c9                	xor    %ecx,%ecx
407b9e:	89 06                	mov    %eax,(%esi)
407ba0:	66 89 08             	mov    %cx,(%eax)
407ba3:	8b ce                	mov    %esi,%ecx
407ba5:	e8 df 05 00 00       	call   0x408189
407baa:	8b c6                	mov    %esi,%eax
407bac:	5e                   	pop    %esi
407bad:	5d                   	pop    %ebp
407bae:	c2 04 00             	ret    $0x4
407bb1:	55                   	push   %ebp
407bb2:	8b ec                	mov    %esp,%ebp
407bb4:	53                   	push   %ebx
407bb5:	8b 5d 10             	mov    0x10(%ebp),%ebx
407bb8:	57                   	push   %edi
407bb9:	8b f9                	mov    %ecx,%edi
407bbb:	85 db                	test   %ebx,%ebx
407bbd:	74 63                	je     0x407c22
407bbf:	8b 55 08             	mov    0x8(%ebp),%edx
407bc2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407bc5:	3b 4a 04             	cmp    0x4(%edx),%ecx
407bc8:	73 58                	jae    0x407c22
407bca:	83 fb ff             	cmp    $0xffffffff,%ebx
407bcd:	0f 85 b0 74 03 00    	jne    0x43f083
407bd3:	8b 5a 04             	mov    0x4(%edx),%ebx
407bd6:	2b d9                	sub    %ecx,%ebx
407bd8:	8b 4f 0c             	mov    0xc(%edi),%ecx
407bdb:	56                   	push   %esi
407bdc:	33 f6                	xor    %esi,%esi
407bde:	46                   	inc    %esi
407bdf:	8b 01                	mov    (%ecx),%eax
407be1:	3b c6                	cmp    %esi,%eax
407be3:	7f 45                	jg     0x407c2a
407be5:	8b 47 04             	mov    0x4(%edi),%eax
407be8:	8b cf                	mov    %edi,%ecx
407bea:	03 c3                	add    %ebx,%eax
407bec:	50                   	push   %eax
407bed:	e8 c1 00 00 00       	call   0x407cb3
407bf2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407bf5:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
407bf8:	50                   	push   %eax
407bf9:	8b 45 08             	mov    0x8(%ebp),%eax
407bfc:	8b 00                	mov    (%eax),%eax
407bfe:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407c01:	8b 4f 04             	mov    0x4(%edi),%ecx
407c04:	50                   	push   %eax
407c05:	8b 07                	mov    (%edi),%eax
407c07:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407c0a:	50                   	push   %eax
407c0b:	e8 70 94 01 00       	call   0x421080
407c10:	01 5f 04             	add    %ebx,0x4(%edi)
407c13:	83 c4 0c             	add    $0xc,%esp
407c16:	8b 4f 04             	mov    0x4(%edi),%ecx
407c19:	33 d2                	xor    %edx,%edx
407c1b:	8b 07                	mov    (%edi),%eax
407c1d:	5e                   	pop    %esi
407c1e:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
407c22:	8b c7                	mov    %edi,%eax
407c24:	5f                   	pop    %edi
407c25:	5b                   	pop    %ebx
407c26:	5d                   	pop    %ebp
407c27:	c2 0c 00             	ret    $0xc
407c2a:	48                   	dec    %eax
407c2b:	6a 04                	push   $0x4
407c2d:	89 01                	mov    %eax,(%ecx)
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