From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 81434 invoked by alias); 6 Jul 2015 21:29:17 -0000 Mailing-List: contact jit-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Subscribe: Sender: jit-owner@gcc.gnu.org Received: (qmail 80798 invoked by uid 89); 6 Jul 2015 21:29:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.98.7 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: mail-yk0-f182.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=xEsKm5JyZrdzRN6rUybVDDJ6ScPF78m37Suqecyy24I=; b=az+hZboD8IaEx6U2XkRo0V/a1amBP+1qsyOn0wHPOnfdwoVoxQ0pDDQugrxQQWFWuB usulyM2vVaPMudBQcmGj9KNE5RMvWtDHB6UFQ0BhtVmILB9Zq9S2+5HP0H2LFKZxtsuC 8NJxPv8cdD5cwyQnwx+nkggzfG7MRHNqbLWHykoLP9LNjIzMQkQZ9W2idykFfthQGdPq ql1Iaj+UQhkfdlPtU9KChHq4/BUGFUhNS6LBB5KUUjMmJVfm5lStpEkM7BvnA1Is1hDJ B1TqOjUoH0c6FGehdAPb3+eXOfiyHiie0BNOnhnLtE+aJVZ27l+P10TLewdjpmn9aP0n mMcw== X-Gm-Message-State: ALoCoQkaYv82zPotPoqRdc/ZNq3I3QiXEUvzzRkimWt0Btl2CRhPc5iosXPgI4XRz2JpCUlPLyz3 MIME-Version: 1.0 X-Received: by 10.13.212.199 with SMTP id w190mr1002897ywd.57.1436218152740; Mon, 06 Jul 2015 14:29:12 -0700 (PDT) In-Reply-To: References: <1436046085.24803.35.camel@surprise> Date: Thu, 01 Jan 2015 00:00:00 -0000 Message-ID: Subject: Re: A possible code generation issue From: Dibyendu Majumdar To: David Malcolm Cc: jit@gcc.gnu.org Content-Type: multipart/mixed; boundary=001a114fd454d0ced9051a3b986a X-SW-Source: 2015-q3/txt/msg00021.txt.bz2 --001a114fd454d0ced9051a3b986a Content-Type: text/plain; charset=UTF-8 Content-length: 1326 On 4 July 2015 at 23:09, Dibyendu Majumdar wrote: > On 4 July 2015 at 22:41, David Malcolm wrote: >>> Adding the -fno-strict-aliasing appears to resolve the issue with -O2 >>> and -O3 but with this enabled the benchmarks are degraded. >> >> If "-fno-strict-aliasing" resolved this, then that suggests that there >> are various casts in the code that if this were C would take us into >> "undefined behavior" territory, and the optimizer is trying a little too >> hard. This isn't C, but similar rules apply. If that's what this is, >> then this is at least a documentation issue with libgccjit; we need to >> document what the rules are. >> >> >> Of course, it could well be a bug at my end. >> Dave, Attached is a hacked version in C of the dump from the code. I thought it might be useful to generate code directly using gcc -O3 -S on this file - from what I can tell the generated code looks different from what I am getting in libgccjit. BTW the dump of types is problematic in many ways: 1) types are in wrong order 2) function types are incorrectly output 3) array types are incorrectly output 4) in one case as least a pointer was missing. It would be useful if the generated dump was correct C so that it can directly compiled in gcc. Thanks and Regards Dibyendu --001a114fd454d0ced9051a3b986a Content-Type: text/x-csrc; charset=US-ASCII; name="bug.c" Content-Disposition: attachment; filename="bug.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ibsf76dm0 Content-length: 16702 I2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKc3Ry dWN0IHJhdmlfbHVhX1N0YXRlOwoKc3RydWN0IHJhdmlfbHVhX0RlYnVnOwoK c3RydWN0IHJhdmlfR0NPYmplY3Q7Cgp1bmlvbiByYXZpX1ZhbHVlOwoKc3Ry dWN0IHJhdmlfVFZhbHVlOwoKc3RydWN0IHJhdmlfVFN0cmluZzsKCnN0cnVj dCByYXZpX1RhYmxlOwoKc3RydWN0IHJhdmlfVWRhdGE7CgpzdHJ1Y3QgcmF2 aV9VcHZhbGRlc2M7CgpzdHJ1Y3QgcmF2aV9Mb2NWYXI7CgpzdHJ1Y3QgcmF2 aV9MQ2xvc3VyZTsKCnN0cnVjdCByYXZpX1JhdmlKSVRQcm90bzsKCnN0cnVj dCByYXZpX1Byb3RvOwoKc3RydWN0IHJhdmlfVXBWYWw7CgpzdHJ1Y3QgcmF2 aV9DQ2xvc3VyZTsKCnVuaW9uIHJhdmlfQ2xvc3VyZTsKCnN0cnVjdCByYXZp X1RLZXlfbms7Cgp1bmlvbiByYXZpX1RLZXk7CgpzdHJ1Y3QgcmF2aV9Ob2Rl OwoKc3RydWN0IHJhdmlfUmF2aUFycmF5OwoKc3RydWN0IHJhdmlfbHVhX2xv bmdqbXA7CgpzdHJ1Y3QgcmF2aV9NYnVmZmVyOwoKc3RydWN0IHJhdmlfc3Ry aW5ndGFibGU7CgpzdHJ1Y3QgcmF2aV9DYWxsSW5mbzsKCnN0cnVjdCByYXZp X0NhbGxJbmZvX2x1YTsKCnN0cnVjdCByYXZpX0NhbGxJbmZvX0M7Cgp1bmlv biByYXZpX0NhbGxJbmZvX3U7CgpzdHJ1Y3QgcmF2aV9TdGF0ZTsKCnN0cnVj dCByYXZpX2dsb2JhbF9TdGF0ZTsKCnN0cnVjdCByYXZpX1VwVmFsX3Vfb3Bl bjsKCnVuaW9uIHJhdmlfVXBWYWxfdTsKCnN0cnVjdCByYXZpX0dDT2JqZWN0 CnsKICBzdHJ1Y3QgcmF2aV9HQ09iamVjdCAqIG5leHQ7CiAgdW5zaWduZWQg Y2hhciB0dDsKICB1bnNpZ25lZCBjaGFyIG1hcmtlZDsKfTsKCnVuaW9uIHJh dmlfVmFsdWUKewogIHN0cnVjdCByYXZpX0dDT2JqZWN0ICogZ2M7CiAgdm9p ZCAqIHA7CiAgaW50IGI7CiAgaW50ICgqZikgKHN0cnVjdCByYXZpX2x1YV9T dGF0ZSAqKTsKICBsb25nIGxvbmcgaTsKICBkb3VibGUgbjsKfTsKCnN0cnVj dCByYXZpX1RWYWx1ZQp7CiAgdW5pb24gcmF2aV9WYWx1ZSB2YWx1ZV87CiAg aW50IHR0XzsKfTsKCnN0cnVjdCByYXZpX1RTdHJpbmcKewogIHN0cnVjdCBy YXZpX0dDT2JqZWN0ICogbmV4dDsKICB1bnNpZ25lZCBjaGFyIHR0OwogIHVu c2lnbmVkIGNoYXIgbWFya2VkOwogIHVuc2lnbmVkIGNoYXIgZXh0cmE7CiAg dW5zaWduZWQgaW50IGhhc2g7CiAgc2l6ZV90IGxlbjsKICBzdHJ1Y3QgcmF2 aV9UU3RyaW5nICogaGFzaF9uZXh0Owp9OwoKc3RydWN0IHJhdmlfUmF2aUFy cmF5CnsKICB2b2lkICogZGF0YTsKICB1bnNpZ25lZCBpbnQgbGVuOwogIHVu c2lnbmVkIGludCBzaXplOwogIHVuc2lnbmVkIGNoYXIgYXJyYXlfdHlwZTsK ICB1bnNpZ25lZCBjaGFyIGFycmF5X21vZGlmaWVyOwp9OwoKc3RydWN0IHJh dmlfVGFibGUKewogIHN0cnVjdCByYXZpX0dDT2JqZWN0ICogbmV4dDsKICB1 bnNpZ25lZCBjaGFyIHR0OwogIHVuc2lnbmVkIGNoYXIgbWFya2VkOwogIHVu c2lnbmVkIGNoYXIgZmxhZ3M7CiAgdW5zaWduZWQgY2hhciBsc2l6ZW5vZGU7 CiAgdW5zaWduZWQgaW50IHNpemVhcnJheTsKICBzdHJ1Y3QgcmF2aV9UVmFs dWUgKiBhcnJheTsKICBzdHJ1Y3QgcmF2aV9Ob2RlICogbm9kZTsKICBzdHJ1 Y3QgcmF2aV9Ob2RlICogbGFzdGZyZWU7CiAgc3RydWN0IHJhdmlfVGFibGUg KiBtZXRhdGFibGU7CiAgc3RydWN0IHJhdmlfR0NPYmplY3QgKiBnY2xpc3Q7 CiAgc3RydWN0IHJhdmlfUmF2aUFycmF5IHJhdmlfYXJyYXk7Cn07CgpzdHJ1 Y3QgcmF2aV9VZGF0YQp7CiAgc3RydWN0IHJhdmlfR0NPYmplY3QgKiBuZXh0 OwogIHVuc2lnbmVkIGNoYXIgdHQ7CiAgdW5zaWduZWQgY2hhciBtYXJrZWQ7 CiAgdW5zaWduZWQgY2hhciB0dHV2XzsKICBzdHJ1Y3QgcmF2aV9UYWJsZSAq IG1ldGF0YWJsZTsKICBzaXplX3QgbGVuOwogIHVuaW9uIHJhdmlfVmFsdWUg dXNlcl87Cn07CgpzdHJ1Y3QgcmF2aV9VcHZhbGRlc2MKewogIHN0cnVjdCBy YXZpX1RTdHJpbmcgKiBuYW1lOwogIGludCB0eXBlOwogIHVuc2lnbmVkIGNo YXIgaW5zdGFjazsKICB1bnNpZ25lZCBjaGFyIGlkeDsKfTsKCnN0cnVjdCBy YXZpX0xvY1Zhcgp7CiAgc3RydWN0IHJhdmlfVFN0cmluZyAqIHZhcm5hbWU7 CiAgaW50IHN0YXJ0cGM7CiAgaW50IGVuZHBjOwogIGludCByYXZpX3R5cGU7 Cn07CgpzdHJ1Y3QgcmF2aV9MQ2xvc3VyZQp7CiAgc3RydWN0IHJhdmlfR0NP YmplY3QgKiBuZXh0OwogIHVuc2lnbmVkIGNoYXIgdHQ7CiAgdW5zaWduZWQg Y2hhciBtYXJrZWQ7CiAgdW5zaWduZWQgY2hhciBudXB2YWx1ZXM7CiAgc3Ry dWN0IHJhdmlfR0NPYmplY3QgKiBnY2xpc3Q7CiAgc3RydWN0IHJhdmlfUHJv dG8gKiBwOwogIHN0cnVjdCByYXZpX1VwVmFsICp1cHZhbHNbMV07Cn07Cgpz dHJ1Y3QgcmF2aV9SYXZpSklUUHJvdG8KewogIHVuc2lnbmVkIGNoYXIgaml0 X3N0YXR1czsKICB1bnNpZ25lZCBjaGFyIGppdF9mbGFnczsKICB1bnNpZ25l ZCBzaG9ydCBleGVjdXRpb25fY291bnQ7CiAgdm9pZCAqIGppdF9kYXRhOwog IGludCAoKiBqaXRfZnVuY3Rpb24pIChzdHJ1Y3QgcmF2aV9sdWFfU3RhdGUg Kik7Cn07CgpzdHJ1Y3QgcmF2aV9Qcm90bwp7CiAgc3RydWN0IHJhdmlfR0NP YmplY3QgKiBuZXh0OwogIHVuc2lnbmVkIGNoYXIgdHQ7CiAgdW5zaWduZWQg Y2hhciBtYXJrZWQ7CiAgdW5zaWduZWQgY2hhciBudW1wYXJhbXM7CiAgdW5z aWduZWQgY2hhciBpc192YXJhcmc7CiAgdW5zaWduZWQgY2hhciBtYXhzdGFj a3NpemU7CiAgaW50IHNpemV1cHZhbHVlczsKICBpbnQgc2l6ZWs7CiAgaW50 IHNpemVjb2RlOwogIGludCBzaXplbGluZWluZm87CiAgaW50IHNpemVwOwog IGludCBzaXplbG9jdmFyczsKICBpbnQgbGluZWRlZmluZWQ7CiAgaW50IGxh c3RsaW5lZGVmaW5lZDsKICBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiBrOwogIHVu c2lnbmVkIGludCAqIGNvZGU7CiAgc3RydWN0IHJhdmlfUHJvdG8gKiAqIHA7 CiAgaW50ICogbGluZWluZm87CiAgc3RydWN0IHJhdmlfTG9jVmFyICogbG9j dmFyczsKICBzdHJ1Y3QgcmF2aV9VcHZhbGRlc2MgKiB1cHZhbHVlczsKICBz dHJ1Y3QgcmF2aV9MQ2xvc3VyZSAqIGNhY2hlOwogIHN0cnVjdCByYXZpX1RT dHJpbmcgKiBzb3VyY2U7CiAgc3RydWN0IHJhdmlfR0NPYmplY3QgKiBnY2xp c3Q7CiAgc3RydWN0IHJhdmlfUmF2aUpJVFByb3RvIHJhdmlfaml0Owp9OwoK c3RydWN0IHJhdmlfVEtleV9uawp7CiAgdW5pb24gcmF2aV9WYWx1ZSB2YWx1 ZV87CiAgaW50IHR0XzsKICBpbnQgbmV4dDsKfTsKCnVuaW9uIHJhdmlfVEtl eQp7CiAgc3RydWN0IHJhdmlfVEtleV9uayBuazsKICBzdHJ1Y3QgcmF2aV9U VmFsdWUgdHZrOwp9OwoKc3RydWN0IHJhdmlfTm9kZQp7CiAgc3RydWN0IHJh dmlfVFZhbHVlIGlfdmFsOwogIHVuaW9uIHJhdmlfVEtleSBpX2tleTsKfTsK CnN0cnVjdCByYXZpX01idWZmZXIKewogIGNoYXIgKiBidWZmZXI7CiAgc2l6 ZV90IG47CiAgc2l6ZV90IGJ1ZmZzaXplOwp9OwoKc3RydWN0IHJhdmlfc3Ry aW5ndGFibGUKewogIHN0cnVjdCByYXZpX1RTdHJpbmcgKiAqIGhhc2g7CiAg aW50IG51c2U7CiAgaW50IHNpemU7Cn07CgpzdHJ1Y3QgcmF2aV9DYWxsSW5m b19sdWEKewogIHN0cnVjdCByYXZpX1RWYWx1ZSAqIGJhc2U7CiAgdW5zaWdu ZWQgaW50ICogc2F2ZWRwYzsKfTsKCnN0cnVjdCByYXZpX0NhbGxJbmZvX0MK ewogIGludCAoKmspIChzdHJ1Y3QgcmF2aV9sdWFfU3RhdGUgKiwgaW50LCBs b25nIGxvbmcpOwogIGxvbmcgbG9uZyBvbGRfZXJyZnVuYzsKICBsb25nIGxv bmcgY3R4Owp9OwoKdW5pb24gcmF2aV9DYWxsSW5mb191CnsKICBzdHJ1Y3Qg cmF2aV9DYWxsSW5mb19sdWEgbDsKICBzdHJ1Y3QgcmF2aV9DYWxsSW5mb19D IGM7Cn07CgpzdHJ1Y3QgcmF2aV9DQ2xvc3VyZQp7CiAgc3RydWN0IHJhdmlf R0NPYmplY3QgKiBuZXh0OwogIHVuc2lnbmVkIGNoYXIgdHQ7CiAgdW5zaWdu ZWQgY2hhciBtYXJrZWQ7CiAgdW5zaWduZWQgY2hhciBudXB2YWx1ZXM7CiAg c3RydWN0IHJhdmlfR0NPYmplY3QgKiBnY2xpc3Q7CiAgaW50ICgqZikgKHN0 cnVjdCByYXZpX2x1YV9TdGF0ZSAqKTsKICBzdHJ1Y3QgcmF2aV9UVmFsdWUg dXB2YWx1ZVsxXTsKfTsKCnVuaW9uIHJhdmlfQ2xvc3VyZQp7CiAgc3RydWN0 IHJhdmlfQ0Nsb3N1cmUgYzsKICBzdHJ1Y3QgcmF2aV9MQ2xvc3VyZSBsOwp9 OwoKCnN0cnVjdCByYXZpX0NhbGxJbmZvCnsKICBzdHJ1Y3QgcmF2aV9UVmFs dWUgKiBmdW5jOwogIHN0cnVjdCByYXZpX1RWYWx1ZSAqIHRvcDsKICBzdHJ1 Y3QgcmF2aV9DYWxsSW5mbyAqIHByZXZpb3VzOwogIHN0cnVjdCByYXZpX0Nh bGxJbmZvICogbmV4dDsKICB1bmlvbiByYXZpX0NhbGxJbmZvX3UgdTsKICBs b25nIGxvbmcgZXh0cmE7CiAgc2hvcnQgbnJlc3VsdHM7CiAgdW5zaWduZWQg Y2hhciBjYWxsc3RhdHVzOwp9OwoKc3RydWN0IHJhdmlfbHVhX1N0YXRlCnsK ICBzdHJ1Y3QgcmF2aV9HQ09iamVjdCAqIG5leHQ7CiAgdW5zaWduZWQgY2hh ciB0dDsKICB1bnNpZ25lZCBjaGFyIG1hcmtlZDsKICB1bnNpZ25lZCBjaGFy IHN0YXR1czsKICBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiB0b3A7CiAgc3RydWN0 IHJhdmlfZ2xvYmFsX1N0YXRlICogbF9HOwogIHN0cnVjdCByYXZpX0NhbGxJ bmZvICogY2k7CiAgdW5zaWduZWQgaW50ICogb2xkcGM7CiAgc3RydWN0IHJh dmlfVFZhbHVlICogc3RhY2tfbGFzdDsKICBzdHJ1Y3QgcmF2aV9UVmFsdWUg KiBzdGFjazsKICBzdHJ1Y3QgcmF2aV9VcFZhbCAqIG9wZW51cHZhbDsKICBz dHJ1Y3QgcmF2aV9HQ09iamVjdCAqIGdjbGlzdDsKICBzdHJ1Y3QgcmF2aV9s dWFfU3RhdGUgKiB0d3VwczsKICBzdHJ1Y3QgcmF2aV9sdWFfbG9uZ2ptcCAq IGVycm9ySm1wOwogIHN0cnVjdCByYXZpX0NhbGxJbmZvIGJhc2VfY2k7CiAg dm9pZCAqICgqaG9vaykgKHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqLCBzdHJ1 Y3QgcmF2aV9sdWFfRGVidWcgKik7CiAgbG9uZyBsb25nIGVycmZ1bmM7CiAg aW50IHN0YWNrc2l6ZTsKICBpbnQgYmFzZWhvb2tjb3VudDsKICBpbnQgaG9v a2NvdW50OwogIHVuc2lnbmVkIHNob3J0IG5ueTsKICB1bnNpZ25lZCBzaG9y dCBuQ2NhbGxzOwogIHVuc2lnbmVkIGNoYXIgaG9va21hc2s7CiAgdW5zaWdu ZWQgY2hhciBhbGxvd2hvb2s7Cn07CgoKCnN0cnVjdCByYXZpX1VwVmFsX3Vf b3Blbgp7CiAgc3RydWN0IHJhdmlfVXBWYWwgKiBuZXh0OwogIGludCB0b3Vj aGVkOwp9OwoKdW5pb24gcmF2aV9VcFZhbF91CnsKICBzdHJ1Y3QgcmF2aV9V cFZhbF91X29wZW4gb3BlbjsKICBzdHJ1Y3QgcmF2aV9UVmFsdWUgdmFsdWU7 Cn07CgpzdHJ1Y3QgcmF2aV9VcFZhbAp7CiAgc3RydWN0IHJhdmlfVFZhbHVl ICogdjsKICBzaXplX3QgcmVmY291bnQ7CiAgdW5pb24gcmF2aV9VcFZhbF91 IHU7Cn07CgoKCmV4dGVybiBpbnQKbHVhRF9wb3NjYWxsIChzdHJ1Y3QgcmF2 aV9sdWFfU3RhdGUgKiBMLCBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiBmaXJzdFJl c3VsdCk7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiB2b2lkCmx1YUNfdXB2 YWxiYXJyaWVyXyAoc3RydWN0IHJhdmlfbHVhX1N0YXRlICogTCwgc3RydWN0 IHJhdmlfVXBWYWwgKiB1dik7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiBp bnQKbHVhRF9wcmVjYWxsIChzdHJ1Y3QgcmF2aV9sdWFfU3RhdGUgKiBMLCBz dHJ1Y3QgcmF2aV9UVmFsdWUgKiBmdW5jLCBpbnQgbnJlc3VsdHMpOyAvKiAo aW1wb3J0ZWQpICovCgpleHRlcm4gaW50Cmx1YURfY2FsbCAoc3RydWN0IHJh dmlfbHVhX1N0YXRlICogTCwgc3RydWN0IHJhdmlfVFZhbHVlICogZnVuYywg aW50IG5yZXN1bHRzLCBpbnQgYWxsb3d5aWVsZCk7IC8qIChpbXBvcnRlZCkg Ki8KCmV4dGVybiB2b2lkCmx1YVZfZXhlY3V0ZSAoc3RydWN0IHJhdmlfbHVh X1N0YXRlICogTCk7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiB2b2lkCmx1 YUZfY2xvc2UgKHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqIEwsIHN0cnVjdCBy YXZpX1RWYWx1ZSAqIGxldmVsKTsgLyogKGltcG9ydGVkKSAqLwoKZXh0ZXJu IGludApsdWFWX2VxdWFsb2JqIChzdHJ1Y3QgcmF2aV9sdWFfU3RhdGUgKiBM LCBjb25zdCBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiB0MSwgY29uc3Qgc3RydWN0 IHJhdmlfVFZhbHVlICogdDIpOyAvKiAoaW1wb3J0ZWQpICovCgpleHRlcm4g aW50Cmx1YVZfbGVzc3RoYW4gKHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqIEws IGNvbnN0IHN0cnVjdCByYXZpX1RWYWx1ZSAqIGwsIGNvbnN0IHN0cnVjdCBy YXZpX1RWYWx1ZSAqIHIpOyAvKiAoaW1wb3J0ZWQpICovCgpleHRlcm4gaW50 Cmx1YVZfbGVzc2VxdWFsIChzdHJ1Y3QgcmF2aV9sdWFfU3RhdGUgKiBMLCBj b25zdCBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiBsLCBjb25zdCBzdHJ1Y3QgcmF2 aV9UVmFsdWUgKiByKTsgLyogKGltcG9ydGVkKSAqLwoKZXh0ZXJuIHZvaWQK bHVhR19ydW5lcnJvciAoc3RydWN0IHJhdmlfbHVhX1N0YXRlICogTCwgY29u c3QgY2hhciAqIGZtdCk7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiBpbnQK bHVhVl9mb3JsaW1pdCAoc3RydWN0IHJhdmlfVFZhbHVlICogb2JqLCBsb25n IGxvbmcgKiBwLCBsb25nIGxvbmcgc3RlcCwgaW50ICogc3RvcG5vdyk7IC8q IChpbXBvcnRlZCkgKi8KCmV4dGVybiBpbnQKbHVhVl90b251bWJlcl8gKGNv bnN0IHN0cnVjdCByYXZpX1RWYWx1ZSAqIG9iaiwgZG91YmxlICogbik7IC8q IChpbXBvcnRlZCkgKi8KCmV4dGVybiBpbnQKbHVhVl90b2ludGVnZXJfIChj b25zdCBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiBvYmosIGxvbmcgbG9uZyAqIHAp OyAvKiAoaW1wb3J0ZWQpICovCgpleHRlcm4gdm9pZApsdWFWX29iamxlbiAo c3RydWN0IHJhdmlfbHVhX1N0YXRlICogTCwgc3RydWN0IHJhdmlfVFZhbHVl ICogcmEsIGNvbnN0IHN0cnVjdCByYXZpX1RWYWx1ZSAqIHJiKTsgLyogKGlt cG9ydGVkKSAqLwoKZXh0ZXJuIHZvaWQKbHVhVl9nZXR0YWJsZSAoc3RydWN0 IHJhdmlfbHVhX1N0YXRlICogTCwgY29uc3Qgc3RydWN0IHJhdmlfVFZhbHVl ICogdCwgc3RydWN0IHJhdmlfVFZhbHVlICoga2V5LCBzdHJ1Y3QgcmF2aV9U VmFsdWUgKiB2YWwpOyAvKiAoaW1wb3J0ZWQpICovCgpleHRlcm4gdm9pZAps dWFWX3NldHRhYmxlIChzdHJ1Y3QgcmF2aV9sdWFfU3RhdGUgKiBMLCBjb25z dCBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiB0LCBzdHJ1Y3QgcmF2aV9UVmFsdWUg KiBrZXksIHN0cnVjdCByYXZpX1RWYWx1ZSAqIHZhbCk7IC8qIChpbXBvcnRl ZCkgKi8KCmV4dGVybiB2b2lkCmx1YVRfdHJ5YmluVE0gKHN0cnVjdCByYXZp X2x1YV9TdGF0ZSAqIEwsIGNvbnN0IHN0cnVjdCByYXZpX1RWYWx1ZSAqIHAx LCBjb25zdCBzdHJ1Y3QgcmF2aV9UVmFsdWUgKiBwMiwgc3RydWN0IHJhdmlf VFZhbHVlICogcmVzLCBpbnQgZXZlbnQpOyAvKiAoaW1wb3J0ZWQpICovCgpl eHRlcm4gdm9pZApyYXZpVl9vcF9sb2FkbmlsIChzdHJ1Y3QgcmF2aV9DYWxs SW5mbyAqIGNpLCBpbnQgYSwgaW50IGIpOyAvKiAoaW1wb3J0ZWQpICovCgpl eHRlcm4gdm9pZApyYXZpVl9vcF9uZXdhcnJheWludCAoc3RydWN0IHJhdmlf bHVhX1N0YXRlICogTCwgc3RydWN0IHJhdmlfQ2FsbEluZm8gKiBjaSwgc3Ry dWN0IHJhdmlfVFZhbHVlICogcmEpOyAvKiAoaW1wb3J0ZWQpICovCgpleHRl cm4gdm9pZApyYXZpVl9vcF9uZXdhcnJheWZsb2F0IChzdHJ1Y3QgcmF2aV9s dWFfU3RhdGUgKiBMLCBzdHJ1Y3QgcmF2aV9DYWxsSW5mbyAqIGNpLCBzdHJ1 Y3QgcmF2aV9UVmFsdWUgKiByYSk7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVy biB2b2lkCnJhdmlWX29wX25ld3RhYmxlIChzdHJ1Y3QgcmF2aV9sdWFfU3Rh dGUgKiBMLCBzdHJ1Y3QgcmF2aV9DYWxsSW5mbyAqIGNpLCBzdHJ1Y3QgcmF2 aV9UVmFsdWUgKiByYSwgaW50IGIsIGludCBjKTsgLyogKGltcG9ydGVkKSAq LwoKZXh0ZXJuIHZvaWQKcmF2aVZfb3Bfc2V0bGlzdCAoc3RydWN0IHJhdmlf bHVhX1N0YXRlICogTCwgc3RydWN0IHJhdmlfQ2FsbEluZm8gKiBjaSwgc3Ry dWN0IHJhdmlfVFZhbHVlICogcmEsIGludCBiLCBpbnQgYyk7IC8qIChpbXBv cnRlZCkgKi8KCmV4dGVybiBsb25nIGxvbmcKbHVhVl9kaXYgKHN0cnVjdCBy YXZpX2x1YV9TdGF0ZSAqIEwsIGxvbmcgbG9uZyBtLCBsb25nIGxvbmcgbik7 IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiBsb25nIGxvbmcKbHVhVl9tb2Qg KHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqIEwsIGxvbmcgbG9uZyBtLCBsb25n IGxvbmcgbik7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiB2b2lkCnJhdmlW X29wX2NvbmNhdCAoc3RydWN0IHJhdmlfbHVhX1N0YXRlICogTCwgc3RydWN0 IHJhdmlfQ2FsbEluZm8gKiBjaSwgaW50IGEsIGludCBiLCBpbnQgYyk7IC8q IChpbXBvcnRlZCkgKi8KCmV4dGVybiB2b2lkCnJhdmlWX29wX2Nsb3N1cmUg KHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqIEwsIHN0cnVjdCByYXZpX0NhbGxJ bmZvICogY2ksIHN0cnVjdCByYXZpX0xDbG9zdXJlICogY2wsIGludCBhLCBp bnQgQngpOyAvKiAoaW1wb3J0ZWQpICovCgpleHRlcm4gdm9pZApyYXZpVl9v cF92YXJhcmcgKHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqIEwsIHN0cnVjdCBy YXZpX0NhbGxJbmZvICogY2ksIHN0cnVjdCByYXZpX0xDbG9zdXJlICogY2ws IGludCBhLCBpbnQgYik7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiB2b2lk CnJhdmlIX3NldF9pbnQgKHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqIEwsIHN0 cnVjdCByYXZpX1RhYmxlICogdGFibGUsIHVuc2lnbmVkIGludCBrZXksIGxv bmcgbG9uZyB2YWx1ZSk7IC8qIChpbXBvcnRlZCkgKi8KCmV4dGVybiB2b2lk CnJhdmlIX3NldF9mbG9hdCAoc3RydWN0IHJhdmlfbHVhX1N0YXRlICogTCwg c3RydWN0IHJhdmlfVGFibGUgKiB0YWJsZSwgdW5zaWduZWQgaW50IGtleSwg ZG91YmxlIHZhbHVlKTsgLyogKGltcG9ydGVkKSAqLwoKZXh0ZXJuIHZvaWQK cmF2aVZfb3Bfc2V0dXB2YWwgKHN0cnVjdCByYXZpX2x1YV9TdGF0ZSAqIEws IHN0cnVjdCByYXZpX0xDbG9zdXJlICogY2wsIHN0cnVjdCByYXZpX1RWYWx1 ZSAqIHJhLCBpbnQgYik7IC8qIChpbXBvcnRlZCkgKi8KCi8vZXh0ZXJuIGlu dAovL3ByaW50ZiAoY29uc3QgY2hhciAqIGZvcm1hdCk7IC8qIChpbXBvcnRl ZCkgKi8KCmV4dGVybiBpbnQKcmF2aWYxIChzdHJ1Y3QgcmF2aV9sdWFfU3Rh dGUgKiBMKQp7CiAgc3RydWN0IHJhdmlfTENsb3N1cmUgKiBjbDsKICBib29s IGlzZmFsc2VfMF80OwogIGJvb2wgY29tcGFyaXNvbl8wXzU7CiAgYm9vbCBj b21wYXJpc29uXzBfNjsKICBib29sIGNvbXBhcmlzb25fMF83OwogIGJvb2wg aXNmYWxzZV8wXzEwOwogIGJvb2wgY29tcGFyaXNvbl8wXzExOwogIGJvb2wg Y29tcGFyaXNvbl8wXzEyOwogIGJvb2wgY29tcGFyaXNvbl8wXzEzOwogIGJv b2wgaXNmYWxzZV8wXzE2OwogIGJvb2wgY29tcGFyaXNvbl8wXzE3OwogIGJv b2wgY29tcGFyaXNvbl8wXzE4OwogIGJvb2wgY29tcGFyaXNvbl8wXzE5Owog IGJvb2wgY29tcGFyaXNvbl8wXzIyOwogIGJvb2wgY29tcGFyaXNvbl8wXzI2 OwoKZW50cnk6CiAgY2wgPSAoc3RydWN0IHJhdmlfTENsb3N1cmUgKilMLT5j aS0+ZnVuYy0+dmFsdWVfLmdjOwogICh2b2lkKXJhdmlWX29wX2xvYWRuaWwg KEwtPmNpLCAoaW50KTAsIChpbnQpMCk7CiAgKCZMLT5jaS0+dS5sLmJhc2Vb KGludCkxXSktPnZhbHVlXy5pID0gKCZjbC0+cC0+a1soaW50KTBdKS0+dmFs dWVfLmk7CiAgKCZMLT5jaS0+dS5sLmJhc2VbKGludCkxXSktPnR0XyA9ICgm Y2wtPnAtPmtbKGludCkwXSktPnR0XzsKICBjb21wYXJpc29uXzBfNSA9ICgm TC0+Y2ktPnUubC5iYXNlWyhpbnQpMV0pLT50dF8gPT0gKGludCkwOwogIGNv bXBhcmlzb25fMF82ID0gKCZMLT5jaS0+dS5sLmJhc2VbKGludCkxXSktPnR0 XyA9PSAoaW50KTE7CiAgY29tcGFyaXNvbl8wXzcgPSAoJkwtPmNpLT51Lmwu YmFzZVsoaW50KTFdKS0+dmFsdWVfLmIgPT0gKGludCkwOwogIGlzZmFsc2Vf MF80ID0gY29tcGFyaXNvbl8wXzUgfHwgY29tcGFyaXNvbl8wXzYgJiYgY29t cGFyaXNvbl8wXzc7CiAgaWYgKCEoaXNmYWxzZV8wXzQpKSBnb3RvIE9QX1RF U1RfZG9fam1wXzJfODsgZWxzZSBnb3RvIE9QX1RFU1RfZG9fc2tpcF8yXzk7 CgpqbXBfNV8xOgogICgmTC0+Y2ktPnUubC5iYXNlWyhpbnQpMV0pLT52YWx1 ZV8uYiA9IChpbnQpMDsKICAoJkwtPmNpLT51LmwuYmFzZVsoaW50KTFdKS0+ dHRfID0gKGludCkxOwogIGNvbXBhcmlzb25fMF8xMSA9ICgmTC0+Y2ktPnUu bC5iYXNlWyhpbnQpMV0pLT50dF8gPT0gKGludCkwOwogIGNvbXBhcmlzb25f MF8xMiA9ICgmTC0+Y2ktPnUubC5iYXNlWyhpbnQpMV0pLT50dF8gPT0gKGlu dCkxOwogIGNvbXBhcmlzb25fMF8xMyA9ICgmTC0+Y2ktPnUubC5iYXNlWyhp bnQpMV0pLT52YWx1ZV8uYiA9PSAoaW50KTA7CiAgaXNmYWxzZV8wXzEwID0g Y29tcGFyaXNvbl8wXzExIHx8IGNvbXBhcmlzb25fMF8xMiAmJiBjb21wYXJp c29uXzBfMTM7CiAgaWYgKCEoIShpc2ZhbHNlXzBfMTApKSkgZ290byBPUF9U RVNUX2RvX2ptcF81XzE0OyBlbHNlIGdvdG8gT1BfVEVTVF9kb19za2lwXzVf MTU7CgpqbXBfOV8yOgogICgmTC0+Y2ktPnUubC5iYXNlWyhpbnQpMV0pLT52 YWx1ZV8uaSA9ICgmY2wtPnAtPmtbKGludCkwXSktPnZhbHVlXy5pOwogICgm TC0+Y2ktPnUubC5iYXNlWyhpbnQpMV0pLT50dF8gPSAoJmNsLT5wLT5rWyhp bnQpMF0pLT50dF87CiAgY29tcGFyaXNvbl8wXzE3ID0gKCZMLT5jaS0+dS5s LmJhc2VbKGludCkxXSktPnR0XyA9PSAoaW50KTA7CiAgY29tcGFyaXNvbl8w XzE4ID0gKCZMLT5jaS0+dS5sLmJhc2VbKGludCkxXSktPnR0XyA9PSAoaW50 KTE7CiAgY29tcGFyaXNvbl8wXzE5ID0gKCZMLT5jaS0+dS5sLmJhc2VbKGlu dCkxXSktPnZhbHVlXy5iID09IChpbnQpMDsKICBpc2ZhbHNlXzBfMTYgPSBj b21wYXJpc29uXzBfMTcgfHwgY29tcGFyaXNvbl8wXzE4ICYmIGNvbXBhcmlz b25fMF8xOTsKICBpZiAoIShpc2ZhbHNlXzBfMTYpKSBnb3RvIE9QX1RFU1Rf ZG9fam1wXzlfMjA7IGVsc2UgZ290byBPUF9URVNUX2RvX3NraXBfOV8yMTsK CmptcF8xMl8zOgogICgmTC0+Y2ktPnUubC5iYXNlWyhpbnQpMV0pLT52YWx1 ZV8uYiA9IChpbnQpMDsKICAoJkwtPmNpLT51LmwuYmFzZVsoaW50KTFdKS0+ dHRfID0gKGludCkxOwogIEwtPnRvcCA9ICZMLT5jaS0+dS5sLmJhc2VbKGlu dCkyXTsKICBjb21wYXJpc29uXzBfMjIgPSBjbC0+cC0+c2l6ZXAgPiAoaW50 KTA7CiAgaWYgKGNvbXBhcmlzb25fMF8yMikgZ290byBPUF9SRVRVUk5faWZf c2l6ZXBfZ3RfMF8xMl8yMzsgZWxzZSBnb3RvIE9QX1JFVFVSTl9lbHNlX3Np emVwX2d0XzBfMTJfMjQ7CgpPUF9URVNUX2RvX2ptcF8yXzg6CiAgZ290byBq bXBfNV8xOwoKT1BfVEVTVF9kb19za2lwXzJfOToKICBnb3RvIGptcF81XzE7 CgpPUF9URVNUX2RvX2ptcF81XzE0OgogIGdvdG8gam1wXzlfMjsKCk9QX1RF U1RfZG9fc2tpcF81XzE1OgogICgmTC0+Y2ktPnUubC5iYXNlWyhpbnQpMF0p LT52YWx1ZV8uYiA9IChpbnQpMTsKICAoJkwtPmNpLT51LmwuYmFzZVsoaW50 KTBdKS0+dHRfID0gKGludCkxOwogIGdvdG8gam1wXzlfMjsKCk9QX1RFU1Rf ZG9fam1wXzlfMjA6CiAgZ290byBqbXBfMTJfMzsKCk9QX1RFU1RfZG9fc2tp cF85XzIxOgogIGdvdG8gam1wXzEyXzM7CgpPUF9SRVRVUk5faWZfc2l6ZXBf Z3RfMF8xMl8yMzoKICAodm9pZClsdWFGX2Nsb3NlIChMLCBMLT5jaS0+dS5s LmJhc2UpOwogIGdvdG8gT1BfUkVUVVJOX2Vsc2Vfc2l6ZXBfZ3RfMF8xMl8y NDsKCk9QX1JFVFVSTl9lbHNlX3NpemVwX2d0XzBfMTJfMjQ6CiAgKHZvaWQp bHVhRF9wb3NjYWxsIChMLCAoJkwtPmNpLT51LmwuYmFzZVsoaW50KTFdKSk7 CiAgcmV0dXJuIChpbnQpMTsKCkxJTktfQkxPQ0tfMTNfMjU6CiAgTC0+dG9w ID0gJkwtPmNpLT51LmwuYmFzZVsoaW50KTBdOwogIGNvbXBhcmlzb25fMF8y NiA9IGNsLT5wLT5zaXplcCA+IChpbnQpMDsKICBpZiAoY29tcGFyaXNvbl8w XzI2KSBnb3RvIE9QX1JFVFVSTl9pZl9zaXplcF9ndF8wXzEzXzI3OyBlbHNl IGdvdG8gT1BfUkVUVVJOX2Vsc2Vfc2l6ZXBfZ3RfMF8xM18yODsKCk9QX1JF VFVSTl9pZl9zaXplcF9ndF8wXzEzXzI3OgogICh2b2lkKWx1YUZfY2xvc2Ug KEwsIEwtPmNpLT51LmwuYmFzZSk7CiAgZ290byBPUF9SRVRVUk5fZWxzZV9z aXplcF9ndF8wXzEzXzI4OwoKT1BfUkVUVVJOX2Vsc2Vfc2l6ZXBfZ3RfMF8x M18yODoKICAodm9pZClsdWFEX3Bvc2NhbGwgKEwsICgmTC0+Y2ktPnUubC5i YXNlWyhpbnQpMF0pKTsKICByZXR1cm4gKGludCkxOwp9Cgo= --001a114fd454d0ced9051a3b986a Content-Type: application/octet-stream; name="bug.s" Content-Disposition: attachment; filename="bug.s" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ibsf76f01 Content-length: 2656 CS5maWxlCSJidWcuYyIKCS5zZWN0aW9uCS50ZXh0LnVubGlrZWx5LCJheCIs QHByb2diaXRzCi5MQ09MREIwOgoJLnRleHQKLkxIT1RCMDoKCS5wMmFsaWdu IDQsLDE1CgkuZ2xvYmwJcmF2aWYxCgkudHlwZQlyYXZpZjEsIEBmdW5jdGlv bgpyYXZpZjE6Ci5MRkIxMDoKCS5jZmlfc3RhcnRwcm9jCi5MMjoKCXB1c2hx CSVyYnAKCS5jZmlfZGVmX2NmYV9vZmZzZXQgMTYKCS5jZmlfb2Zmc2V0IDYs IC0xNgoJcHVzaHEJJXJieAoJLmNmaV9kZWZfY2ZhX29mZnNldCAyNAoJLmNm aV9vZmZzZXQgMywgLTI0Cgltb3ZxCSVyZGksICVyYngKCXhvcmwJJWVkeCwg JWVkeAoJeG9ybAklZXNpLCAlZXNpCglzdWJxCSQ4LCAlcnNwCgkuY2ZpX2Rl Zl9jZmFfb2Zmc2V0IDMyCgltb3ZxCTMyKCVyZGkpLCAlcmRpCgltb3ZxCSgl cmRpKSwgJXJheAoJbW92cQkoJXJheCksICVyYnAKCWNhbGwJcmF2aVZfb3Bf bG9hZG5pbAoJbW92cQkzMiglcmJ4KSwgJXJheAoJbW92cQkyNCglcmJwKSwg JXJkeAoJbW92cQkzMiglcmF4KSwgJXJheAoJbW92cQk0OCglcmR4KSwgJXJk eAoJbW92cQkoJXJkeCksICVyZHgKCW1vdnEJJXJkeCwgMTYoJXJheCkKCW1v dnEJMjQoJXJicCksICVyY3gKCW1vdnEJMzIoJXJieCksICVyYXgKCW1vdnEJ NDgoJXJjeCksICVyY3gKCW1vdnEJMzIoJXJheCksICVyZHgKCW1vdmwJOCgl cmN4KSwgJWVjeAoJbW92bAklZWN4LCAyNCglcmR4KQoJbW92cQkzMiglcmF4 KSwgJXJheAoJbW92bAkkMCwgMTYoJXJheCkKCW1vdnEJMzIoJXJieCksICVy YXgKCW1vdnEJMzIoJXJheCksICVyZHgKCW1vdmwJJDEsIDI0KCVyZHgpCglt b3ZxCTMyKCVyYXgpLCAlcmF4Cgltb3ZsCTI0KCVyYXgpLCAlZWR4Cgl0ZXN0 bAklZWR4LCAlZWR4CglqZQkuTDUKCW1vdmwJMTYoJXJheCksICVlY3gKCXRl c3RsCSVlY3gsICVlY3gKCWpuZQkuTDQKCWNtcGwJJDEsICVlZHgKCWplCS5M NQouTDQ6Cgltb3ZsCSQxLCAoJXJheCkKCW1vdnEJMzIoJXJieCksICVyYXgK CW1vdnEJMzIoJXJheCksICVyZHgKCW1vdmwJJDEsIDgoJXJkeCkKCW1vdnEJ MzIoJXJheCksICVyYXgKLkwzOgouTDU6Cgltb3ZxCTI0KCVyYnApLCAlcmR4 Cgltb3ZxCTQ4KCVyZHgpLCAlcmR4Cgltb3ZxCSglcmR4KSwgJXJkeAoJbW92 cQklcmR4LCAxNiglcmF4KQoJbW92cQkyNCglcmJwKSwgJXJjeAoJbW92cQkz MiglcmJ4KSwgJXJheAoJbW92cQk0OCglcmN4KSwgJXJjeAoJbW92cQkzMigl cmF4KSwgJXJkeAoJbW92bAk4KCVyY3gpLCAlZWN4Cgltb3ZsCSVlY3gsIDI0 KCVyZHgpCgltb3ZxCTMyKCVyYXgpLCAlcmF4Cgltb3ZsCSQwLCAxNiglcmF4 KQoJbW92cQkzMiglcmJ4KSwgJXJheAoJbW92cQkzMiglcmF4KSwgJXJkeAoJ bW92bAkkMSwgMjQoJXJkeCkKCW1vdnEJMzIoJXJheCksICVyZGkKCWxlYXEJ MzIoJXJkaSksICVyZHgKCW1vdnEJJXJkeCwgMTYoJXJieCkKCW1vdnEJMjQo JXJicCksICVyZHgKCW1vdmwJMzIoJXJkeCksICVlZHgKCXRlc3RsCSVlZHgs ICVlZHgKCWpsZQkuTDYKLkw3OgoJbW92cQkzMiglcmF4KSwgJXJzaQoJbW92 cQklcmJ4LCAlcmRpCgljYWxsCWx1YUZfY2xvc2UKCW1vdnEJMzIoJXJieCks ICVyYXgKLkw2OgoJbW92cQkzMiglcmF4KSwgJXJzaQoJbW92cQklcmJ4LCAl cmRpCglhZGRxCSQxNiwgJXJzaQoJY2FsbAlsdWFEX3Bvc2NhbGwKCWFkZHEJ JDgsICVyc3AKCS5jZmlfZGVmX2NmYV9vZmZzZXQgMjQKCW1vdmwJJDEsICVl YXgKCXBvcHEJJXJieAoJLmNmaV9kZWZfY2ZhX29mZnNldCAxNgoJcG9wcQkl cmJwCgkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKCXJldAoJLmNmaV9lbmRwcm9j Ci5MRkUxMDoKCS5zaXplCXJhdmlmMSwgLi1yYXZpZjEKCS5zZWN0aW9uCS50 ZXh0LnVubGlrZWx5Ci5MQ09MREUwOgoJLnRleHQKLkxIT1RFMDoKCS5pZGVu dAkiR0NDOiAoR05VKSA1LjEuMSAyMDE1MDcwNCIKCS5zZWN0aW9uCS5ub3Rl LkdOVS1zdGFjaywiIixAcHJvZ2JpdHMK --001a114fd454d0ced9051a3b986a--