641baf:	50                   	push   %eax
641bb0:	8b 44 24 20          	mov    0x20(%esp),%eax
641bb4:	8b 54 24 24          	mov    0x24(%esp),%edx
641bb8:	23 44 24 28          	and    0x28(%esp),%eax
641bbc:	23 54 24 2c          	and    0x2c(%esp),%edx
641bc0:	52                   	push   %edx
641bc1:	50                   	push   %eax
641bc2:	8b 44 24 28          	mov    0x28(%esp),%eax
641bc6:	8b 54 24 2c          	mov    0x2c(%esp),%edx
641bca:	f7 d0                	not    %eax
641bcc:	f7 d2                	not    %edx
641bce:	23 44 24 38          	and    0x38(%esp),%eax
641bd2:	23 54 24 3c          	and    0x3c(%esp),%edx
641bd6:	33 04 24             	xor    (%esp),%eax
641bd9:	33 54 24 04          	xor    0x4(%esp),%edx
641bdd:	83 c4 08             	add    $0x8,%esp
641be0:	03 04 24             	add    (%esp),%eax
641be3:	13 54 24 04          	adc    0x4(%esp),%edx
641be7:	83 c4 08             	add    $0x8,%esp
641bea:	05 e3 25 4f 38       	add    $0x384f25e3,%eax
641bef:	81 d2 86 47 be ef    	adc    $0xefbe4786,%edx
641bf5:	03 84 24 d8 00 00 00 	add    0xd8(%esp),%eax
641bfc:	13 94 24 dc 00 00 00 	adc    0xdc(%esp),%edx
641c03:	89 44 24 40          	mov    %eax,0x40(%esp)
641c07:	89 54 24 44          	mov    %edx,0x44(%esp)
641c0b:	8b 44 24 38          	mov    0x38(%esp),%eax
641c0f:	8b 54 24 3c          	mov    0x3c(%esp),%edx
641c13:	0f ac d0 1c          	shrd   $0x1c,%edx,%eax
641c17:	c1 ea 1c             	shr    $0x1c,%edx
641c1a:	52                   	push   %edx
641c1b:	50                   	push   %eax
641c1c:	8b 54 24 40          	mov    0x40(%esp),%edx
641c20:	c1 e2 04             	shl    $0x4,%edx
641c23:	33 c0                	xor    %eax,%eax
641c25:	0b 04 24             	or     (%esp),%eax
641c28:	0b 54 24 04          	or     0x4(%esp),%edx
641c2c:	83 c4 08             	add    $0x8,%esp
641c2f:	52                   	push   %edx
641c30:	50                   	push   %eax
641c31:	8b 44 24 44          	mov    0x44(%esp),%eax
641c35:	c1 e8 02             	shr    $0x2,%eax
641c38:	33 d2                	xor    %edx,%edx
641c3a:	52                   	push   %edx
641c3b:	50                   	push   %eax
641c3c:	8b 44 24 48          	mov    0x48(%esp),%eax
641c40:	8b 54 24 4c          	mov    0x4c(%esp),%edx
641c44:	0f a4 c2 1e          	shld   $0x1e,%eax,%edx
641c48:	c1 e0 1e             	shl    $0x1e,%eax
641c4b:	0b 04 24             	or     (%esp),%eax
641c4e:	0b 54 24 04          	or     0x4(%esp),%edx
641c52:	83 c4 08             	add    $0x8,%esp
641c55:	33 04 24             	xor    (%esp),%eax
641c58:	33 54 24 04          	xor    0x4(%esp),%edx
641c5c:	83 c4 08             	add    $0x8,%esp
641c5f:	52                   	push   %edx
641c60:	50                   	push   %eax
641c61:	8b 44 24 44          	mov    0x44(%esp),%eax
641c65:	c1 e8 07             	shr    $0x7,%eax
641c68:	33 d2                	xor    %edx,%edx
641c6a:	52                   	push   %edx
641c6b:	50                   	push   %eax
641c6c:	8b 44 24 48          	mov    0x48(%esp),%eax
641c70:	8b 54 24 4c          	mov    0x4c(%esp),%edx
641c74:	0f a4 c2 19          	shld   $0x19,%eax,%edx
641c78:	c1 e0 19             	shl    $0x19,%eax
641c7b:	0b 04 24             	or     (%esp),%eax
641c7e:	0b 54 24 04          	or     0x4(%esp),%edx
641c82:	83 c4 08             	add    $0x8,%esp
641c85:	33 04 24             	xor    (%esp),%eax
641c88:	33 54 24 04          	xor    0x4(%esp),%edx
641c8c:	83 c4 08             	add    $0x8,%esp
641c8f:	52                   	push   %edx
641c90:	50                   	push   %eax
641c91:	8b 44 24 40          	mov    0x40(%esp),%eax
641c95:	8b 54 24 44          	mov    0x44(%esp),%edx
641c99:	23 44 24 08          	and    0x8(%esp),%eax
641c9d:	23 54 24 0c          	and    0xc(%esp),%edx
641ca1:	52                   	push   %edx
641ca2:	50                   	push   %eax
641ca3:	8b 44 24 48          	mov    0x48(%esp),%eax
641ca7:	8b 54 24 4c          	mov    0x4c(%esp),%edx
641cab:	23 44 24 18          	and    0x18(%esp),%eax
641caf:	23 54 24 1c          	and    0x1c(%esp),%edx
641cb3:	33 04 24             	xor    (%esp),%eax
641cb6:	33 54 24 04          	xor    0x4(%esp),%edx
641cba:	83 c4 08             	add    $0x8,%esp
641cbd:	52                   	push   %edx
641cbe:	50                   	push   %eax
641cbf:	8b 44 24 10          	mov    0x10(%esp),%eax
641cc3:	8b 54 24 14          	mov    0x14(%esp),%edx
641cc7:	23 44 24 18          	and    0x18(%esp),%eax
641ccb:	23 54 24 1c          	and    0x1c(%esp),%edx
641ccf:	33 04 24             	xor    (%esp),%eax
641cd2:	33 54 24 04          	xor    0x4(%esp),%edx
641cd6:	83 c4 08             	add    $0x8,%esp
641cd9:	03 04 24             	add    (%esp),%eax
641cdc:	13 54 24 04          	adc    0x4(%esp),%edx
641ce0:	83 c4 08             	add    $0x8,%esp
641ce3:	89 44 24 48          	mov    %eax,0x48(%esp)
641ce7:	89 54 24 4c          	mov    %edx,0x4c(%esp)
641ceb:	8b 44 24 10          	mov    0x10(%esp),%eax
641cef:	8b 54 24 14          	mov    0x14(%esp),%edx
641cf3:	03 44 24 40          	add    0x40(%esp),%eax
641cf7:	13 54 24 44          	adc    0x44(%esp),%edx
641cfb:	89 44 24 10          	mov    %eax,0x10(%esp)
641cff:	89 54 24 14          	mov    %edx,0x14(%esp)
641d03:	8b 44 24 40          	mov    0x40(%esp),%eax
641d07:	8b 54 24 44          	mov    0x44(%esp),%edx
641d0b:	03 44 24 48          	add    0x48(%esp),%eax
641d0f:	13 54 24 4c          	adc    0x4c(%esp),%edx
641d13:	89 44 24 30          	mov    %eax,0x30(%esp)
641d17:	89 54 24 34          	mov    %edx,0x34(%esp)
641d1b:	8b 44 24 10          	mov    0x10(%esp),%eax
641d1f:	8b 54 24 14          	mov    0x14(%esp),%edx
641d23:	0f ac d0 0e          	shrd   $0xe,%edx,%eax
641d27:	c1 ea 0e             	shr    $0xe,%edx
641d2a:	52                   	push   %edx
641d2b:	50                   	push   %eax
641d2c:	8b 54 24 18          	mov    0x18(%esp),%edx
641d30:	c1 e2 12             	shl    $0x12,%edx
641d33:	33 c0                	xor    %eax,%eax
641d35:	0b 04 24             	or     (%esp),%eax
641d38:	0b 54 24 04          	or     0x4(%esp),%edx
641d3c:	83 c4 08             	add    $0x8,%esp
641d3f:	52                   	push   %edx
641d40:	50                   	push   %eax
641d41:	8b 44 24 18          	mov    0x18(%esp),%eax
641d45:	8b 54 24 1c          	mov    0x1c(%esp),%edx
641d49:	0f ac d0 12          	shrd   $0x12,%edx,%eax
641d4d:	c1 ea 12             	shr    $0x12,%edx
641d50:	52                   	push   %edx
641d51:	50                   	push   %eax
641d52:	8b 54 24 20          	mov    0x20(%esp),%edx
641d56:	c1 e2 0e             	shl    $0xe,%edx
641d59:	33 c0                	xor    %eax,%eax
641d5b:	0b 04 24             	or     (%esp),%eax
641d5e:	0b 54 24 04          	or     0x4(%esp),%edx
641d62:	83 c4 08             	add    $0x8,%esp
641d65:	33 04 24             	xor    (%esp),%eax
641d68:	33 54 24 04          	xor    0x4(%esp),%edx
641d6c:	83 c4 08             	add    $0x8,%esp
641d6f:	52                   	push   %edx
641d70:	50                   	push   %eax
641d71:	8b 44 24 1c          	mov    0x1c(%esp),%eax
641d75:	c1 e8 09             	shr    $0x9,%eax
641d78:	33 d2                	xor    %edx,%edx
641d7a:	52                   	push   %edx
641d7b:	50                   	push   %eax
641d7c:	8b 44 24 20          	mov    0x20(%esp),%eax
641d80:	8b 54 24 24          	mov    0x24(%esp),%edx
641d84:	0f a4 c2 17          	shld   $0x17,%eax,%edx
641d88:	c1 e0 17             	shl    $0x17,%eax
641d8b:	0b 04 24             	or     (%esp),%eax
641d8e:	0b 54 24 04          	or     0x4(%esp),%edx
641d92:	83 c4 08             	add    $0x8,%esp
641d95:	33 04 24             	xor    (%esp),%eax
641d98:	33 54 24 04          	xor    0x4(%esp),%edx
641d9c:	83 c4 08             	add    $0x8,%esp
641d9f:	03 44 24 28          	add    0x28(%esp),%eax
641da3:	13 54 24 2c          	adc    0x2c(%esp),%edx
641da7:	52                   	push   %edx
641da8:	50                   	push   %eax
641da9:	8b 44 24 18          	mov    0x18(%esp),%eax
641dad:	8b 54 24 1c          	mov    0x1c(%esp),%edx
641db1:	23 44 24 20          	and    0x20(%esp),%eax
641db5:	23 54 24 24          	and    0x24(%esp),%edx
641db9:	52                   	push   %edx
641dba:	50                   	push   %eax
641dbb:	8b 44 24 20          	mov    0x20(%esp),%eax
641dbf:	8b 54 24 24          	mov    0x24(%esp),%edx
641dc3:	f7 d0                	not    %eax
641dc5:	f7 d2                	not    %edx
641dc7:	23 44 24 30          	and    0x30(%esp),%eax
641dcb:	23 54 24 34          	and    0x34(%esp),%edx
641dcf:	33 04 24             	xor    (%esp),%eax
641dd2:	33 54 24 04          	xor    0x4(%esp),%edx
641dd6:	83 c4 08             	add    $0x8,%esp
641dd9:	03 04 24             	add    (%esp),%eax
641ddc:	13 54 24 04          	adc    0x4(%esp),%edx
641de0:	83 c4 08             	add    $0x8,%esp
641de3:	05 b5 d5 8c 8b       	add    $0x8b8cd5b5,%eax
641de8:	81 d2 c6 9d c1 0f    	adc    $0xfc19dc6,%edx
641dee:	03 84 24 e0 00 00 00 	add    0xe0(%esp),%eax
641df5:	13 94 24 e4 00 00 00 	adc    0xe4(%esp),%edx
641dfc:	89 44 24 40          	mov    %eax,0x40(%esp)
641e00:	89 54 24 44          	mov    %edx,0x44(%esp)
641e04:	8b 44 24 30          	mov    0x30(%esp),%eax
641e08:	8b 54 24 34          	mov    0x34(%esp),%edx
641e0c:	0f ac d0 1c          	shrd   $0x1c,%edx,%eax
641e10:	c1 ea 1c             	shr    $0x1c,%edx
641e13:	52                   	push   %edx
641e14:	50                   	push   %eax
641e15:	8b 54 24 38          	mov    0x38(%esp),%edx
641e19:	c1 e2 04             	shl    $0x4,%edx
641e1c:	33 c0                	xor    %eax,%eax
641e1e:	0b 04 24             	or     (%esp),%eax
641e21:	0b 54 24 04          	or     0x4(%esp),%edx
641e25:	83 c4 08             	add    $0x8,%esp
641e28:	52                   	push   %edx
641e29:	50                   	push   %eax
641e2a:	8b 44 24 3c          	mov    0x3c(%esp),%eax
641e2e:	c1 e8 02             	shr    $0x2,%eax
641e31:	33 d2                	xor    %edx,%edx
641e33:	52                   	push   %edx
641e34:	50                   	push   %eax
641e35:	8b 44 24 40          	mov    0x40(%esp),%eax
641e39:	8b 54 24 44          	mov    0x44(%esp),%edx
641e3d:	0f a4 c2 1e          	shld   $0x1e,%eax,%edx
641e41:	c1 e0 1e             	shl    $0x1e,%eax
641e44:	0b 04 24             	or     (%esp),%eax
641e47:	0b 54 24 04          	or     0x4(%esp),%edx
641e4b:	83 c4 08             	add    $0x8,%esp
641e4e:	33 04 24             	xor    (%esp),%eax
641e51:	33 54 24 04          	xor    0x4(%esp),%edx
641e55:	83 c4 08             	add    $0x8,%esp
641e58:	52                   	push   %edx
641e59:	50                   	push   %eax
641e5a:	8b 44 24 3c          	mov    0x3c(%esp),%eax
641e5e:	c1 e8 07             	shr    $0x7,%eax
641e61:	33 d2                	xor    %edx,%edx
641e63:	52                   	push   %edx
641e64:	50                   	push   %eax
641e65:	8b 44 24 40          	mov    0x40(%esp),%eax
641e69:	8b 54 24 44          	mov    0x44(%esp),%edx
641e6d:	0f a4 c2 19          	shld   $0x19,%eax,%edx
641e71:	c1 e0 19             	shl    $0x19,%eax
641e74:	0b 04 24             	or     (%esp),%eax
641e77:	0b 54 24 04          	or     0x4(%esp),%edx
641e7b:	83 c4 08             	add    $0x8,%esp
641e7e:	33 04 24             	xor    (%esp),%eax
641e81:	33 54 24 04          	xor    0x4(%esp),%edx
641e85:	83 c4 08             	add    $0x8,%esp
641e88:	52                   	push   %edx
641e89:	50                   	push   %eax
641e8a:	8b 44 24 38          	mov    0x38(%esp),%eax
641e8e:	8b 54 24 3c          	mov    0x3c(%esp),%edx
641e92:	23 44 24 40          	and    0x40(%esp),%eax
641e96:	23 54 24 44          	and    0x44(%esp),%edx
641e9a:	52                   	push   %edx
641e9b:	50                   	push   %eax
641e9c:	8b 44 24 40          	mov    0x40(%esp),%eax
641ea0:	8b 54 24 44          	mov    0x44(%esp),%edx
641ea4:	23 44 24 10          	and    0x10(%esp),%eax
641ea8:	23 54 24 14          	and    0x14(%esp),%edx
641eac:	33 04 24             	xor    (%esp),%eax
641eaf:	33 54 24 04          	xor    0x4(%esp),%edx
641eb3:	83 c4 08             	add    $0x8,%esp
641eb6:	52                   	push   %edx
641eb7:	50                   	push   %eax
641eb8:	8b 44 24 48          	mov    0x48(%esp),%eax
641ebc:	8b 54 24 4c          	mov    0x4c(%esp),%edx
641ec0:	23 44 24 10          	and    0x10(%esp),%eax
641ec4:	23 54 24 14          	and    0x14(%esp),%edx
641ec8:	33 04 24             	xor    (%esp),%eax
641ecb:	33 54 24 04          	xor    0x4(%esp),%edx
641ecf:	83 c4 08             	add    $0x8,%esp
641ed2:	03 04 24             	add    (%esp),%eax
641ed5:	13 54 24 04          	adc    0x4(%esp),%edx
641ed9:	83 c4 08             	add    $0x8,%esp
641edc:	89 44 24 48          	mov    %eax,0x48(%esp)
641ee0:	89 54 24 4c          	mov    %edx,0x4c(%esp)
641ee4:	8b 44 24 08          	mov    0x8(%esp),%eax
641ee8:	8b 54 24 0c          	mov    0xc(%esp),%edx
641eec:	03 44 24 40          	add    0x40(%esp),%eax
641ef0:	13 54 24 44          	adc    0x44(%esp),%edx
641ef4:	89 44 24 08          	mov    %eax,0x8(%esp)
641ef8:	89 54 24 0c          	mov    %edx,0xc(%esp)
641efc:	8b 44 24 40          	mov    0x40(%esp),%eax
641f00:	8b 54 24 44          	mov    0x44(%esp),%edx
641f04:	03 44 24 48          	add    0x48(%esp),%eax
641f08:	13 54 24 4c          	adc    0x4c(%esp),%edx
641f0c:	89 44 24 28          	mov    %eax,0x28(%esp)
641f10:	89 54 24 2c          	mov    %edx,0x2c(%esp)
641f14:	8b 44 24 08          	mov    0x8(%esp),%eax
641f18:	8b 54 24 0c          	mov    0xc(%esp),%edx
641f1c:	0f ac d0 0e          	shrd   $0xe,%edx,%eax
641f20:	c1 ea 0e             	shr    $0xe,%edx
641f23:	52                   	push   %edx
641f24:	50                   	push   %eax
641f25:	8b 54 24 10          	mov    0x10(%esp),%edx
641f29:	c1 e2 12             	shl    $0x12,%edx
641f2c:	33 c0                	xor    %eax,%eax
641f2e:	0b 04 24             	or     (%esp),%eax
641f31:	0b 54 24 04          	or     0x4(%esp),%edx
641f35:	83 c4 08             	add    $0x8,%esp
641f38:	52                   	push   %edx
641f39:	50                   	push   %eax
641f3a:	8b 44 24 10          	mov    0x10(%esp),%eax
641f3e:	8b 54 24 14          	mov    0x14(%esp),%edx
641f42:	0f ac d0 12          	shrd   $0x12,%edx,%eax
641f46:	c1 ea 12             	shr    $0x12,%edx
641f49:	52                   	push   %edx
641f4a:	50                   	push   %eax
641f4b:	8b 54 24 18          	mov    0x18(%esp),%edx
641f4f:	c1 e2 0e             	shl    $0xe,%edx
641f52:	33 c0                	xor    %eax,%eax
641f54:	0b 04 24             	or     (%esp),%eax
641f57:	0b 54 24 04          	or     0x4(%esp),%edx
641f5b:	83 c4 08             	add    $0x8,%esp
641f5e:	33 04 24             	xor    (%esp),%eax
641f61:	33 54 24 04          	xor    0x4(%esp),%edx
641f65:	83 c4 08             	add    $0x8,%esp
641f68:	52                   	push   %edx
641f69:	50                   	push   %eax
641f6a:	8b 44 24 14          	mov    0x14(%esp),%eax
641f6e:	c1 e8 09             	shr    $0x9,%eax
641f71:	33 d2                	xor    %edx,%edx
641f73:	52                   	push   %edx
641f74:	50                   	push   %eax
641f75:	8b 44 24 18          	mov    0x18(%esp),%eax
641f79:	8b 54 24 1c          	mov    0x1c(%esp),%edx
641f7d:	0f a4 c2 17          	shld   $0x17,%eax,%edx
641f81:	c1 e0 17             	shl    $0x17,%eax
641f84:	0b 04 24             	or     (%esp),%eax
641f87:	0b 54 24 04          	or     0x4(%esp),%edx
641f8b:	83 c4 08             	add    $0x8,%esp
641f8e:	33 04 24             	xor    (%esp),%eax
641f91:	33 54 24 04          	xor    0x4(%esp),%edx
641f95:	83 c4 08             	add    $0x8,%esp
641f98:	03 44 24 20          	add    0x20(%esp),%eax
641f9c:	13 54 24 24          	adc    0x24(%esp),%edx
641fa0:	52                   	push   %edx
641fa1:	50                   	push   %eax
641fa2:	8b 44 24 10          	mov    0x10(%esp),%eax
641fa6:	8b 54 24 14          	mov    0x14(%esp),%edx
641faa:	23 44 24 18          	and    0x18(%esp),%eax
641fae:	23 54 24 1c          	and    0x1c(%esp),%edx
641fb2:	52                   	push   %edx
641fb3:	50                   	push   %eax
641fb4:	8b 44 24 18          	mov    0x18(%esp),%eax
641fb8:	8b 54 24 1c          	mov    0x1c(%esp),%edx
641fbc:	f7 d0                	not    %eax
641fbe:	f7 d2                	not    %edx
641fc0:	23 44 24 28          	and    0x28(%esp),%eax
641fc4:	23 54 24 2c          	and    0x2c(%esp),%edx
641fc8:	33 04 24             	xor    (%esp),%eax
641fcb:	33 54 24 04          	xor    0x4(%esp),%edx
641fcf:	83 c4 08             	add    $0x8,%esp
641fd2:	03 04 24             	add    (%esp),%eax
641fd5:	13 54 24 04          	adc    0x4(%esp),%edx
641fd9:	83 c4 08             	add    $0x8,%esp
641fdc:	05 65 9c ac 77       	add    $0x77ac9c65,%eax
641fe1:	81 d2 cc a1 0c 24    	adc    $0x240ca1cc,%edx
641fe7:	03 84 24 e8 00 00 00 	add    0xe8(%esp),%eax
641fee:	13 94 24 ec 00 00 00 	adc    0xec(%esp),%edx
641ff5:	89 44 24 40          	mov    %eax,0x40(%esp)
641ff9:	89 54 24 44          	mov    %edx,0x44(%esp)
641ffd:	8b 44 24 28          	mov    0x28(%esp),%eax
642001:	8b 54 24 2c          	mov    0x2c(%esp),%edx
642005:	0f ac d0 1c          	shrd   $0x1c,%edx,%eax