644ac8:	50                   	push   %eax
644ac9:	8b 44 24 28          	mov    0x28(%esp),%eax
644acd:	8b 54 24 2c          	mov    0x2c(%esp),%edx
644ad1:	0f a4 c2 17          	shld   $0x17,%eax,%edx
644ad5:	c1 e0 17             	shl    $0x17,%eax
644ad8:	0b 04 24             	or     (%esp),%eax
644adb:	0b 54 24 04          	or     0x4(%esp),%edx
644adf:	83 c4 08             	add    $0x8,%esp
644ae2:	33 04 24             	xor    (%esp),%eax
644ae5:	33 54 24 04          	xor    0x4(%esp),%edx
644ae9:	83 c4 08             	add    $0x8,%esp
644aec:	03 44 24 30          	add    0x30(%esp),%eax
644af0:	13 54 24 34          	adc    0x34(%esp),%edx
644af4:	52                   	push   %edx
644af5:	50                   	push   %eax
644af6:	8b 44 24 20          	mov    0x20(%esp),%eax
644afa:	8b 54 24 24          	mov    0x24(%esp),%edx
644afe:	23 44 24 28          	and    0x28(%esp),%eax
644b02:	23 54 24 2c          	and    0x2c(%esp),%edx
644b06:	52                   	push   %edx
644b07:	50                   	push   %eax
644b08:	8b 44 24 28          	mov    0x28(%esp),%eax
644b0c:	8b 54 24 2c          	mov    0x2c(%esp),%edx
644b10:	f7 d0                	not    %eax
644b12:	f7 d2                	not    %edx
644b14:	23 44 24 38          	and    0x38(%esp),%eax
644b18:	23 54 24 3c          	and    0x3c(%esp),%edx
644b1c:	33 04 24             	xor    (%esp),%eax
644b1f:	33 54 24 04          	xor    0x4(%esp),%edx
644b23:	83 c4 08             	add    $0x8,%esp
644b26:	03 04 24             	add    (%esp),%eax
644b29:	13 54 24 04          	adc    0x4(%esp),%edx
644b2d:	83 c4 08             	add    $0x8,%esp
644b30:	05 01 30 42 bc       	add    $0xbc423001,%eax
644b35:	81 d2 4b 66 1a a8    	adc    $0xa81a664b,%edx
644b3b:	03 84 24 98 01 00 00 	add    0x198(%esp),%eax
644b42:	13 94 24 9c 01 00 00 	adc    0x19c(%esp),%edx
644b49:	89 44 24 40          	mov    %eax,0x40(%esp)
644b4d:	89 54 24 44          	mov    %edx,0x44(%esp)
644b51:	8b 44 24 38          	mov    0x38(%esp),%eax
644b55:	8b 54 24 3c          	mov    0x3c(%esp),%edx
644b59:	0f ac d0 1c          	shrd   $0x1c,%edx,%eax
644b5d:	c1 ea 1c             	shr    $0x1c,%edx
644b60:	52                   	push   %edx
644b61:	50                   	push   %eax
644b62:	8b 54 24 40          	mov    0x40(%esp),%edx
644b66:	c1 e2 04             	shl    $0x4,%edx
644b69:	33 c0                	xor    %eax,%eax
644b6b:	0b 04 24             	or     (%esp),%eax
644b6e:	0b 54 24 04          	or     0x4(%esp),%edx
644b72:	83 c4 08             	add    $0x8,%esp
644b75:	52                   	push   %edx
644b76:	50                   	push   %eax
644b77:	8b 44 24 44          	mov    0x44(%esp),%eax
644b7b:	c1 e8 02             	shr    $0x2,%eax
644b7e:	33 d2                	xor    %edx,%edx
644b80:	52                   	push   %edx
644b81:	50                   	push   %eax
644b82:	8b 44 24 48          	mov    0x48(%esp),%eax
644b86:	8b 54 24 4c          	mov    0x4c(%esp),%edx
644b8a:	0f a4 c2 1e          	shld   $0x1e,%eax,%edx
644b8e:	c1 e0 1e             	shl    $0x1e,%eax
644b91:	0b 04 24             	or     (%esp),%eax
644b94:	0b 54 24 04          	or     0x4(%esp),%edx
644b98:	83 c4 08             	add    $0x8,%esp
644b9b:	33 04 24             	xor    (%esp),%eax
644b9e:	33 54 24 04          	xor    0x4(%esp),%edx
644ba2:	83 c4 08             	add    $0x8,%esp
644ba5:	52                   	push   %edx
644ba6:	50                   	push   %eax
644ba7:	8b 44 24 44          	mov    0x44(%esp),%eax
644bab:	c1 e8 07             	shr    $0x7,%eax
644bae:	33 d2                	xor    %edx,%edx
644bb0:	52                   	push   %edx
644bb1:	50                   	push   %eax
644bb2:	8b 44 24 48          	mov    0x48(%esp),%eax
644bb6:	8b 54 24 4c          	mov    0x4c(%esp),%edx
644bba:	0f a4 c2 19          	shld   $0x19,%eax,%edx
644bbe:	c1 e0 19             	shl    $0x19,%eax
644bc1:	0b 04 24             	or     (%esp),%eax
644bc4:	0b 54 24 04          	or     0x4(%esp),%edx
644bc8:	83 c4 08             	add    $0x8,%esp
644bcb:	33 04 24             	xor    (%esp),%eax
644bce:	33 54 24 04          	xor    0x4(%esp),%edx
644bd2:	83 c4 08             	add    $0x8,%esp
644bd5:	52                   	push   %edx
644bd6:	50                   	push   %eax
644bd7:	8b 44 24 40          	mov    0x40(%esp),%eax
644bdb:	8b 54 24 44          	mov    0x44(%esp),%edx
644bdf:	23 44 24 08          	and    0x8(%esp),%eax
644be3:	23 54 24 0c          	and    0xc(%esp),%edx
644be7:	52                   	push   %edx
644be8:	50                   	push   %eax
644be9:	8b 44 24 48          	mov    0x48(%esp),%eax
644bed:	8b 54 24 4c          	mov    0x4c(%esp),%edx
644bf1:	23 44 24 18          	and    0x18(%esp),%eax
644bf5:	23 54 24 1c          	and    0x1c(%esp),%edx
644bf9:	33 04 24             	xor    (%esp),%eax
644bfc:	33 54 24 04          	xor    0x4(%esp),%edx
644c00:	83 c4 08             	add    $0x8,%esp
644c03:	52                   	push   %edx
644c04:	50                   	push   %eax
644c05:	8b 44 24 10          	mov    0x10(%esp),%eax
644c09:	8b 54 24 14          	mov    0x14(%esp),%edx
644c0d:	23 44 24 18          	and    0x18(%esp),%eax
644c11:	23 54 24 1c          	and    0x1c(%esp),%edx
644c15:	33 04 24             	xor    (%esp),%eax
644c18:	33 54 24 04          	xor    0x4(%esp),%edx
644c1c:	83 c4 08             	add    $0x8,%esp
644c1f:	03 04 24             	add    (%esp),%eax
644c22:	13 54 24 04          	adc    0x4(%esp),%edx
644c26:	83 c4 08             	add    $0x8,%esp
644c29:	89 44 24 48          	mov    %eax,0x48(%esp)
644c2d:	89 54 24 4c          	mov    %edx,0x4c(%esp)
644c31:	8b 44 24 10          	mov    0x10(%esp),%eax
644c35:	8b 54 24 14          	mov    0x14(%esp),%edx
644c39:	03 44 24 40          	add    0x40(%esp),%eax
644c3d:	13 54 24 44          	adc    0x44(%esp),%edx
644c41:	89 44 24 10          	mov    %eax,0x10(%esp)
644c45:	89 54 24 14          	mov    %edx,0x14(%esp)
644c49:	8b 44 24 40          	mov    0x40(%esp),%eax
644c4d:	8b 54 24 44          	mov    0x44(%esp),%edx
644c51:	03 44 24 48          	add    0x48(%esp),%eax
644c55:	13 54 24 4c          	adc    0x4c(%esp),%edx
644c59:	89 44 24 30          	mov    %eax,0x30(%esp)
644c5d:	89 54 24 34          	mov    %edx,0x34(%esp)
644c61:	8b 44 24 10          	mov    0x10(%esp),%eax
644c65:	8b 54 24 14          	mov    0x14(%esp),%edx
644c69:	0f ac d0 0e          	shrd   $0xe,%edx,%eax
644c6d:	c1 ea 0e             	shr    $0xe,%edx
644c70:	52                   	push   %edx
644c71:	50                   	push   %eax
644c72:	8b 54 24 18          	mov    0x18(%esp),%edx
644c76:	c1 e2 12             	shl    $0x12,%edx
644c79:	33 c0                	xor    %eax,%eax
644c7b:	0b 04 24             	or     (%esp),%eax
644c7e:	0b 54 24 04          	or     0x4(%esp),%edx
644c82:	83 c4 08             	add    $0x8,%esp
644c85:	52                   	push   %edx
644c86:	50                   	push   %eax
644c87:	8b 44 24 18          	mov    0x18(%esp),%eax
644c8b:	8b 54 24 1c          	mov    0x1c(%esp),%edx
644c8f:	0f ac d0 12          	shrd   $0x12,%edx,%eax
644c93:	c1 ea 12             	shr    $0x12,%edx
644c96:	52                   	push   %edx
644c97:	50                   	push   %eax
644c98:	8b 54 24 20          	mov    0x20(%esp),%edx
644c9c:	c1 e2 0e             	shl    $0xe,%edx
644c9f:	33 c0                	xor    %eax,%eax
644ca1:	0b 04 24             	or     (%esp),%eax
644ca4:	0b 54 24 04          	or     0x4(%esp),%edx
644ca8:	83 c4 08             	add    $0x8,%esp
644cab:	33 04 24             	xor    (%esp),%eax
644cae:	33 54 24 04          	xor    0x4(%esp),%edx
644cb2:	83 c4 08             	add    $0x8,%esp
644cb5:	52                   	push   %edx
644cb6:	50                   	push   %eax
644cb7:	8b 44 24 1c          	mov    0x1c(%esp),%eax
644cbb:	c1 e8 09             	shr    $0x9,%eax
644cbe:	33 d2                	xor    %edx,%edx
644cc0:	52                   	push   %edx
644cc1:	50                   	push   %eax
644cc2:	8b 44 24 20          	mov    0x20(%esp),%eax
644cc6:	8b 54 24 24          	mov    0x24(%esp),%edx
644cca:	0f a4 c2 17          	shld   $0x17,%eax,%edx
644cce:	c1 e0 17             	shl    $0x17,%eax
644cd1:	0b 04 24             	or     (%esp),%eax
644cd4:	0b 54 24 04          	or     0x4(%esp),%edx
644cd8:	83 c4 08             	add    $0x8,%esp
644cdb:	33 04 24             	xor    (%esp),%eax
644cde:	33 54 24 04          	xor    0x4(%esp),%edx
644ce2:	83 c4 08             	add    $0x8,%esp
644ce5:	03 44 24 28          	add    0x28(%esp),%eax
644ce9:	13 54 24 2c          	adc    0x2c(%esp),%edx
644ced:	52                   	push   %edx
644cee:	50                   	push   %eax
644cef:	8b 44 24 18          	mov    0x18(%esp),%eax
644cf3:	8b 54 24 1c          	mov    0x1c(%esp),%edx
644cf7:	23 44 24 20          	and    0x20(%esp),%eax
644cfb:	23 54 24 24          	and    0x24(%esp),%edx
644cff:	52                   	push   %edx
644d00:	50                   	push   %eax
644d01:	8b 44 24 20          	mov    0x20(%esp),%eax
644d05:	8b 54 24 24          	mov    0x24(%esp),%edx
644d09:	f7 d0                	not    %eax
644d0b:	f7 d2                	not    %edx
644d0d:	23 44 24 30          	and    0x30(%esp),%eax
644d11:	23 54 24 34          	and    0x34(%esp),%edx
644d15:	33 04 24             	xor    (%esp),%eax
644d18:	33 54 24 04          	xor    0x4(%esp),%edx
644d1c:	83 c4 08             	add    $0x8,%esp
644d1f:	03 04 24             	add    (%esp),%eax
644d22:	13 54 24 04          	adc    0x4(%esp),%edx
644d26:	83 c4 08             	add    $0x8,%esp
644d29:	05 91 97 f8 d0       	add    $0xd0f89791,%eax
644d2e:	81 d2 70 8b 4b c2    	adc    $0xc24b8b70,%edx
644d34:	03 84 24 a0 01 00 00 	add    0x1a0(%esp),%eax
644d3b:	13 94 24 a4 01 00 00 	adc    0x1a4(%esp),%edx
644d42:	89 44 24 40          	mov    %eax,0x40(%esp)
644d46:	89 54 24 44          	mov    %edx,0x44(%esp)
644d4a:	8b 44 24 30          	mov    0x30(%esp),%eax
644d4e:	8b 54 24 34          	mov    0x34(%esp),%edx
644d52:	0f ac d0 1c          	shrd   $0x1c,%edx,%eax
644d56:	c1 ea 1c             	shr    $0x1c,%edx
644d59:	52                   	push   %edx
644d5a:	50                   	push   %eax
644d5b:	8b 54 24 38          	mov    0x38(%esp),%edx
644d5f:	c1 e2 04             	shl    $0x4,%edx
644d62:	33 c0                	xor    %eax,%eax
644d64:	0b 04 24             	or     (%esp),%eax
644d67:	0b 54 24 04          	or     0x4(%esp),%edx
644d6b:	83 c4 08             	add    $0x8,%esp
644d6e:	52                   	push   %edx
644d6f:	50                   	push   %eax
644d70:	8b 44 24 3c          	mov    0x3c(%esp),%eax
644d74:	c1 e8 02             	shr    $0x2,%eax
644d77:	33 d2                	xor    %edx,%edx
644d79:	52                   	push   %edx
644d7a:	50                   	push   %eax
644d7b:	8b 44 24 40          	mov    0x40(%esp),%eax
644d7f:	8b 54 24 44          	mov    0x44(%esp),%edx
644d83:	0f a4 c2 1e          	shld   $0x1e,%eax,%edx
644d87:	c1 e0 1e             	shl    $0x1e,%eax
644d8a:	0b 04 24             	or     (%esp),%eax
644d8d:	0b 54 24 04          	or     0x4(%esp),%edx
644d91:	83 c4 08             	add    $0x8,%esp
644d94:	33 04 24             	xor    (%esp),%eax
644d97:	33 54 24 04          	xor    0x4(%esp),%edx
644d9b:	83 c4 08             	add    $0x8,%esp
644d9e:	52                   	push   %edx
644d9f:	50                   	push   %eax
644da0:	8b 44 24 3c          	mov    0x3c(%esp),%eax
644da4:	c1 e8 07             	shr    $0x7,%eax
644da7:	33 d2                	xor    %edx,%edx
644da9:	52                   	push   %edx
644daa:	50                   	push   %eax
644dab:	8b 44 24 40          	mov    0x40(%esp),%eax
644daf:	8b 54 24 44          	mov    0x44(%esp),%edx
644db3:	0f a4 c2 19          	shld   $0x19,%eax,%edx
644db7:	c1 e0 19             	shl    $0x19,%eax
644dba:	0b 04 24             	or     (%esp),%eax
644dbd:	0b 54 24 04          	or     0x4(%esp),%edx
644dc1:	83 c4 08             	add    $0x8,%esp
644dc4:	33 04 24             	xor    (%esp),%eax
644dc7:	33 54 24 04          	xor    0x4(%esp),%edx
644dcb:	83 c4 08             	add    $0x8,%esp
644dce:	52                   	push   %edx
644dcf:	50                   	push   %eax
644dd0:	8b 44 24 38          	mov    0x38(%esp),%eax
644dd4:	8b 54 24 3c          	mov    0x3c(%esp),%edx
644dd8:	23 44 24 40          	and    0x40(%esp),%eax
644ddc:	23 54 24 44          	and    0x44(%esp),%edx
644de0:	52                   	push   %edx
644de1:	50                   	push   %eax
644de2:	8b 44 24 40          	mov    0x40(%esp),%eax
644de6:	8b 54 24 44          	mov    0x44(%esp),%edx
644dea:	23 44 24 10          	and    0x10(%esp),%eax
644dee:	23 54 24 14          	and    0x14(%esp),%edx
644df2:	33 04 24             	xor    (%esp),%eax
644df5:	33 54 24 04          	xor    0x4(%esp),%edx
644df9:	83 c4 08             	add    $0x8,%esp
644dfc:	52                   	push   %edx
644dfd:	50                   	push   %eax
644dfe:	8b 44 24 48          	mov    0x48(%esp),%eax
644e02:	8b 54 24 4c          	mov    0x4c(%esp),%edx
644e06:	23 44 24 10          	and    0x10(%esp),%eax
644e0a:	23 54 24 14          	and    0x14(%esp),%edx
644e0e:	33 04 24             	xor    (%esp),%eax
644e11:	33 54 24 04          	xor    0x4(%esp),%edx
644e15:	83 c4 08             	add    $0x8,%esp
644e18:	03 04 24             	add    (%esp),%eax
644e1b:	13 54 24 04          	adc    0x4(%esp),%edx
644e1f:	83 c4 08             	add    $0x8,%esp
644e22:	89 44 24 48          	mov    %eax,0x48(%esp)
644e26:	89 54 24 4c          	mov    %edx,0x4c(%esp)
644e2a:	8b 44 24 08          	mov    0x8(%esp),%eax
644e2e:	8b 54 24 0c          	mov    0xc(%esp),%edx
644e32:	03 44 24 40          	add    0x40(%esp),%eax
644e36:	13 54 24 44          	adc    0x44(%esp),%edx
644e3a:	89 44 24 08          	mov    %eax,0x8(%esp)
644e3e:	89 54 24 0c          	mov    %edx,0xc(%esp)
644e42:	8b 44 24 40          	mov    0x40(%esp),%eax
644e46:	8b 54 24 44          	mov    0x44(%esp),%edx
644e4a:	03 44 24 48          	add    0x48(%esp),%eax
644e4e:	13 54 24 4c          	adc    0x4c(%esp),%edx
644e52:	89 44 24 28          	mov    %eax,0x28(%esp)
644e56:	89 54 24 2c          	mov    %edx,0x2c(%esp)
644e5a:	8b 44 24 08          	mov    0x8(%esp),%eax
644e5e:	8b 54 24 0c          	mov    0xc(%esp),%edx
644e62:	0f ac d0 0e          	shrd   $0xe,%edx,%eax
644e66:	c1 ea 0e             	shr    $0xe,%edx
644e69:	52                   	push   %edx
644e6a:	50                   	push   %eax
644e6b:	8b 54 24 10          	mov    0x10(%esp),%edx
644e6f:	c1 e2 12             	shl    $0x12,%edx
644e72:	33 c0                	xor    %eax,%eax
644e74:	0b 04 24             	or     (%esp),%eax
644e77:	0b 54 24 04          	or     0x4(%esp),%edx
644e7b:	83 c4 08             	add    $0x8,%esp
644e7e:	52                   	push   %edx
644e7f:	50                   	push   %eax
644e80:	8b 44 24 10          	mov    0x10(%esp),%eax
644e84:	8b 54 24 14          	mov    0x14(%esp),%edx
644e88:	0f ac d0 12          	shrd   $0x12,%edx,%eax
644e8c:	c1 ea 12             	shr    $0x12,%edx
644e8f:	52                   	push   %edx
644e90:	50                   	push   %eax
644e91:	8b 54 24 18          	mov    0x18(%esp),%edx
644e95:	c1 e2 0e             	shl    $0xe,%edx
644e98:	33 c0                	xor    %eax,%eax
644e9a:	0b 04 24             	or     (%esp),%eax
644e9d:	0b 54 24 04          	or     0x4(%esp),%edx
644ea1:	83 c4 08             	add    $0x8,%esp
644ea4:	33 04 24             	xor    (%esp),%eax
644ea7:	33 54 24 04          	xor    0x4(%esp),%edx
644eab:	83 c4 08             	add    $0x8,%esp
644eae:	52                   	push   %edx
644eaf:	50                   	push   %eax
644eb0:	8b 44 24 14          	mov    0x14(%esp),%eax
644eb4:	c1 e8 09             	shr    $0x9,%eax
644eb7:	33 d2                	xor    %edx,%edx
644eb9:	52                   	push   %edx
644eba:	50                   	push   %eax
644ebb:	8b 44 24 18          	mov    0x18(%esp),%eax
644ebf:	8b 54 24 1c          	mov    0x1c(%esp),%edx
644ec3:	0f a4 c2 17          	shld   $0x17,%eax,%edx
644ec7:	c1 e0 17             	shl    $0x17,%eax
644eca:	0b 04 24             	or     (%esp),%eax
644ecd:	0b 54 24 04          	or     0x4(%esp),%edx
644ed1:	83 c4 08             	add    $0x8,%esp
644ed4:	33 04 24             	xor    (%esp),%eax
644ed7:	33 54 24 04          	xor    0x4(%esp),%edx
644edb:	83 c4 08             	add    $0x8,%esp
644ede:	03 44 24 20          	add    0x20(%esp),%eax
644ee2:	13 54 24 24          	adc    0x24(%esp),%edx
644ee6:	52                   	push   %edx
644ee7:	50                   	push   %eax
644ee8:	8b 44 24 10          	mov    0x10(%esp),%eax
644eec:	8b 54 24 14          	mov    0x14(%esp),%edx
644ef0:	23 44 24 18          	and    0x18(%esp),%eax
644ef4:	23 54 24 1c          	and    0x1c(%esp),%edx
644ef8:	52                   	push   %edx
644ef9:	50                   	push   %eax
644efa:	8b 44 24 18          	mov    0x18(%esp),%eax
644efe:	8b 54 24 1c          	mov    0x1c(%esp),%edx
644f02:	f7 d0                	not    %eax
644f04:	f7 d2                	not    %edx
644f06:	23 44 24 28          	and    0x28(%esp),%eax
644f0a:	23 54 24 2c          	and    0x2c(%esp),%edx
644f0e:	33 04 24             	xor    (%esp),%eax