public byte[] decrypt(byte[] p14, byte[] p15)
    {
        int v0_2 = ((p14.length - this.ivSizeInBytes) - 16);
        if (v0_2 < 0) {
            throw new java.security.GeneralSecurityException(ciphertext too short);
        } else {
            javax.crypto.Cipher v9_1 = ((javax.crypto.Cipher) com.google.crypto.tink.subtle.AesEaxJce.localEcbCipher.get());
            v9_1.init(1, this.keySpec);
            byte[] v11 = this.omac(v9_1, 0, p14, 0, this.ivSizeInBytes);
            int v12 = 0;
            if (p15 == null) {
                p15 = new byte[0];
            }
            String v15_1 = this.omac(v9_1, 1, p15, 0, p15.length);
            byte[] vtmp4 = this.omac(v9_1, 2, p14, this.ivSizeInBytes, v0_2);
            byte v4_3 = 0;
            while (v12 < 16) {
                v4_3 = ((byte) (v4_3 | (((p14[((p14.length - 16) + v12)] ^ v15_1[v12]) ^ v11[v12]) ^ vtmp4[v12])));
                v12++;
            }
            if (v4_3 != 0) {
                throw new javax.crypto.AEADBadTagException(tag mismatch);
            } else {
                String v15_5 = ((javax.crypto.Cipher) com.google.crypto.tink.subtle.AesEaxJce.localCtrCipher.get());
                v15_5.init(1, this.keySpec, new javax.crypto.spec.IvParameterSpec(v11));
                return v15_5.doFinal(p14, this.ivSizeInBytes, v0_2);
            }
        }
    }