[llvm] [AVR] Fix a crash in AVRInstrInfo::insertIndirectBranch (PR #67324)

Ben Shi via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 25 05:40:46 PDT 2023


https://github.com/benshi001 created https://github.com/llvm/llvm-project/pull/67324

Fixes https://github.com/llvm/llvm-project/issues/67042

>From 0476827cfa6925983e6b728e3d0f018e5850d2c1 Mon Sep 17 00:00:00 2001
From: Ben Shi <bennshi at tencent.com>
Date: Mon, 25 Sep 2023 20:38:26 +0800
Subject: [PATCH] [AVR] Fix a crash in AVRInstrInfo::insertIndirectBranch

Fixes https://github.com/llvm/llvm-project/issues/67042
---
 llvm/lib/Target/AVR/AVRInstrInfo.cpp |    2 +-
 llvm/test/CodeGen/AVR/bug-67042.ll   | 7633 ++++++++++++++++++++++++++
 2 files changed, 7634 insertions(+), 1 deletion(-)
 create mode 100644 llvm/test/CodeGen/AVR/bug-67042.ll

diff --git a/llvm/lib/Target/AVR/AVRInstrInfo.cpp b/llvm/lib/Target/AVR/AVRInstrInfo.cpp
index b9d27c78ce8e41e..5f66168d549f94c 100644
--- a/llvm/lib/Target/AVR/AVRInstrInfo.cpp
+++ b/llvm/lib/Target/AVR/AVRInstrInfo.cpp
@@ -573,7 +573,7 @@ void AVRInstrInfo::insertIndirectBranch(MachineBasicBlock &MBB,
   if (STI.hasJMPCALL())
     BuildMI(&MBB, DL, get(AVR::JMPk)).addMBB(&NewDestBB);
   else
-    report_fatal_error("cannot create long jump without FeatureJMPCALL");
+    BuildMI(&MBB, DL, get(AVR::RJMPk)).addMBB(&NewDestBB);
 }
 
 } // end of namespace llvm
diff --git a/llvm/test/CodeGen/AVR/bug-67042.ll b/llvm/test/CodeGen/AVR/bug-67042.ll
new file mode 100644
index 000000000000000..f2d8eb930cd39cb
--- /dev/null
+++ b/llvm/test/CodeGen/AVR/bug-67042.ll
@@ -0,0 +1,7633 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
+; RUN: llc < %s -mtriple=avr -mcpu=atmega328 | FileCheck %s --check-prefix=AVR51
+; RUN: llc < %s -mtriple=avr -mcpu=at90s8515 | FileCheck %s --check-prefix=AVR2
+
+; Test for bug https://github.com/llvm/llvm-project/issues/67042
+
+%struct.my_va_list = type { ptr }
+%union.anon = type { %struct.dtoa }
+%struct.dtoa = type { i32, i8, [18 x i8] }
+%struct.__file = type { i16, i8, ptr addrspace(1), ptr addrspace(1), ptr addrspace(1) }
+
+ at .str = private unnamed_addr constant [4 x i8] c"inf\00", align 1
+ at .str.1 = private unnamed_addr constant [4 x i8] c"nan\00", align 1
+ at .str.2 = private unnamed_addr constant [7 x i8] c"(null)\00", align 1
+
+define i16 @__d_vfprintf(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2) local_unnamed_addr addrspace(1) {
+; AVR51-LABEL: __d_vfprintf:
+; AVR51:       ; %bb.0:
+; AVR51-NEXT:    push r2
+; AVR51-NEXT:    push r3
+; AVR51-NEXT:    push r4
+; AVR51-NEXT:    push r5
+; AVR51-NEXT:    push r6
+; AVR51-NEXT:    push r7
+; AVR51-NEXT:    push r8
+; AVR51-NEXT:    push r9
+; AVR51-NEXT:    push r10
+; AVR51-NEXT:    push r11
+; AVR51-NEXT:    push r12
+; AVR51-NEXT:    push r13
+; AVR51-NEXT:    push r14
+; AVR51-NEXT:    push r15
+; AVR51-NEXT:    push r16
+; AVR51-NEXT:    push r17
+; AVR51-NEXT:    push r28
+; AVR51-NEXT:    push r29
+; AVR51-NEXT:    in r28, 61
+; AVR51-NEXT:    in r29, 62
+; AVR51-NEXT:    subi r28, 67
+; AVR51-NEXT:    sbci r29, 0
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    cli
+; AVR51-NEXT:    out 62, r29
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    out 61, r28
+; AVR51-NEXT:    movw r10, r22
+; AVR51-NEXT:    movw r6, r24
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 4
+; AVR51-NEXT:    std Y+63, r21
+; AVR51-NEXT:    std Y+62, r20
+; AVR51-NEXT:    sbiw r28, 4
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r6
+; AVR51-NEXT:    ldd r18, Z+2
+; AVR51-NEXT:    andi r18, 2
+; AVR51-NEXT:    ldi r24, 255
+; AVR51-NEXT:    ldi r25, 255
+; AVR51-NEXT:    cpi r18, 0
+; AVR51-NEXT:    brne .LBB0_1
+; AVR51-NEXT:  ; %bb.326:
+; AVR51-NEXT:    jmp .LBB0_320
+; AVR51-NEXT:  .LBB0_1:
+; AVR51-NEXT:    movw r30, r6
+; AVR51-NEXT:    ldd r4, Z+3
+; AVR51-NEXT:    ldd r5, Z+4
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 4
+; AVR51-NEXT:    ldd r18, Y+62
+; AVR51-NEXT:    ldd r19, Y+63
+; AVR51-NEXT:    sbiw r28, 4
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r19
+; AVR51-NEXT:    std Y+62, r18
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:    std Y+40, r19 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r18 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r18, r10
+; AVR51-NEXT:    std Y+31, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+30, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:  .LBB0_2: ; =>This Loop Header: Depth=1
+; AVR51-NEXT:    ; Child Loop BB0_9 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_113 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_116 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_135 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_143 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_152 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_171 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_198 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_206 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_216 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_242 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_255 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_273 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_267 Depth 2
+; AVR51-NEXT:    ; Child Loop BB0_211 Depth 2
+; AVR51-NEXT:    movw r26, r18
+; AVR51-NEXT:    ld r24, X+
+; AVR51-NEXT:    cpi r24, 37
+; AVR51-NEXT:    breq .LBB0_4
+; AVR51-NEXT:  ; %bb.3: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    brne .LBB0_5
+; AVR51-NEXT:  ; %bb.328:
+; AVR51-NEXT:    jmp .LBB0_318
+; AVR51-NEXT:  .LBB0_4: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r26, r18
+; AVR51-NEXT:    movw r30, r26
+; AVR51-NEXT:    ldd r25, Z+1
+; AVR51-NEXT:    adiw r26, 2
+; AVR51-NEXT:    cpi r25, 37
+; AVR51-NEXT:    brne .LBB0_6
+; AVR51-NEXT:  .LBB0_5: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r14, r26
+; AVR51-NEXT:    ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r30, 1
+; AVR51-NEXT:    std Y+40, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    movw r18, r14
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_2
+; AVR51-NEXT:  ; %bb.330:
+; AVR51-NEXT:    jmp .LBB0_319
+; AVR51-NEXT:  .LBB0_6: ; %.preheader24
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    movw r12, r18
+; AVR51-NEXT:    movw r8, r18
+; AVR51-NEXT:    movw r30, r18
+; AVR51-NEXT:    movw r22, r18
+; AVR51-NEXT:    rjmp .LBB0_9
+; AVR51-NEXT:  .LBB0_7: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r20, r8
+; AVR51-NEXT:    muls r21, r16
+; AVR51-NEXT:    mov r18, r0
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    mul r20, r16
+; AVR51-NEXT:    mov r20, r1
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    add r20, r18
+; AVR51-NEXT:    mov r21, r20
+; AVR51-NEXT:    clr r20
+; AVR51-NEXT:    mov r8, r0
+; AVR51-NEXT:    clr r9
+; AVR51-NEXT:    or r8, r20
+; AVR51-NEXT:    or r9, r21
+; AVR51-NEXT:    add r8, r24
+; AVR51-NEXT:    adc r9, r25
+; AVR51-NEXT:  .LBB0_8: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ld r25, X+
+; AVR51-NEXT:    cpi r25, 0
+; AVR51-NEXT:    mov r17, r1
+; AVR51-NEXT:    brne .LBB0_9
+; AVR51-NEXT:    rjmp .LBB0_65
+; AVR51-NEXT:  .LBB0_9: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    cpi r22, 32
+; AVR51-NEXT:    cpc r23, r1
+; AVR51-NEXT:    brsh .LBB0_14
+; AVR51-NEXT:  ; %bb.10: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 43
+; AVR51-NEXT:    brlt .LBB0_11
+; AVR51-NEXT:    rjmp .LBB0_18
+; AVR51-NEXT:  .LBB0_11: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 32
+; AVR51-NEXT:    brne .LBB0_12
+; AVR51-NEXT:    rjmp .LBB0_44
+; AVR51-NEXT:  .LBB0_12: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 35
+; AVR51-NEXT:    brne .LBB0_13
+; AVR51-NEXT:    rjmp .LBB0_42
+; AVR51-NEXT:  .LBB0_13: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 39
+; AVR51-NEXT:    breq .LBB0_8
+; AVR51-NEXT:    rjmp .LBB0_15
+; AVR51-NEXT:  .LBB0_14: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r22, -128
+; AVR51-NEXT:    cpc r23, r1
+; AVR51-NEXT:    brlo .LBB0_15
+; AVR51-NEXT:    rjmp .LBB0_22
+; AVR51-NEXT:  .LBB0_15: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    mov r24, r25
+; AVR51-NEXT:    subi r24, 48
+; AVR51-NEXT:    cpi r24, 10
+; AVR51-NEXT:    brlo .LBB0_16
+; AVR51-NEXT:    rjmp .LBB0_24
+; AVR51-NEXT:  .LBB0_16: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    clr r25
+; AVR51-NEXT:    movw r18, r22
+; AVR51-NEXT:    andi r18, 64
+; AVR51-NEXT:    andi r19, 0
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    breq .LBB0_17
+; AVR51-NEXT:    rjmp .LBB0_7
+; AVR51-NEXT:  .LBB0_17: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    muls r31, r16
+; AVR51-NEXT:    mov r18, r0
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    mul r30, r16
+; AVR51-NEXT:    mov r20, r1
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    add r20, r18
+; AVR51-NEXT:    mov r21, r20
+; AVR51-NEXT:    clr r20
+; AVR51-NEXT:    mov r30, r0
+; AVR51-NEXT:    clr r31
+; AVR51-NEXT:    or r30, r20
+; AVR51-NEXT:    or r31, r21
+; AVR51-NEXT:    add r30, r24
+; AVR51-NEXT:    adc r31, r25
+; AVR51-NEXT:    ori r22, 32
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_18: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 43
+; AVR51-NEXT:    brne .LBB0_19
+; AVR51-NEXT:    rjmp .LBB0_43
+; AVR51-NEXT:  .LBB0_19: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 45
+; AVR51-NEXT:    brne .LBB0_20
+; AVR51-NEXT:    rjmp .LBB0_45
+; AVR51-NEXT:  .LBB0_20: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 48
+; AVR51-NEXT:    breq .LBB0_21
+; AVR51-NEXT:    rjmp .LBB0_15
+; AVR51-NEXT:  .LBB0_21: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 1
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_22: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 108
+; AVR51-NEXT:    brge .LBB0_29
+; AVR51-NEXT:  ; %bb.23: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 76
+; AVR51-NEXT:    breq .LBB0_332
+; AVR51-NEXT:    rjmp .LBB0_33
+; AVR51-NEXT:  .LBB0_332: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    rjmp .LBB0_49
+; AVR51-NEXT:  .LBB0_24: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 104
+; AVR51-NEXT:    brge .LBB0_25
+; AVR51-NEXT:    rjmp .LBB0_35
+; AVR51-NEXT:  .LBB0_25: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 108
+; AVR51-NEXT:    brlt .LBB0_33
+; AVR51-NEXT:  ; %bb.26: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 108
+; AVR51-NEXT:    breq .LBB0_32
+; AVR51-NEXT:  ; %bb.27: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 116
+; AVR51-NEXT:    brne .LBB0_28
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_28: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 122
+; AVR51-NEXT:    brne .LBB0_321
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_321: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    rjmp .LBB0_64
+; AVR51-NEXT:  .LBB0_29: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 122
+; AVR51-NEXT:    brne .LBB0_30
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_30: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 116
+; AVR51-NEXT:    brne .LBB0_31
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_31: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 108
+; AVR51-NEXT:    breq .LBB0_32
+; AVR51-NEXT:    rjmp .LBB0_64
+; AVR51-NEXT:  .LBB0_32: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r24, r22
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    rol r25
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    rol r25
+; AVR51-NEXT:    andi r24, 0
+; AVR51-NEXT:    andi r25, 2
+; AVR51-NEXT:    or r24, r22
+; AVR51-NEXT:    or r25, r23
+; AVR51-NEXT:    ori r24, 128
+; AVR51-NEXT:    movw r22, r24
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_33: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 104
+; AVR51-NEXT:    brne .LBB0_34
+; AVR51-NEXT:    rjmp .LBB0_46
+; AVR51-NEXT:  .LBB0_34: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 106
+; AVR51-NEXT:    brne .LBB0_322
+; AVR51-NEXT:    rjmp .LBB0_49
+; AVR51-NEXT:  .LBB0_322: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    rjmp .LBB0_64
+; AVR51-NEXT:  .LBB0_35: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 46
+; AVR51-NEXT:    brlt .LBB0_36
+; AVR51-NEXT:    rjmp .LBB0_47
+; AVR51-NEXT:  .LBB0_36: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 36
+; AVR51-NEXT:    brne .LBB0_37
+; AVR51-NEXT:    rjmp .LBB0_50
+; AVR51-NEXT:  .LBB0_37: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 42
+; AVR51-NEXT:    breq .LBB0_38
+; AVR51-NEXT:    rjmp .LBB0_64
+; AVR51-NEXT:  .LBB0_38: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cp r12, r1
+; AVR51-NEXT:    cpc r13, r1
+; AVR51-NEXT:    breq .LBB0_39
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_39: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r20, r30
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    adiw r30, 2
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r31
+; AVR51-NEXT:    std Y+62, r30
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ld r24, Z
+; AVR51-NEXT:    ldd r25, Z+1
+; AVR51-NEXT:    movw r18, r22
+; AVR51-NEXT:    andi r18, 64
+; AVR51-NEXT:    andi r19, 0
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    breq .LBB0_40
+; AVR51-NEXT:    rjmp .LBB0_61
+; AVR51-NEXT:  .LBB0_40: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    mov r18, r25
+; AVR51-NEXT:    tst r18
+; AVR51-NEXT:    brpl .LBB0_41
+; AVR51-NEXT:    rjmp .LBB0_62
+; AVR51-NEXT:  .LBB0_41: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 32
+; AVR51-NEXT:    rjmp .LBB0_63
+; AVR51-NEXT:  .LBB0_42: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 16
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_43: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 2
+; AVR51-NEXT:  .LBB0_44: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 4
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_45: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 8
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_46: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r24, r22
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    rol r25
+; AVR51-NEXT:    andi r24, 0
+; AVR51-NEXT:    andi r25, 2
+; AVR51-NEXT:    or r24, r22
+; AVR51-NEXT:    or r25, r23
+; AVR51-NEXT:    ori r25, 1
+; AVR51-NEXT:    movw r22, r24
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_47: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 46
+; AVR51-NEXT:    brne .LBB0_48
+; AVR51-NEXT:    rjmp .LBB0_58
+; AVR51-NEXT:  .LBB0_48: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cpi r25, 76
+; AVR51-NEXT:    breq .LBB0_49
+; AVR51-NEXT:    rjmp .LBB0_64
+; AVR51-NEXT:  .LBB0_49: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 128
+; AVR51-NEXT:    ori r23, 2
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_50: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cp r12, r1
+; AVR51-NEXT:    cpc r13, r1
+; AVR51-NEXT:    brne .LBB0_51
+; AVR51-NEXT:    rjmp .LBB0_60
+; AVR51-NEXT:  .LBB0_51: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r14, r26
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 4
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 4
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r25
+; AVR51-NEXT:    std Y+62, r24
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    std Y+35, r23 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+34, r22 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r16, r22
+; AVR51-NEXT:    andi r16, 64
+; AVR51-NEXT:    andi r17, 0
+; AVR51-NEXT:    cp r16, r1
+; AVR51-NEXT:    cpc r17, r1
+; AVR51-NEXT:    movw r2, r30
+; AVR51-NEXT:    movw r20, r30
+; AVR51-NEXT:    breq .LBB0_53
+; AVR51-NEXT:  ; %bb.52: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r20, r8
+; AVR51-NEXT:  .LBB0_53: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r22, r28
+; AVR51-NEXT:    subi r22, 192
+; AVR51-NEXT:    sbci r23, 255
+; AVR51-NEXT:    movw r24, r10
+; AVR51-NEXT:    call skip_to_arg
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    adiw r30, 2
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r31
+; AVR51-NEXT:    std Y+62, r30
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ld r18, Z
+; AVR51-NEXT:    ldd r19, Z+1
+; AVR51-NEXT:    cp r16, r1
+; AVR51-NEXT:    cpc r17, r1
+; AVR51-NEXT:    movw r24, r18
+; AVR51-NEXT:    breq .LBB0_55
+; AVR51-NEXT:  ; %bb.54: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r24, r2
+; AVR51-NEXT:  .LBB0_55: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    cp r16, r1
+; AVR51-NEXT:    cpc r17, r1
+; AVR51-NEXT:    movw r26, r14
+; AVR51-NEXT:    breq .LBB0_57
+; AVR51-NEXT:  ; %bb.56: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r8, r18
+; AVR51-NEXT:  .LBB0_57: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:    ldd r22, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r23, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_58: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r24, r22
+; AVR51-NEXT:    andi r24, 64
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    breq .LBB0_59
+; AVR51-NEXT:    rjmp .LBB0_318
+; AVR51-NEXT:  .LBB0_59: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ori r22, 64
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_60: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    movw r12, r30
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r8, r24
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    movw r22, r24
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_61: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    movw r12, r18
+; AVR51-NEXT:    movw r8, r24
+; AVR51-NEXT:    movw r30, r20
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_62: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    neg r25
+; AVR51-NEXT:    neg r24
+; AVR51-NEXT:    sbc r25, r1
+; AVR51-NEXT:    ori r22, 40
+; AVR51-NEXT:  .LBB0_63: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    movw r12, r18
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    rjmp .LBB0_8
+; AVR51-NEXT:  .LBB0_64: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r17, r25
+; AVR51-NEXT:  .LBB0_65: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    std Y+29, r27 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+28, r26 ; 2-byte Folded Spill
+; AVR51-NEXT:    cp r12, r1
+; AVR51-NEXT:    cpc r13, r1
+; AVR51-NEXT:    std Y+33, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+32, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    breq .LBB0_67
+; AVR51-NEXT:  ; %bb.66: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 4
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 4
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r25
+; AVR51-NEXT:    std Y+62, r24
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r14, r22
+; AVR51-NEXT:    movw r22, r28
+; AVR51-NEXT:    subi r22, 192
+; AVR51-NEXT:    sbci r23, 255
+; AVR51-NEXT:    movw r24, r10
+; AVR51-NEXT:    movw r20, r12
+; AVR51-NEXT:    call skip_to_arg
+; AVR51-NEXT:    movw r22, r14
+; AVR51-NEXT:    ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT:  .LBB0_67: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r1, r8
+; AVR51-NEXT:    cpc r1, r9
+; AVR51-NEXT:    movw r20, r8
+; AVR51-NEXT:    brlt .LBB0_69
+; AVR51-NEXT:  ; %bb.68: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r20, r24
+; AVR51-NEXT:  .LBB0_69: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    tst r9
+; AVR51-NEXT:    brpl .LBB0_71
+; AVR51-NEXT:  ; %bb.70: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r22, 191
+; AVR51-NEXT:  .LBB0_71: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r26, r17
+; AVR51-NEXT:    ori r26, 32
+; AVR51-NEXT:    cpi r26, 97
+; AVR51-NEXT:    breq .LBB0_78
+; AVR51-NEXT:  ; %bb.72: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r24, r26
+; AVR51-NEXT:    subi r24, 101
+; AVR51-NEXT:    cpi r24, 3
+; AVR51-NEXT:    brlo .LBB0_78
+; AVR51-NEXT:  ; %bb.73: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 111
+; AVR51-NEXT:    brge .LBB0_74
+; AVR51-NEXT:    rjmp .LBB0_89
+; AVR51-NEXT:  .LBB0_74: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 115
+; AVR51-NEXT:    brlt .LBB0_75
+; AVR51-NEXT:    rjmp .LBB0_92
+; AVR51-NEXT:  .LBB0_75: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 111
+; AVR51-NEXT:    brne .LBB0_76
+; AVR51-NEXT:    rjmp .LBB0_119
+; AVR51-NEXT:  .LBB0_76: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 112
+; AVR51-NEXT:    breq .LBB0_77
+; AVR51-NEXT:    rjmp .LBB0_118
+; AVR51-NEXT:  .LBB0_77: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ori r22, 16
+; AVR51-NEXT:    rjmp .LBB0_119
+; AVR51-NEXT:  .LBB0_78: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    std Y+25, r21 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+24, r20 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+35, r23 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+34, r22 ; 2-byte Folded Spill
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    adiw r30, 2
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r31
+; AVR51-NEXT:    std Y+62, r30
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ld r18, Z
+; AVR51-NEXT:    ldd r19, Z+1
+; AVR51-NEXT:    mov r16, r26
+; AVR51-NEXT:    movw r26, r24
+; AVR51-NEXT:    adiw r26, 4
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r27
+; AVR51-NEXT:    std Y+62, r26
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    ldd r14, Z+2
+; AVR51-NEXT:    ldd r15, Z+3
+; AVR51-NEXT:    movw r26, r24
+; AVR51-NEXT:    adiw r26, 6
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r27
+; AVR51-NEXT:    std Y+62, r26
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    mov r26, r16
+; AVR51-NEXT:    ldd r22, Z+4
+; AVR51-NEXT:    ldd r23, Z+5
+; AVR51-NEXT:    adiw r24, 8
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r25
+; AVR51-NEXT:    std Y+62, r24
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    mov r24, r26
+; AVR51-NEXT:    sub r24, r17
+; AVR51-NEXT:    std Y+36, r24 ; 1-byte Folded Spill
+; AVR51-NEXT:    ldd r24, Z+6
+; AVR51-NEXT:    ldd r25, Z+7
+; AVR51-NEXT:    cpi r26, 97
+; AVR51-NEXT:    std Y+23, r11 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+22, r10 ; 2-byte Folded Spill
+; AVR51-NEXT:    breq .LBB0_79
+; AVR51-NEXT:    rjmp .LBB0_84
+; AVR51-NEXT:  .LBB0_79: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r17, 48
+; AVR51-NEXT:    std Y+46, r17
+; AVR51-NEXT:    mov r30, r24
+; AVR51-NEXT:    swap r30
+; AVR51-NEXT:    andi r30, 15
+; AVR51-NEXT:    mov r31, r25
+; AVR51-NEXT:    swap r31
+; AVR51-NEXT:    eor r30, r31
+; AVR51-NEXT:    andi r31, 15
+; AVR51-NEXT:    eor r30, r31
+; AVR51-NEXT:    andi r31, 7
+; AVR51-NEXT:    std Y+21, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+20, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    or r30, r18
+; AVR51-NEXT:    or r31, r19
+; AVR51-NEXT:    movw r26, r24
+; AVR51-NEXT:    andi r26, 15
+; AVR51-NEXT:    andi r27, 0
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    cp r30, r1
+; AVR51-NEXT:    cpc r31, r1
+; AVR51-NEXT:    ldi r20, 0
+; AVR51-NEXT:    ldi r21, 0
+; AVR51-NEXT:    cpc r14, r20
+; AVR51-NEXT:    cpc r15, r21
+; AVR51-NEXT:    cpc r22, r20
+; AVR51-NEXT:    cpc r23, r21
+; AVR51-NEXT:    std Y+38, r27 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+37, r26 ; 2-byte Folded Spill
+; AVR51-NEXT:    cpc r26, r20
+; AVR51-NEXT:    cpc r27, r21
+; AVR51-NEXT:    ldd r30, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT:    movw r26, r14
+; AVR51-NEXT:    breq .LBB0_81
+; AVR51-NEXT:  ; %bb.80: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r24, r1
+; AVR51-NEXT:  .LBB0_81: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r24, 1
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    breq .LBB0_82
+; AVR51-NEXT:    rjmp .LBB0_127
+; AVR51-NEXT:  .LBB0_82: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r20, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT:    cp r20, r1
+; AVR51-NEXT:    cpc r21, r1
+; AVR51-NEXT:    brne .LBB0_83
+; AVR51-NEXT:    rjmp .LBB0_125
+; AVR51-NEXT:  .LBB0_83: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r17, 49
+; AVR51-NEXT:    std Y+46, r17
+; AVR51-NEXT:    ldd r20, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_126
+; AVR51-NEXT:  .LBB0_84: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    andi r20, 64
+; AVR51-NEXT:    andi r21, 0
+; AVR51-NEXT:    cp r20, r1
+; AVR51-NEXT:    cpc r21, r1
+; AVR51-NEXT:    ldi r20, 6
+; AVR51-NEXT:    ldi r21, 0
+; AVR51-NEXT:    movw r2, r20
+; AVR51-NEXT:    ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT:    breq .LBB0_86
+; AVR51-NEXT:  ; %bb.85: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r2, r20
+; AVR51-NEXT:  .LBB0_86: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r26, 102
+; AVR51-NEXT:    mov r20, r26
+; AVR51-NEXT:    movw r26, r14
+; AVR51-NEXT:    brne .LBB0_87
+; AVR51-NEXT:    rjmp .LBB0_95
+; AVR51-NEXT:  .LBB0_87: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r20, 101
+; AVR51-NEXT:    breq .LBB0_88
+; AVR51-NEXT:    rjmp .LBB0_96
+; AVR51-NEXT:  .LBB0_88: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    ori r21, 16
+; AVR51-NEXT:    std Y+35, r21 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+34, r20 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r20, r2
+; AVR51-NEXT:    mov r30, r20
+; AVR51-NEXT:    inc r30
+; AVR51-NEXT:    ldi r20, 101
+; AVR51-NEXT:    std Y+37, r20 ; 1-byte Folded Spill
+; AVR51-NEXT:    rjmp .LBB0_99
+; AVR51-NEXT:  .LBB0_89: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 99
+; AVR51-NEXT:    brne .LBB0_90
+; AVR51-NEXT:    rjmp .LBB0_102
+; AVR51-NEXT:  .LBB0_90: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 100
+; AVR51-NEXT:    brne .LBB0_91
+; AVR51-NEXT:    rjmp .LBB0_119
+; AVR51-NEXT:  .LBB0_91: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 105
+; AVR51-NEXT:    brne .LBB0_323
+; AVR51-NEXT:    rjmp .LBB0_119
+; AVR51-NEXT:  .LBB0_323: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    rjmp .LBB0_118
+; AVR51-NEXT:  .LBB0_92: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 115
+; AVR51-NEXT:    brne .LBB0_93
+; AVR51-NEXT:    rjmp .LBB0_103
+; AVR51-NEXT:  .LBB0_93: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r17, 117
+; AVR51-NEXT:    breq .LBB0_94
+; AVR51-NEXT:    rjmp .LBB0_118
+; AVR51-NEXT:  .LBB0_94: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r22, 239
+; AVR51-NEXT:    rjmp .LBB0_119
+; AVR51-NEXT:  .LBB0_95: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    ori r21, 32
+; AVR51-NEXT:    std Y+35, r21 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+34, r20 ; 2-byte Folded Spill
+; AVR51-NEXT:    ldi r20, 102
+; AVR51-NEXT:    std Y+37, r20 ; 1-byte Folded Spill
+; AVR51-NEXT:    ldi r31, 1
+; AVR51-NEXT:    ldi r30, 17
+; AVR51-NEXT:    movw r10, r2
+; AVR51-NEXT:    cpi r30, 17
+; AVR51-NEXT:    brsh .LBB0_100
+; AVR51-NEXT:    rjmp .LBB0_101
+; AVR51-NEXT:  .LBB0_96: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r30, 1
+; AVR51-NEXT:    movw r20, r2
+; AVR51-NEXT:    cpi r20, 0
+; AVR51-NEXT:    breq .LBB0_98
+; AVR51-NEXT:  ; %bb.97: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r20, r2
+; AVR51-NEXT:    mov r30, r20
+; AVR51-NEXT:  .LBB0_98: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    subi r16, 2
+; AVR51-NEXT:    std Y+37, r16 ; 1-byte Folded Spill
+; AVR51-NEXT:  .LBB0_99: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r20, 0
+; AVR51-NEXT:    ldi r21, 0
+; AVR51-NEXT:    movw r10, r20
+; AVR51-NEXT:    mov r31, r1
+; AVR51-NEXT:    cpi r30, 17
+; AVR51-NEXT:    brlo .LBB0_101
+; AVR51-NEXT:  .LBB0_100: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r30, 17
+; AVR51-NEXT:  .LBB0_101: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r14, r30
+; AVR51-NEXT:    clr r15
+; AVR51-NEXT:    movw r16, r28
+; AVR51-NEXT:    subi r16, 215
+; AVR51-NEXT:    sbci r17, 255
+; AVR51-NEXT:    movw r20, r26
+; AVR51-NEXT:    mov r12, r31
+; AVR51-NEXT:    call __dtoa_engine
+; AVR51-NEXT:    movw r26, r24
+; AVR51-NEXT:    ldi r24, 2
+; AVR51-NEXT:    ldd r18, Y+45
+; AVR51-NEXT:    std Y+27, r19 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+26, r18 ; 2-byte Folded Spill
+; AVR51-NEXT:    ldd r22, Y+41
+; AVR51-NEXT:    ldd r23, Y+42
+; AVR51-NEXT:    ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_181
+; AVR51-NEXT:  .LBB0_102: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r26, Y+62
+; AVR51-NEXT:    ldd r27, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r24, r26
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r25
+; AVR51-NEXT:    std Y+62, r24
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    ld r24, X
+; AVR51-NEXT:    std Y+41, r24
+; AVR51-NEXT:    movw r24, r28
+; AVR51-NEXT:    adiw r24, 41
+; AVR51-NEXT:    movw r12, r24
+; AVR51-NEXT:    ldi r18, 1
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    rjmp .LBB0_108
+; AVR51-NEXT:  .LBB0_103: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    adiw r30, 2
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r31
+; AVR51-NEXT:    std Y+62, r30
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    movw r14, r22
+; AVR51-NEXT:    movw r18, r22
+; AVR51-NEXT:    andi r18, 64
+; AVR51-NEXT:    andi r19, 0
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    ldi r22, 255
+; AVR51-NEXT:    ldi r23, 255
+; AVR51-NEXT:    breq .LBB0_105
+; AVR51-NEXT:  ; %bb.104: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r22, r20
+; AVR51-NEXT:  .LBB0_105: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ld r24, Z
+; AVR51-NEXT:    ldd r25, Z+1
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    ldi r18, lo8(.str.2)
+; AVR51-NEXT:    ldi r19, hi8(.str.2)
+; AVR51-NEXT:    breq .LBB0_107
+; AVR51-NEXT:  ; %bb.106: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r18, r24
+; AVR51-NEXT:  .LBB0_107: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r12, r18
+; AVR51-NEXT:    movw r24, r18
+; AVR51-NEXT:    call strnlen
+; AVR51-NEXT:    movw r18, r24
+; AVR51-NEXT:    ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT:    movw r22, r14
+; AVR51-NEXT:  .LBB0_108: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r22, 8
+; AVR51-NEXT:    andi r23, 0
+; AVR51-NEXT:    cp r22, r1
+; AVR51-NEXT:    cpc r23, r1
+; AVR51-NEXT:    brne .LBB0_115
+; AVR51-NEXT:  ; %bb.109: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r30, r18
+; AVR51-NEXT:    cpc r31, r19
+; AVR51-NEXT:    movw r16, r30
+; AVR51-NEXT:    brlo .LBB0_113
+; AVR51-NEXT:  ; %bb.110: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r16, r18
+; AVR51-NEXT:    rjmp .LBB0_113
+; AVR51-NEXT:  .LBB0_111: ; in Loop: Header=BB0_113 Depth=2
+; AVR51-NEXT:    movw r8, r18
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    ldi r24, 32
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_112
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_112: ; in Loop: Header=BB0_113 Depth=2
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    sbiw r30, 1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r18, r8
+; AVR51-NEXT:  .LBB0_113: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    cp r18, r30
+; AVR51-NEXT:    cpc r19, r31
+; AVR51-NEXT:    brlo .LBB0_111
+; AVR51-NEXT:  ; %bb.114: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r30, r16
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:  .LBB0_115: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    add r24, r18
+; AVR51-NEXT:    adc r25, r19
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    sub r30, r18
+; AVR51-NEXT:    sbc r31, r19
+; AVR51-NEXT:  .LBB0_116: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    brne .LBB0_117
+; AVR51-NEXT:    rjmp .LBB0_211
+; AVR51-NEXT:  .LBB0_117: ; in Loop: Header=BB0_116 Depth=2
+; AVR51-NEXT:    std Y+38, r19 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+37, r18 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r26, r12
+; AVR51-NEXT:    ld r24, X+
+; AVR51-NEXT:    movw r12, r26
+; AVR51-NEXT:    ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    sbiw r26, 1
+; AVR51-NEXT:    std Y+38, r27 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+37, r26 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    ldd r18, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r19, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_116
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_118: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r26, 120
+; AVR51-NEXT:    breq .LBB0_119
+; AVR51-NEXT:    rjmp .LBB0_137
+; AVR51-NEXT:  .LBB0_119: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r22
+; AVR51-NEXT:    andi r24, 128
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    brne .LBB0_121
+; AVR51-NEXT:  ; %bb.120: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    rjmp .LBB0_124
+; AVR51-NEXT:  .LBB0_121: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r22, 0
+; AVR51-NEXT:    andi r23, 2
+; AVR51-NEXT:    cp r1, r1
+; AVR51-NEXT:    cpc r23, r1
+; AVR51-NEXT:    brne .LBB0_123
+; AVR51-NEXT:  ; %bb.122: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    adiw r24, 4
+; AVR51-NEXT:    rjmp .LBB0_124
+; AVR51-NEXT:  .LBB0_123: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    ldd r24, Y+62
+; AVR51-NEXT:    ldd r25, Y+63
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    adiw r24, 8
+; AVR51-NEXT:  .LBB0_124: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    adiw r28, 2
+; AVR51-NEXT:    std Y+63, r25
+; AVR51-NEXT:    std Y+62, r24
+; AVR51-NEXT:    sbiw r28, 2
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    rjmp .LBB0_211
+; AVR51-NEXT:  .LBB0_125: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r20, 1
+; AVR51-NEXT:    ldi r21, 0
+; AVR51-NEXT:  .LBB0_126: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    subi r20, 255
+; AVR51-NEXT:    sbci r21, 3
+; AVR51-NEXT:    std Y+21, r21 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+20, r20 ; 2-byte Folded Spill
+; AVR51-NEXT:  .LBB0_127: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    lsl r25
+; AVR51-NEXT:    mov r20, r1
+; AVR51-NEXT:    rol r20
+; AVR51-NEXT:    mov r24, r20
+; AVR51-NEXT:    std Y+27, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+26, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+45, r20
+; AVR51-NEXT:    ldd r24, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    andi r24, 64
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    brne .LBB0_129
+; AVR51-NEXT:  ; %bb.128: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    rjmp .LBB0_131
+; AVR51-NEXT:  .LBB0_129: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r30, 13
+; AVR51-NEXT:    cpc r31, r1
+; AVR51-NEXT:    brlo .LBB0_132
+; AVR51-NEXT:  ; %bb.130: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 13
+; AVR51-NEXT:  .LBB0_131: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r10, r24
+; AVR51-NEXT:    rjmp .LBB0_163
+; AVR51-NEXT:  .LBB0_132: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    std Y+3, r17 ; 1-byte Folded Spill
+; AVR51-NEXT:    std Y+19, r27 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+18, r26 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+15, r5 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+14, r4 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+13, r7 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+12, r6 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r20, r30
+; AVR51-NEXT:    lsl r20
+; AVR51-NEXT:    rol r21
+; AVR51-NEXT:    lsl r20
+; AVR51-NEXT:    rol r21
+; AVR51-NEXT:    ldi r24, 51
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    mov r16, r20
+; AVR51-NEXT:    std Y+2, r17 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+1, r16 ; 2-byte Folded Spill
+; AVR51-NEXT:    sub r24, r20
+; AVR51-NEXT:    sbc r25, r21
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    brne .LBB0_133
+; AVR51-NEXT:    rjmp .LBB0_139
+; AVR51-NEXT:  .LBB0_133: ; %shift.loop.preheader
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r25, r30
+; AVR51-NEXT:    lsl r25
+; AVR51-NEXT:    lsl r25
+; AVR51-NEXT:    subi r25, 51
+; AVR51-NEXT:    ldi r30, 1
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    movw r20, r30
+; AVR51-NEXT:    ldi r30, 0
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    movw r2, r30
+; AVR51-NEXT:    movw r12, r2
+; AVR51-NEXT:    movw r10, r2
+; AVR51-NEXT:    rjmp .LBB0_135
+; AVR51-NEXT:  .LBB0_134: ; %shift.loop
+; AVR51-NEXT:    ; in Loop: Header=BB0_135 Depth=2
+; AVR51-NEXT:    mov r31, r13
+; AVR51-NEXT:    lsl r31
+; AVR51-NEXT:    mov r16, r1
+; AVR51-NEXT:    rol r16
+; AVR51-NEXT:    mov r17, r1
+; AVR51-NEXT:    mov r8, r1
+; AVR51-NEXT:    mov r9, r1
+; AVR51-NEXT:    lsl r10
+; AVR51-NEXT:    rol r11
+; AVR51-NEXT:    rol r2
+; AVR51-NEXT:    rol r3
+; AVR51-NEXT:    or r2, r8
+; AVR51-NEXT:    or r3, r9
+; AVR51-NEXT:    or r10, r16
+; AVR51-NEXT:    or r11, r17
+; AVR51-NEXT:    lsl r20
+; AVR51-NEXT:    rol r21
+; AVR51-NEXT:    rol r12
+; AVR51-NEXT:    rol r13
+; AVR51-NEXT:    cpi r30, 1
+; AVR51-NEXT:    brne .LBB0_135
+; AVR51-NEXT:    rjmp .LBB0_140
+; AVR51-NEXT:  .LBB0_135: ; %shift.loop
+; AVR51-NEXT:    ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    inc r25
+; AVR51-NEXT:    ldi r30, 1
+; AVR51-NEXT:    cpi r25, 0
+; AVR51-NEXT:    breq .LBB0_134
+; AVR51-NEXT:  ; %bb.136: ; %shift.loop
+; AVR51-NEXT:    ; in Loop: Header=BB0_135 Depth=2
+; AVR51-NEXT:    mov r30, r1
+; AVR51-NEXT:    rjmp .LBB0_134
+; AVR51-NEXT:  .LBB0_137: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 37
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_138
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_138: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    mov r24, r17
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    ldd r18, Y+28 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r19, Y+29 ; 2-byte Folded Reload
+; AVR51-NEXT:    brmi .LBB0_324
+; AVR51-NEXT:    rjmp .LBB0_2
+; AVR51-NEXT:  .LBB0_324:
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_139: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r30, 1
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    movw r20, r30
+; AVR51-NEXT:    ldi r30, 0
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    movw r2, r30
+; AVR51-NEXT:    movw r12, r2
+; AVR51-NEXT:    movw r10, r2
+; AVR51-NEXT:  .LBB0_140: ; %shift.done
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    std Y+17, r21 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+16, r20 ; 2-byte Folded Spill
+; AVR51-NEXT:    brne .LBB0_141
+; AVR51-NEXT:    rjmp .LBB0_145
+; AVR51-NEXT:  .LBB0_141: ; %shift.loop2.preheader
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT:    mov r30, r24
+; AVR51-NEXT:    lsl r30
+; AVR51-NEXT:    lsl r30
+; AVR51-NEXT:    subi r30, 51
+; AVR51-NEXT:    ldi r24, 2
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r8, r24
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r4, r24
+; AVR51-NEXT:    movw r16, r4
+; AVR51-NEXT:    rjmp .LBB0_143
+; AVR51-NEXT:  .LBB0_142: ; %shift.loop2
+; AVR51-NEXT:    ; in Loop: Header=BB0_143 Depth=2
+; AVR51-NEXT:    mov r7, r17
+; AVR51-NEXT:    lsl r7
+; AVR51-NEXT:    mov r6, r1
+; AVR51-NEXT:    rol r6
+; AVR51-NEXT:    mov r7, r1
+; AVR51-NEXT:    mov r14, r1
+; AVR51-NEXT:    mov r15, r1
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    rol r25
+; AVR51-NEXT:    rol r4
+; AVR51-NEXT:    rol r5
+; AVR51-NEXT:    or r4, r14
+; AVR51-NEXT:    or r5, r15
+; AVR51-NEXT:    or r24, r6
+; AVR51-NEXT:    or r25, r7
+; AVR51-NEXT:    lsl r8
+; AVR51-NEXT:    rol r9
+; AVR51-NEXT:    rol r16
+; AVR51-NEXT:    rol r17
+; AVR51-NEXT:    cpi r31, 1
+; AVR51-NEXT:    breq .LBB0_146
+; AVR51-NEXT:  .LBB0_143: ; %shift.loop2
+; AVR51-NEXT:    ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    inc r30
+; AVR51-NEXT:    ldi r31, 1
+; AVR51-NEXT:    cpi r30, 0
+; AVR51-NEXT:    breq .LBB0_142
+; AVR51-NEXT:  ; %bb.144: ; %shift.loop2
+; AVR51-NEXT:    ; in Loop: Header=BB0_143 Depth=2
+; AVR51-NEXT:    mov r31, r1
+; AVR51-NEXT:    rjmp .LBB0_142
+; AVR51-NEXT:  .LBB0_145: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 2
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r8, r24
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r4, r24
+; AVR51-NEXT:    movw r16, r4
+; AVR51-NEXT:  .LBB0_146: ; %shift.done1
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r26, r8
+; AVR51-NEXT:    subi r26, 1
+; AVR51-NEXT:    sbci r27, 0
+; AVR51-NEXT:    movw r30, r16
+; AVR51-NEXT:    sbci r30, 0
+; AVR51-NEXT:    sbci r31, 0
+; AVR51-NEXT:    movw r20, r30
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    sbci r30, 0
+; AVR51-NEXT:    sbci r31, 0
+; AVR51-NEXT:    movw r6, r30
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    sbci r30, 0
+; AVR51-NEXT:    sbci r31, 0
+; AVR51-NEXT:    and r26, r18
+; AVR51-NEXT:    and r27, r19
+; AVR51-NEXT:    std Y+11, r27 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+10, r26 ; 2-byte Folded Spill
+; AVR51-NEXT:    ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r20, r26
+; AVR51-NEXT:    and r21, r27
+; AVR51-NEXT:    std Y+9, r21 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+8, r20 ; 2-byte Folded Spill
+; AVR51-NEXT:    and r6, r22
+; AVR51-NEXT:    and r7, r23
+; AVR51-NEXT:    ldd r14, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r15, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r30, r14
+; AVR51-NEXT:    and r31, r15
+; AVR51-NEXT:    ldi r26, 1
+; AVR51-NEXT:    ldd r14, Y+16 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r15, Y+17 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r20, Y+10 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+11 ; 2-byte Folded Reload
+; AVR51-NEXT:    cp r14, r20
+; AVR51-NEXT:    cpc r15, r21
+; AVR51-NEXT:    ldd r20, Y+8 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+9 ; 2-byte Folded Reload
+; AVR51-NEXT:    cpc r12, r20
+; AVR51-NEXT:    cpc r13, r21
+; AVR51-NEXT:    cpc r10, r6
+; AVR51-NEXT:    cpc r11, r7
+; AVR51-NEXT:    cpc r2, r30
+; AVR51-NEXT:    cpc r3, r31
+; AVR51-NEXT:    brlo .LBB0_148
+; AVR51-NEXT:  ; %bb.147: ; %shift.done1
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r26, r1
+; AVR51-NEXT:  .LBB0_148: ; %shift.done1
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r26, 1
+; AVR51-NEXT:    ldi r30, 0
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    sub r14, r8
+; AVR51-NEXT:    sbc r15, r9
+; AVR51-NEXT:    std Y+11, r15 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+10, r14 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    sbc r14, r16
+; AVR51-NEXT:    sbc r15, r17
+; AVR51-NEXT:    std Y+9, r15 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+8, r14 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r16, r30
+; AVR51-NEXT:    sbc r16, r24
+; AVR51-NEXT:    sbc r17, r25
+; AVR51-NEXT:    std Y+7, r17 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+6, r16 ; 2-byte Folded Spill
+; AVR51-NEXT:    sbc r30, r4
+; AVR51-NEXT:    sbc r31, r5
+; AVR51-NEXT:    std Y+5, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+4, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    cpi r26, 0
+; AVR51-NEXT:    ldd r20, Y+16 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+17 ; 2-byte Folded Reload
+; AVR51-NEXT:    breq .LBB0_149
+; AVR51-NEXT:    rjmp .LBB0_158
+; AVR51-NEXT:  .LBB0_149: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+1 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+2 ; 2-byte Folded Reload
+; AVR51-NEXT:    cpi r24, 52
+; AVR51-NEXT:    brne .LBB0_150
+; AVR51-NEXT:    rjmp .LBB0_154
+; AVR51-NEXT:  .LBB0_150: ; %shift.loop4.preheader
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT:    mov r30, r24
+; AVR51-NEXT:    lsl r30
+; AVR51-NEXT:    lsl r30
+; AVR51-NEXT:    subi r30, 52
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    ldi r16, 0
+; AVR51-NEXT:    ldi r17, 0
+; AVR51-NEXT:    movw r4, r16
+; AVR51-NEXT:    movw r8, r4
+; AVR51-NEXT:    rjmp .LBB0_152
+; AVR51-NEXT:  .LBB0_151: ; %shift.loop4
+; AVR51-NEXT:    ; in Loop: Header=BB0_152 Depth=2
+; AVR51-NEXT:    mov r15, r17
+; AVR51-NEXT:    lsl r15
+; AVR51-NEXT:    mov r14, r1
+; AVR51-NEXT:    rol r14
+; AVR51-NEXT:    mov r15, r1
+; AVR51-NEXT:    mov r6, r1
+; AVR51-NEXT:    mov r7, r1
+; AVR51-NEXT:    lsl r8
+; AVR51-NEXT:    rol r9
+; AVR51-NEXT:    rol r4
+; AVR51-NEXT:    rol r5
+; AVR51-NEXT:    or r4, r6
+; AVR51-NEXT:    or r5, r7
+; AVR51-NEXT:    or r8, r14
+; AVR51-NEXT:    or r9, r15
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    rol r25
+; AVR51-NEXT:    rol r16
+; AVR51-NEXT:    rol r17
+; AVR51-NEXT:    cpi r31, 1
+; AVR51-NEXT:    breq .LBB0_155
+; AVR51-NEXT:  .LBB0_152: ; %shift.loop4
+; AVR51-NEXT:    ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    inc r30
+; AVR51-NEXT:    ldi r31, 1
+; AVR51-NEXT:    cpi r30, 0
+; AVR51-NEXT:    breq .LBB0_151
+; AVR51-NEXT:  ; %bb.153: ; %shift.loop4
+; AVR51-NEXT:    ; in Loop: Header=BB0_152 Depth=2
+; AVR51-NEXT:    mov r31, r1
+; AVR51-NEXT:    rjmp .LBB0_151
+; AVR51-NEXT:  .LBB0_154: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    ldi r30, 0
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    movw r4, r30
+; AVR51-NEXT:    movw r16, r4
+; AVR51-NEXT:    movw r8, r4
+; AVR51-NEXT:  .LBB0_155: ; %shift.done3
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r30, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r16, r30
+; AVR51-NEXT:    and r17, r31
+; AVR51-NEXT:    and r8, r22
+; AVR51-NEXT:    and r9, r23
+; AVR51-NEXT:    ldd r30, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r4, r30
+; AVR51-NEXT:    and r5, r31
+; AVR51-NEXT:    and r24, r18
+; AVR51-NEXT:    and r25, r19
+; AVR51-NEXT:    ldi r30, 1
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    cpc r16, r24
+; AVR51-NEXT:    cpc r17, r25
+; AVR51-NEXT:    cpc r8, r24
+; AVR51-NEXT:    cpc r9, r25
+; AVR51-NEXT:    cpc r4, r24
+; AVR51-NEXT:    cpc r5, r25
+; AVR51-NEXT:    breq .LBB0_157
+; AVR51-NEXT:  ; %bb.156: ; %shift.done3
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r30, r1
+; AVR51-NEXT:  .LBB0_157: ; %shift.done3
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r30, 1
+; AVR51-NEXT:    cpi r30, 0
+; AVR51-NEXT:    breq .LBB0_158
+; AVR51-NEXT:    rjmp .LBB0_162
+; AVR51-NEXT:  .LBB0_158: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    add r18, r20
+; AVR51-NEXT:    adc r19, r21
+; AVR51-NEXT:    ldd r16, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r17, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT:    adc r16, r12
+; AVR51-NEXT:    adc r17, r13
+; AVR51-NEXT:    adc r22, r10
+; AVR51-NEXT:    adc r23, r11
+; AVR51-NEXT:    ldd r14, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r15, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    adc r14, r2
+; AVR51-NEXT:    adc r15, r3
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    ldi r30, 0
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    std Y+19, r17 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+18, r16 ; 2-byte Folded Spill
+; AVR51-NEXT:    cpc r16, r30
+; AVR51-NEXT:    cpc r17, r31
+; AVR51-NEXT:    cpc r22, r30
+; AVR51-NEXT:    cpc r23, r31
+; AVR51-NEXT:    ldi r30, 16
+; AVR51-NEXT:    ldi r31, 0
+; AVR51-NEXT:    std Y+38, r15 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+37, r14 ; 2-byte Folded Spill
+; AVR51-NEXT:    cpc r14, r30
+; AVR51-NEXT:    cpc r15, r31
+; AVR51-NEXT:    brlo .LBB0_160
+; AVR51-NEXT:  ; %bb.159: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r24, r1
+; AVR51-NEXT:  .LBB0_160: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r24, 1
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    ldd r24, Y+3 ; 1-byte Folded Reload
+; AVR51-NEXT:    brne .LBB0_162
+; AVR51-NEXT:  ; %bb.161: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    inc r24
+; AVR51-NEXT:    std Y+46, r24
+; AVR51-NEXT:  .LBB0_162: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+10 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+11 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r18, r24
+; AVR51-NEXT:    and r19, r25
+; AVR51-NEXT:    ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r24, Y+8 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+9 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r26, r24
+; AVR51-NEXT:    and r27, r25
+; AVR51-NEXT:    ldd r24, Y+6 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+7 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r22, r24
+; AVR51-NEXT:    and r23, r25
+; AVR51-NEXT:    ldd r24, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r20, Y+4 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+5 ; 2-byte Folded Reload
+; AVR51-NEXT:    and r24, r20
+; AVR51-NEXT:    and r25, r21
+; AVR51-NEXT:    std Y+38, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+37, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    ldd r6, Y+12 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r7, Y+13 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r4, Y+14 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r5, Y+15 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r10, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r11, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT:  .LBB0_163: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    ori r25, 24
+; AVR51-NEXT:    movw r12, r24
+; AVR51-NEXT:    ldd r24, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    ldi r24, 4
+; AVR51-NEXT:    cpc r25, r24
+; AVR51-NEXT:    brne .LBB0_168
+; AVR51-NEXT:  ; %bb.164: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    cpc r26, r18
+; AVR51-NEXT:    cpc r27, r19
+; AVR51-NEXT:    cpc r22, r18
+; AVR51-NEXT:    cpc r23, r19
+; AVR51-NEXT:    ldd r20, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    cpc r20, r18
+; AVR51-NEXT:    cpc r21, r19
+; AVR51-NEXT:    breq .LBB0_166
+; AVR51-NEXT:  ; %bb.165: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r24, r1
+; AVR51-NEXT:  .LBB0_166: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r24, 1
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    movw r20, r12
+; AVR51-NEXT:    ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR51-NEXT:    breq .LBB0_167
+; AVR51-NEXT:    rjmp .LBB0_179
+; AVR51-NEXT:  .LBB0_167: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ori r24, 8
+; AVR51-NEXT:    rjmp .LBB0_180
+; AVR51-NEXT:  .LBB0_168: ; %.preheader18
+; AVR51-NEXT:    ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r25, 13
+; AVR51-NEXT:    rjmp .LBB0_171
+; AVR51-NEXT:  .LBB0_169: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    movw r26, r2
+; AVR51-NEXT:  .LBB0_170: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    mov r17, r19
+; AVR51-NEXT:    mov r20, r1
+; AVR51-NEXT:    mov r19, r1
+; AVR51-NEXT:    mov r18, r1
+; AVR51-NEXT:    or r26, r20
+; AVR51-NEXT:    or r27, r21
+; AVR51-NEXT:    or r18, r16
+; AVR51-NEXT:    or r19, r17
+; AVR51-NEXT:    dec r25
+; AVR51-NEXT:  .LBB0_171: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    cpi r25, 0
+; AVR51-NEXT:    brne .LBB0_172
+; AVR51-NEXT:    rjmp .LBB0_178
+; AVR51-NEXT:  .LBB0_172: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    mov r16, r18
+; AVR51-NEXT:    swap r16
+; AVR51-NEXT:    andi r16, 15
+; AVR51-NEXT:    swap r19
+; AVR51-NEXT:    eor r16, r19
+; AVR51-NEXT:    andi r19, 15
+; AVR51-NEXT:    eor r16, r19
+; AVR51-NEXT:    swap r26
+; AVR51-NEXT:    eor r19, r26
+; AVR51-NEXT:    andi r26, 15
+; AVR51-NEXT:    eor r19, r26
+; AVR51-NEXT:    swap r27
+; AVR51-NEXT:    eor r26, r27
+; AVR51-NEXT:    andi r27, 15
+; AVR51-NEXT:    eor r26, r27
+; AVR51-NEXT:    swap r22
+; AVR51-NEXT:    mov r21, r22
+; AVR51-NEXT:    andi r21, 240
+; AVR51-NEXT:    andi r22, 15
+; AVR51-NEXT:    swap r23
+; AVR51-NEXT:    eor r22, r23
+; AVR51-NEXT:    andi r23, 15
+; AVR51-NEXT:    eor r22, r23
+; AVR51-NEXT:    ldd r30, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT:    swap r30
+; AVR51-NEXT:    eor r23, r30
+; AVR51-NEXT:    andi r30, 15
+; AVR51-NEXT:    eor r23, r30
+; AVR51-NEXT:    swap r31
+; AVR51-NEXT:    eor r30, r31
+; AVR51-NEXT:    andi r31, 15
+; AVR51-NEXT:    eor r30, r31
+; AVR51-NEXT:    std Y+38, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+37, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    mov r14, r25
+; AVR51-NEXT:    clr r15
+; AVR51-NEXT:    andi r18, 15
+; AVR51-NEXT:    cpi r18, 0
+; AVR51-NEXT:    brne .LBB0_174
+; AVR51-NEXT:  ; %bb.173: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    cp r10, r14
+; AVR51-NEXT:    cpc r11, r15
+; AVR51-NEXT:    brge .LBB0_174
+; AVR51-NEXT:    rjmp .LBB0_170
+; AVR51-NEXT:  .LBB0_174: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    movw r2, r26
+; AVR51-NEXT:    mov r24, r18
+; AVR51-NEXT:    ori r24, 48
+; AVR51-NEXT:    cpi r18, 10
+; AVR51-NEXT:    brlo .LBB0_176
+; AVR51-NEXT:  ; %bb.175: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    ldd r24, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT:    sub r18, r24
+; AVR51-NEXT:    subi r18, -87
+; AVR51-NEXT:    mov r24, r18
+; AVR51-NEXT:  .LBB0_176: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    movw r30, r28
+; AVR51-NEXT:    adiw r30, 41
+; AVR51-NEXT:    add r30, r14
+; AVR51-NEXT:    adc r31, r15
+; AVR51-NEXT:    std Z+5, r24
+; AVR51-NEXT:    cp r14, r10
+; AVR51-NEXT:    cpc r15, r11
+; AVR51-NEXT:    brge .LBB0_177
+; AVR51-NEXT:    rjmp .LBB0_169
+; AVR51-NEXT:  .LBB0_177: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT:    movw r10, r14
+; AVR51-NEXT:    rjmp .LBB0_169
+; AVR51-NEXT:  .LBB0_178: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 112
+; AVR51-NEXT:    std Y+37, r24 ; 1-byte Folded Spill
+; AVR51-NEXT:    ldi r26, 14
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    movw r2, r10
+; AVR51-NEXT:    movw r20, r12
+; AVR51-NEXT:    ldd r22, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r23, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_181
+; AVR51-NEXT:  .LBB0_179: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ori r24, 4
+; AVR51-NEXT:  .LBB0_180: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r18, r24
+; AVR51-NEXT:    std Y+27, r19 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+26, r18 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+45, r24
+; AVR51-NEXT:    ldi r24, 112
+; AVR51-NEXT:    std Y+37, r24 ; 1-byte Folded Spill
+; AVR51-NEXT:    ldi r26, 14
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 4
+; AVR51-NEXT:    movw r22, r18
+; AVR51-NEXT:    movw r2, r10
+; AVR51-NEXT:  .LBB0_181: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r30, r22
+; AVR51-NEXT:    sbiw r30, 10
+; AVR51-NEXT:    ldi r25, 2
+; AVR51-NEXT:    cpi r30, -19
+; AVR51-NEXT:    ldi r18, -1
+; AVR51-NEXT:    cpc r31, r18
+; AVR51-NEXT:    ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT:    brlo .LBB0_183
+; AVR51-NEXT:  ; %bb.182: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r25, r24
+; AVR51-NEXT:  .LBB0_183: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r18, r22
+; AVR51-NEXT:    subi r18, 100
+; AVR51-NEXT:    sbci r19, 0
+; AVR51-NEXT:    ldi r27, 3
+; AVR51-NEXT:    cpi r18, 57
+; AVR51-NEXT:    ldi r24, -1
+; AVR51-NEXT:    std Y+25, r19 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+24, r18 ; 2-byte Folded Spill
+; AVR51-NEXT:    cpc r19, r24
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:    ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r18, Y+26 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r19, Y+27 ; 2-byte Folded Reload
+; AVR51-NEXT:    brlo .LBB0_185
+; AVR51-NEXT:  ; %bb.184: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r27, r25
+; AVR51-NEXT:  .LBB0_185: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r24, r18
+; AVR51-NEXT:    andi r24, 1
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    brne .LBB0_190
+; AVR51-NEXT:  ; %bb.186: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 2
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    brne .LBB0_191
+; AVR51-NEXT:  ; %bb.187: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 4
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    ldi r17, 1
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    breq .LBB0_189
+; AVR51-NEXT:  ; %bb.188: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r17, r1
+; AVR51-NEXT:  .LBB0_189: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    lsl r24
+; AVR51-NEXT:    rjmp .LBB0_193
+; AVR51-NEXT:  .LBB0_190: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 45
+; AVR51-NEXT:    rjmp .LBB0_192
+; AVR51-NEXT:  .LBB0_191: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 43
+; AVR51-NEXT:  .LBB0_192: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r17, r1
+; AVR51-NEXT:  .LBB0_193: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r13, r24
+; AVR51-NEXT:    andi r18, 12
+; AVR51-NEXT:    cpi r18, 0
+; AVR51-NEXT:    brne .LBB0_194
+; AVR51-NEXT:    rjmp .LBB0_208
+; AVR51-NEXT:  .LBB0_194: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r24, r17
+; AVR51-NEXT:    andi r24, 1
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    ldi r24, 3
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    brne .LBB0_196
+; AVR51-NEXT:  ; %bb.195: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 4
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:  .LBB0_196: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r24, r30
+; AVR51-NEXT:    cpc r25, r31
+; AVR51-NEXT:    brge .LBB0_200
+; AVR51-NEXT:  ; %bb.197: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    sub r30, r24
+; AVR51-NEXT:    sbc r31, r25
+; AVR51-NEXT:    andi r20, 8
+; AVR51-NEXT:    andi r21, 0
+; AVR51-NEXT:    cp r20, r1
+; AVR51-NEXT:    cpc r21, r1
+; AVR51-NEXT:    brne .LBB0_201
+; AVR51-NEXT:  .LBB0_198: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    ldi r24, 32
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_199
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_199: ; in Loop: Header=BB0_198 Depth=2
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    sbiw r30, 1
+; AVR51-NEXT:    cp r30, r1
+; AVR51-NEXT:    cpc r31, r1
+; AVR51-NEXT:    brne .LBB0_198
+; AVR51-NEXT:  .LBB0_200: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:  .LBB0_201: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r17, 1
+; AVR51-NEXT:    cpi r17, 0
+; AVR51-NEXT:    mov r24, r13
+; AVR51-NEXT:    brne .LBB0_204
+; AVR51-NEXT:  ; %bb.202: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_203
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_203: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:  .LBB0_204: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    ldd r24, Y+45
+; AVR51-NEXT:    andi r24, 8
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    ldi r24, lo8(.str)
+; AVR51-NEXT:    ldi r25, hi8(.str)
+; AVR51-NEXT:    movw r26, r24
+; AVR51-NEXT:    breq .LBB0_206
+; AVR51-NEXT:  ; %bb.205: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, lo8(.str.1)
+; AVR51-NEXT:    ldi r25, hi8(.str.1)
+; AVR51-NEXT:    movw r26, r24
+; AVR51-NEXT:  .LBB0_206: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    ld r24, X
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    breq .LBB0_210
+; AVR51-NEXT:  ; %bb.207: ; in Loop: Header=BB0_206 Depth=2
+; AVR51-NEXT:    ldd r25, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT:    sub r24, r25
+; AVR51-NEXT:    ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r30, 1
+; AVR51-NEXT:    std Y+40, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    adiw r26, 1
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    movw r12, r26
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    movw r26, r12
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_206
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_208: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 0
+; AVR51-NEXT:    andi r25, 48
+; AVR51-NEXT:    cp r1, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    breq .LBB0_214
+; AVR51-NEXT:  ; %bb.209: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r30, r2
+; AVR51-NEXT:    rjmp .LBB0_227
+; AVR51-NEXT:  .LBB0_210: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:  .LBB0_211: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    cp r1, r30
+; AVR51-NEXT:    cpc r1, r31
+; AVR51-NEXT:    brge .LBB0_213
+; AVR51-NEXT:  ; %bb.212: ; in Loop: Header=BB0_211 Depth=2
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    sbiw r30, 1
+; AVR51-NEXT:    ldi r24, 32
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_211
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_213: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r18, Y+28 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r19, Y+29 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_2
+; AVR51-NEXT:  .LBB0_214: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r2
+; AVR51-NEXT:    cpi r24, 2
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    brsh .LBB0_216
+; AVR51-NEXT:  ; %bb.215: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r2, r24
+; AVR51-NEXT:  .LBB0_216: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    mov r30, r26
+; AVR51-NEXT:    clr r31
+; AVR51-NEXT:    cpi r26, 0
+; AVR51-NEXT:    breq .LBB0_219
+; AVR51-NEXT:  ; %bb.217: ; in Loop: Header=BB0_216 Depth=2
+; AVR51-NEXT:    movw r24, r28
+; AVR51-NEXT:    adiw r24, 41
+; AVR51-NEXT:    add r24, r30
+; AVR51-NEXT:    adc r25, r31
+; AVR51-NEXT:    movw r18, r30
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ldd r24, Z+4
+; AVR51-NEXT:    movw r30, r18
+; AVR51-NEXT:    cpi r24, 48
+; AVR51-NEXT:    brne .LBB0_219
+; AVR51-NEXT:  ; %bb.218: ; in Loop: Header=BB0_216 Depth=2
+; AVR51-NEXT:    dec r26
+; AVR51-NEXT:    rjmp .LBB0_216
+; AVR51-NEXT:  .LBB0_219: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 16
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    breq .LBB0_221
+; AVR51-NEXT:  ; %bb.220: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r30, r2
+; AVR51-NEXT:  .LBB0_221: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r22, -4
+; AVR51-NEXT:    ldi r24, -1
+; AVR51-NEXT:    cpc r23, r24
+; AVR51-NEXT:    brlt .LBB0_225
+; AVR51-NEXT:  ; %bb.222: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r22, r2
+; AVR51-NEXT:    cpc r23, r3
+; AVR51-NEXT:    brge .LBB0_225
+; AVR51-NEXT:  ; %bb.223: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ori r21, 32
+; AVR51-NEXT:    cp r22, r30
+; AVR51-NEXT:    cpc r23, r31
+; AVR51-NEXT:    brge .LBB0_226
+; AVR51-NEXT:  ; %bb.224: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r22
+; AVR51-NEXT:    com r24
+; AVR51-NEXT:    com r25
+; AVR51-NEXT:    add r30, r24
+; AVR51-NEXT:    adc r31, r25
+; AVR51-NEXT:    rjmp .LBB0_227
+; AVR51-NEXT:  .LBB0_225: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    sbiw r30, 1
+; AVR51-NEXT:    rjmp .LBB0_227
+; AVR51-NEXT:  .LBB0_226: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:  .LBB0_227: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r22
+; AVR51-NEXT:    subi r24, 232
+; AVR51-NEXT:    sbci r25, 3
+; AVR51-NEXT:    movw r18, r20
+; AVR51-NEXT:    andi r18, 0
+; AVR51-NEXT:    andi r19, 32
+; AVR51-NEXT:    cp r1, r1
+; AVR51-NEXT:    movw r8, r18
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    mov r12, r26
+; AVR51-NEXT:    std Y+27, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+26, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    brne .LBB0_233
+; AVR51-NEXT:  ; %bb.228: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r24, 49
+; AVR51-NEXT:    ldi r24, -8
+; AVR51-NEXT:    cpc r25, r24
+; AVR51-NEXT:    ldi r18, 4
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    brlo .LBB0_230
+; AVR51-NEXT:  ; %bb.229: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r18, r27
+; AVR51-NEXT:    clr r19
+; AVR51-NEXT:  .LBB0_230: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 0
+; AVR51-NEXT:    andi r25, 8
+; AVR51-NEXT:    cp r1, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    ldi r24, 3
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    breq .LBB0_232
+; AVR51-NEXT:  ; %bb.231: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 5
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:  .LBB0_232: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    add r24, r18
+; AVR51-NEXT:    adc r25, r19
+; AVR51-NEXT:    rjmp .LBB0_235
+; AVR51-NEXT:  .LBB0_233: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r1, r22
+; AVR51-NEXT:    cpc r1, r23
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    brge .LBB0_235
+; AVR51-NEXT:  ; %bb.234: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r22
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:  .LBB0_235: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r30, r1
+; AVR51-NEXT:    cpc r31, r1
+; AVR51-NEXT:    movw r10, r30
+; AVR51-NEXT:    breq .LBB0_237
+; AVR51-NEXT:  ; %bb.236: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    adiw r30, 1
+; AVR51-NEXT:    rjmp .LBB0_238
+; AVR51-NEXT:  .LBB0_237: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r30, r20
+; AVR51-NEXT:    swap r31
+; AVR51-NEXT:    swap r30
+; AVR51-NEXT:    andi r30, 15
+; AVR51-NEXT:    eor r30, r31
+; AVR51-NEXT:    andi r31, 15
+; AVR51-NEXT:    eor r30, r31
+; AVR51-NEXT:    andi r30, 1
+; AVR51-NEXT:    andi r31, 0
+; AVR51-NEXT:  .LBB0_238: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    mov r18, r17
+; AVR51-NEXT:    com r18
+; AVR51-NEXT:    andi r18, 1
+; AVR51-NEXT:    andi r19, 0
+; AVR51-NEXT:    add r18, r30
+; AVR51-NEXT:    adc r19, r31
+; AVR51-NEXT:    add r18, r24
+; AVR51-NEXT:    adc r19, r25
+; AVR51-NEXT:    ldd r24, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    sub r30, r18
+; AVR51-NEXT:    sbc r31, r19
+; AVR51-NEXT:    cp r18, r24
+; AVR51-NEXT:    cpc r19, r25
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    brlt .LBB0_240
+; AVR51-NEXT:  ; %bb.239: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:  .LBB0_240: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 9
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    std Y+35, r21 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+34, r20 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r2, r22
+; AVR51-NEXT:    std Y+20, r27 ; 1-byte Folded Spill
+; AVR51-NEXT:    mov r18, r12
+; AVR51-NEXT:    brne .LBB0_245
+; AVR51-NEXT:  ; %bb.241: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r30, r1
+; AVR51-NEXT:    cpc r31, r1
+; AVR51-NEXT:    breq .LBB0_245
+; AVR51-NEXT:  .LBB0_242: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    ldi r24, 32
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_243
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_243: ; in Loop: Header=BB0_242 Depth=2
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r24, r14
+; AVR51-NEXT:    sbiw r24, 1
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    brne .LBB0_242
+; AVR51-NEXT:  ; %bb.244: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    movw r22, r2
+; AVR51-NEXT:    mov r18, r12
+; AVR51-NEXT:  .LBB0_245: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    andi r17, 1
+; AVR51-NEXT:    cpi r17, 0
+; AVR51-NEXT:    mov r24, r13
+; AVR51-NEXT:    brne .LBB0_248
+; AVR51-NEXT:  ; %bb.246: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_247
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_247: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    movw r22, r2
+; AVR51-NEXT:    mov r18, r12
+; AVR51-NEXT:  .LBB0_248: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 0
+; AVR51-NEXT:    andi r25, 8
+; AVR51-NEXT:    cp r1, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    breq .LBB0_252
+; AVR51-NEXT:  ; %bb.249: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    ldi r24, 48
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_250
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_250: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 120
+; AVR51-NEXT:    ldd r25, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT:    sub r24, r25
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_251
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_251: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    movw r22, r2
+; AVR51-NEXT:    mov r18, r12
+; AVR51-NEXT:  .LBB0_252: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r20
+; AVR51-NEXT:    andi r24, 8
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    brne .LBB0_258
+; AVR51-NEXT:  ; %bb.253: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r30, r1
+; AVR51-NEXT:    cpc r31, r1
+; AVR51-NEXT:    breq .LBB0_258
+; AVR51-NEXT:  ; %bb.254: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    add r24, r30
+; AVR51-NEXT:    adc r25, r31
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:  .LBB0_255: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    ldi r24, 48
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_256
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_256: ; in Loop: Header=BB0_255 Depth=2
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    sbiw r30, 1
+; AVR51-NEXT:    cp r30, r1
+; AVR51-NEXT:    cpc r31, r1
+; AVR51-NEXT:    brne .LBB0_255
+; AVR51-NEXT:  ; %bb.257: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 0
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    movw r22, r2
+; AVR51-NEXT:    mov r18, r12
+; AVR51-NEXT:  .LBB0_258: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    std Y+33, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+32, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    cp r8, r1
+; AVR51-NEXT:    cpc r9, r1
+; AVR51-NEXT:    breq .LBB0_259
+; AVR51-NEXT:    rjmp .LBB0_270
+; AVR51-NEXT:  .LBB0_259: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+46
+; AVR51-NEXT:    cpi r24, 49
+; AVR51-NEXT:    breq .LBB0_261
+; AVR51-NEXT:  ; %bb.260: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r25, Y+45
+; AVR51-NEXT:    andi r25, -17
+; AVR51-NEXT:    std Y+45, r25
+; AVR51-NEXT:  .LBB0_261: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_262
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_262: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r10
+; AVR51-NEXT:    cp r1, r24
+; AVR51-NEXT:    cpc r1, r25
+; AVR51-NEXT:    brlt .LBB0_263
+; AVR51-NEXT:    rjmp .LBB0_286
+; AVR51-NEXT:  .LBB0_263: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 46
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_264
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_264: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:    ldi r17, 1
+; AVR51-NEXT:    movw r18, r10
+; AVR51-NEXT:    rjmp .LBB0_267
+; AVR51-NEXT:  .LBB0_265: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT:    movw r18, r28
+; AVR51-NEXT:    subi r18, 215
+; AVR51-NEXT:    sbci r19, 255
+; AVR51-NEXT:    add r18, r24
+; AVR51-NEXT:    adc r19, r25
+; AVR51-NEXT:    movw r30, r18
+; AVR51-NEXT:    ldd r24, Z+5
+; AVR51-NEXT:  .LBB0_266: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    adiw r30, 1
+; AVR51-NEXT:    movw r14, r30
+; AVR51-NEXT:    inc r17
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    movw r18, r10
+; AVR51-NEXT:    brpl .LBB0_267
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_267: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    mov r24, r17
+; AVR51-NEXT:    clr r25
+; AVR51-NEXT:    cp r18, r24
+; AVR51-NEXT:    cpc r19, r25
+; AVR51-NEXT:    brge .LBB0_268
+; AVR51-NEXT:    rjmp .LBB0_288
+; AVR51-NEXT:  .LBB0_268: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT:    mov r18, r12
+; AVR51-NEXT:    cp r17, r18
+; AVR51-NEXT:    brlo .LBB0_265
+; AVR51-NEXT:  ; %bb.269: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT:    ldi r24, 48
+; AVR51-NEXT:    rjmp .LBB0_266
+; AVR51-NEXT:  .LBB0_270: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r1, r22
+; AVR51-NEXT:    cpc r1, r23
+; AVR51-NEXT:    movw r16, r22
+; AVR51-NEXT:    brlt .LBB0_272
+; AVR51-NEXT:  ; %bb.271: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r16, 0
+; AVR51-NEXT:    ldi r17, 0
+; AVR51-NEXT:  .LBB0_272: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    neg r11
+; AVR51-NEXT:    neg r10
+; AVR51-NEXT:    sbc r11, r1
+; AVR51-NEXT:    mov r14, r18
+; AVR51-NEXT:    clr r15
+; AVR51-NEXT:    movw r12, r10
+; AVR51-NEXT:  .LBB0_273: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT:    cpi r16, -1
+; AVR51-NEXT:    ldi r24, -1
+; AVR51-NEXT:    cpc r17, r24
+; AVR51-NEXT:    brne .LBB0_276
+; AVR51-NEXT:  ; %bb.274: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT:    ldi r24, 46
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_275
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_275: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r10, r12
+; AVR51-NEXT:  .LBB0_276: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT:    movw r20, r2
+; AVR51-NEXT:    movw r18, r20
+; AVR51-NEXT:    sub r18, r16
+; AVR51-NEXT:    sbc r19, r17
+; AVR51-NEXT:    ldi r24, 48
+; AVR51-NEXT:    mov r25, r19
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brmi .LBB0_279
+; AVR51-NEXT:  ; %bb.277: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT:    cp r18, r14
+; AVR51-NEXT:    cpc r19, r15
+; AVR51-NEXT:    brge .LBB0_279
+; AVR51-NEXT:  ; %bb.278: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT:    movw r24, r28
+; AVR51-NEXT:    adiw r24, 41
+; AVR51-NEXT:    add r24, r18
+; AVR51-NEXT:    adc r25, r19
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ldd r24, Z+5
+; AVR51-NEXT:    movw r10, r12
+; AVR51-NEXT:  .LBB0_279: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT:    movw r30, r16
+; AVR51-NEXT:    sbiw r30, 1
+; AVR51-NEXT:    cp r10, r16
+; AVR51-NEXT:    cpc r11, r17
+; AVR51-NEXT:    brge .LBB0_281
+; AVR51-NEXT:  ; %bb.280: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT:    movw r16, r30
+; AVR51-NEXT:    ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r30, 1
+; AVR51-NEXT:    std Y+40, r31 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r30 ; 2-byte Folded Spill
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    movw r10, r12
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brmi .LBB0_325
+; AVR51-NEXT:    rjmp .LBB0_273
+; AVR51-NEXT:  .LBB0_325:
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_281: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r30, r20
+; AVR51-NEXT:    cpc r31, r21
+; AVR51-NEXT:    brne .LBB0_289
+; AVR51-NEXT:  ; %bb.282: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r25, Y+46
+; AVR51-NEXT:    cpi r25, 54
+; AVR51-NEXT:    ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT:    brge .LBB0_285
+; AVR51-NEXT:  ; %bb.283: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cpi r25, 53
+; AVR51-NEXT:    brne .LBB0_290
+; AVR51-NEXT:  ; %bb.284: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r25, Y+45
+; AVR51-NEXT:    andi r25, 16
+; AVR51-NEXT:    cpi r25, 0
+; AVR51-NEXT:    brne .LBB0_290
+; AVR51-NEXT:  .LBB0_285: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 49
+; AVR51-NEXT:    rjmp .LBB0_290
+; AVR51-NEXT:  .LBB0_286: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    andi r24, 16
+; AVR51-NEXT:    andi r25, 0
+; AVR51-NEXT:    cp r24, r1
+; AVR51-NEXT:    cpc r25, r1
+; AVR51-NEXT:    breq .LBB0_287
+; AVR51-NEXT:    rjmp .LBB0_296
+; AVR51-NEXT:  .LBB0_287: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    rjmp .LBB0_298
+; AVR51-NEXT:  .LBB0_288: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:    rjmp .LBB0_299
+; AVR51-NEXT:  .LBB0_289: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT:  .LBB0_290: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_291
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_291: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    ldd r18, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r19, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT:    andi r18, 16
+; AVR51-NEXT:    andi r19, 0
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    breq .LBB0_295
+; AVR51-NEXT:  ; %bb.292: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r16, r1
+; AVR51-NEXT:    cpc r17, r1
+; AVR51-NEXT:    brne .LBB0_295
+; AVR51-NEXT:  ; %bb.293: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 46
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:    brpl .LBB0_294
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_294: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_211
+; AVR51-NEXT:  .LBB0_295: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:    ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_211
+; AVR51-NEXT:  .LBB0_296: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 46
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_297
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_297: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:  .LBB0_298: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:  .LBB0_299: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r25, Y+37 ; 1-byte Folded Reload
+; AVR51-NEXT:    ldd r24, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT:    sub r25, r24
+; AVR51-NEXT:    mov r24, r25
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_300
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_300: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r18, r2
+; AVR51-NEXT:    mov r24, r19
+; AVR51-NEXT:    tst r24
+; AVR51-NEXT:    brmi .LBB0_305
+; AVR51-NEXT:  ; %bb.301: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    breq .LBB0_303
+; AVR51-NEXT:  ; %bb.302: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 43
+; AVR51-NEXT:    rjmp .LBB0_306
+; AVR51-NEXT:  .LBB0_303: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+45
+; AVR51-NEXT:    andi r24, 16
+; AVR51-NEXT:    cpi r24, 0
+; AVR51-NEXT:    brne .LBB0_305
+; AVR51-NEXT:  ; %bb.304: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 43
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    movw r2, r18
+; AVR51-NEXT:    rjmp .LBB0_306
+; AVR51-NEXT:  .LBB0_305: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    neg r19
+; AVR51-NEXT:    neg r18
+; AVR51-NEXT:    sbc r19, r1
+; AVR51-NEXT:    movw r2, r18
+; AVR51-NEXT:    ldi r24, 45
+; AVR51-NEXT:  .LBB0_306: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_307
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_307: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR51-NEXT:    cpi r24, 49
+; AVR51-NEXT:    ldi r24, -8
+; AVR51-NEXT:    cpc r25, r24
+; AVR51-NEXT:    brlo .LBB0_308
+; AVR51-NEXT:    rjmp .LBB0_310
+; AVR51-NEXT:  .LBB0_308: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r10, r2
+; AVR51-NEXT:    movw r24, r10
+; AVR51-NEXT:    ldi r22, 232
+; AVR51-NEXT:    ldi r23, 3
+; AVR51-NEXT:    call __udivmodhi4
+; AVR51-NEXT:    movw r16, r22
+; AVR51-NEXT:    mov r24, r16
+; AVR51-NEXT:    subi r24, -48
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_309
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_309: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r24, 3
+; AVR51-NEXT:    muls r16, r24
+; AVR51-NEXT:    mov r24, r0
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    ldi r19, -24
+; AVR51-NEXT:    mul r16, r19
+; AVR51-NEXT:    mov r25, r0
+; AVR51-NEXT:    mov r18, r1
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    add r18, r24
+; AVR51-NEXT:    muls r17, r19
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    mov r20, r0
+; AVR51-NEXT:    add r20, r18
+; AVR51-NEXT:    mov r21, r20
+; AVR51-NEXT:    clr r20
+; AVR51-NEXT:    mov r24, r25
+; AVR51-NEXT:    clr r25
+; AVR51-NEXT:    or r24, r20
+; AVR51-NEXT:    or r25, r21
+; AVR51-NEXT:    sub r10, r24
+; AVR51-NEXT:    sbc r11, r25
+; AVR51-NEXT:    movw r24, r14
+; AVR51-NEXT:    adiw r24, 3
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:    movw r24, r10
+; AVR51-NEXT:    rjmp .LBB0_311
+; AVR51-NEXT:  .LBB0_310: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r14
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:    ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT:    cpi r24, 57
+; AVR51-NEXT:    ldi r24, -1
+; AVR51-NEXT:    cpc r25, r24
+; AVR51-NEXT:    movw r24, r2
+; AVR51-NEXT:    brlo .LBB0_311
+; AVR51-NEXT:    rjmp .LBB0_317
+; AVR51-NEXT:  .LBB0_311: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r10, r24
+; AVR51-NEXT:    ldi r22, 100
+; AVR51-NEXT:    ldi r23, 0
+; AVR51-NEXT:    call __udivmodhi4
+; AVR51-NEXT:    movw r16, r22
+; AVR51-NEXT:    mov r24, r16
+; AVR51-NEXT:    subi r24, -48
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_312
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_312: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r25, 100
+; AVR51-NEXT:    muls r17, r25
+; AVR51-NEXT:    mov r24, r0
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    mul r16, r25
+; AVR51-NEXT:    mov r18, r1
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    add r18, r24
+; AVR51-NEXT:    mov r19, r18
+; AVR51-NEXT:    clr r18
+; AVR51-NEXT:    mov r24, r0
+; AVR51-NEXT:    clr r25
+; AVR51-NEXT:    or r24, r18
+; AVR51-NEXT:    or r25, r19
+; AVR51-NEXT:    sub r10, r24
+; AVR51-NEXT:    sbc r11, r25
+; AVR51-NEXT:    movw r24, r14
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:    movw r24, r10
+; AVR51-NEXT:  .LBB0_313: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r10, r24
+; AVR51-NEXT:    ldi r22, 10
+; AVR51-NEXT:    ldi r23, 0
+; AVR51-NEXT:    call __udivmodhi4
+; AVR51-NEXT:    movw r16, r22
+; AVR51-NEXT:    mov r24, r16
+; AVR51-NEXT:    subi r24, -48
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brpl .LBB0_314
+; AVR51-NEXT:    rjmp .LBB0_319
+; AVR51-NEXT:  .LBB0_314: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldi r25, 10
+; AVR51-NEXT:    muls r17, r25
+; AVR51-NEXT:    mov r24, r0
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    mul r16, r25
+; AVR51-NEXT:    ldi r16, 10
+; AVR51-NEXT:    mov r18, r1
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    add r18, r24
+; AVR51-NEXT:    mov r19, r18
+; AVR51-NEXT:    clr r18
+; AVR51-NEXT:    movw r24, r0
+; AVR51-NEXT:    or r24, r18
+; AVR51-NEXT:    or r25, r19
+; AVR51-NEXT:    sub r10, r24
+; AVR51-NEXT:    sbc r11, r25
+; AVR51-NEXT:    movw r24, r14
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:    mov r24, r10
+; AVR51-NEXT:  .LBB0_315: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    subi r24, -48
+; AVR51-NEXT:    movw r22, r6
+; AVR51-NEXT:    movw r30, r4
+; AVR51-NEXT:    icall
+; AVR51-NEXT:    tst r25
+; AVR51-NEXT:    brmi .LBB0_319
+; AVR51-NEXT:  ; %bb.316: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    movw r24, r14
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:    ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT:    rjmp .LBB0_211
+; AVR51-NEXT:  .LBB0_317: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT:    ldd r18, Y+20 ; 1-byte Folded Reload
+; AVR51-NEXT:    cpi r18, 2
+; AVR51-NEXT:    brlo .LBB0_315
+; AVR51-NEXT:    rjmp .LBB0_313
+; AVR51-NEXT:  .LBB0_318:
+; AVR51-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT:    std Y+31, r25 ; 2-byte Folded Spill
+; AVR51-NEXT:    std Y+30, r24 ; 2-byte Folded Spill
+; AVR51-NEXT:  .LBB0_319:
+; AVR51-NEXT:    ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR51-NEXT:    ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR51-NEXT:  .LBB0_320:
+; AVR51-NEXT:    subi r28, 189
+; AVR51-NEXT:    sbci r29, 255
+; AVR51-NEXT:    in r0, 63
+; AVR51-NEXT:    cli
+; AVR51-NEXT:    out 62, r29
+; AVR51-NEXT:    out 63, r0
+; AVR51-NEXT:    out 61, r28
+; AVR51-NEXT:    pop r29
+; AVR51-NEXT:    pop r28
+; AVR51-NEXT:    pop r17
+; AVR51-NEXT:    pop r16
+; AVR51-NEXT:    pop r15
+; AVR51-NEXT:    pop r14
+; AVR51-NEXT:    pop r13
+; AVR51-NEXT:    pop r12
+; AVR51-NEXT:    pop r11
+; AVR51-NEXT:    pop r10
+; AVR51-NEXT:    pop r9
+; AVR51-NEXT:    pop r8
+; AVR51-NEXT:    pop r7
+; AVR51-NEXT:    pop r6
+; AVR51-NEXT:    pop r5
+; AVR51-NEXT:    pop r4
+; AVR51-NEXT:    pop r3
+; AVR51-NEXT:    pop r2
+; AVR51-NEXT:    ret
+;
+; AVR2-LABEL: __d_vfprintf:
+; AVR2:       ; %bb.0:
+; AVR2-NEXT:    push r2
+; AVR2-NEXT:    push r3
+; AVR2-NEXT:    push r4
+; AVR2-NEXT:    push r5
+; AVR2-NEXT:    push r6
+; AVR2-NEXT:    push r7
+; AVR2-NEXT:    push r8
+; AVR2-NEXT:    push r9
+; AVR2-NEXT:    push r10
+; AVR2-NEXT:    push r11
+; AVR2-NEXT:    push r12
+; AVR2-NEXT:    push r13
+; AVR2-NEXT:    push r14
+; AVR2-NEXT:    push r15
+; AVR2-NEXT:    push r16
+; AVR2-NEXT:    push r17
+; AVR2-NEXT:    push r28
+; AVR2-NEXT:    push r29
+; AVR2-NEXT:    in r28, 61
+; AVR2-NEXT:    in r29, 62
+; AVR2-NEXT:    subi r28, 67
+; AVR2-NEXT:    sbci r29, 0
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    cli
+; AVR2-NEXT:    out 62, r29
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    out 61, r28
+; AVR2-NEXT:    mov r2, r22
+; AVR2-NEXT:    mov r3, r23
+; AVR2-NEXT:    mov r6, r24
+; AVR2-NEXT:    mov r7, r25
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 4
+; AVR2-NEXT:    std Y+63, r21
+; AVR2-NEXT:    std Y+62, r20
+; AVR2-NEXT:    sbiw r28, 4
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r6
+; AVR2-NEXT:    mov r31, r7
+; AVR2-NEXT:    ldd r24, Z+2
+; AVR2-NEXT:    andi r24, 2
+; AVR2-NEXT:    ldi r18, 255
+; AVR2-NEXT:    ldi r19, 255
+; AVR2-NEXT:    std Y+33, r19 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+32, r18 ; 2-byte Folded Spill
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    brne .LBB0_2
+; AVR2-NEXT:  .LBB0_1:
+; AVR2-NEXT:    ldd r24, Y+32 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+33 ; 2-byte Folded Reload
+; AVR2-NEXT:    subi r28, 189
+; AVR2-NEXT:    sbci r29, 255
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    cli
+; AVR2-NEXT:    out 62, r29
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    out 61, r28
+; AVR2-NEXT:    pop r29
+; AVR2-NEXT:    pop r28
+; AVR2-NEXT:    pop r17
+; AVR2-NEXT:    pop r16
+; AVR2-NEXT:    pop r15
+; AVR2-NEXT:    pop r14
+; AVR2-NEXT:    pop r13
+; AVR2-NEXT:    pop r12
+; AVR2-NEXT:    pop r11
+; AVR2-NEXT:    pop r10
+; AVR2-NEXT:    pop r9
+; AVR2-NEXT:    pop r8
+; AVR2-NEXT:    pop r7
+; AVR2-NEXT:    pop r6
+; AVR2-NEXT:    pop r5
+; AVR2-NEXT:    pop r4
+; AVR2-NEXT:    pop r3
+; AVR2-NEXT:    pop r2
+; AVR2-NEXT:    ret
+; AVR2-NEXT:  .LBB0_2:
+; AVR2-NEXT:    mov r30, r6
+; AVR2-NEXT:    mov r31, r7
+; AVR2-NEXT:    ldd r4, Z+3
+; AVR2-NEXT:    ldd r5, Z+4
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 4
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 4
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r25
+; AVR2-NEXT:    std Y+62, r24
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r26, r2
+; AVR2-NEXT:    mov r27, r3
+; AVR2-NEXT:  .LBB0_3: ; =>This Loop Header: Depth=1
+; AVR2-NEXT:    ; Child Loop BB0_11 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_118 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_121 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_140 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_149 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_158 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_177 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_205 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_216 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_221 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_248 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_262 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_280 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_274 Depth 2
+; AVR2-NEXT:    ; Child Loop BB0_324 Depth 2
+; AVR2-NEXT:    mov r30, r26
+; AVR2-NEXT:    mov r31, r27
+; AVR2-NEXT:    ld r24, Z+
+; AVR2-NEXT:    cpi r24, 37
+; AVR2-NEXT:    breq .LBB0_5
+; AVR2-NEXT:  ; %bb.4: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    mov r26, r30
+; AVR2-NEXT:    mov r27, r31
+; AVR2-NEXT:    brne .LBB0_6
+; AVR2-NEXT:  ; %bb.328:
+; AVR2-NEXT:    rjmp .LBB0_327
+; AVR2-NEXT:  .LBB0_5: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r30, r26
+; AVR2-NEXT:    mov r31, r27
+; AVR2-NEXT:    ldd r17, Z+1
+; AVR2-NEXT:    adiw r26, 2
+; AVR2-NEXT:    cpi r17, 37
+; AVR2-NEXT:    brne .LBB0_7
+; AVR2-NEXT:  .LBB0_6: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r30, 1
+; AVR2-NEXT:    std Y+40, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    mov r16, r26
+; AVR2-NEXT:    mov r17, r27
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    mov r26, r16
+; AVR2-NEXT:    mov r27, r17
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_3
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_7: ; %.preheader24
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r14, r24
+; AVR2-NEXT:    mov r15, r25
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    mov r18, r24
+; AVR2-NEXT:    mov r19, r25
+; AVR2-NEXT:    rjmp .LBB0_11
+; AVR2-NEXT:  .LBB0_8: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r24, r30
+; AVR2-NEXT:    mov r25, r31
+; AVR2-NEXT:    ldi r22, 10
+; AVR2-NEXT:    ldi r23, 0
+; AVR2-NEXT:    rcall __mulhi3
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    add r30, r8
+; AVR2-NEXT:    adc r31, r9
+; AVR2-NEXT:    ori r16, 32
+; AVR2-NEXT:  .LBB0_9: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r26, r10
+; AVR2-NEXT:    mov r27, r11
+; AVR2-NEXT:    mov r18, r16
+; AVR2-NEXT:    mov r19, r17
+; AVR2-NEXT:  .LBB0_10: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ld r17, X+
+; AVR2-NEXT:    cpi r17, 0
+; AVR2-NEXT:    brne .LBB0_11
+; AVR2-NEXT:    rjmp .LBB0_67
+; AVR2-NEXT:  .LBB0_11: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    cpi r18, 32
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    brsh .LBB0_16
+; AVR2-NEXT:  ; %bb.12: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 43
+; AVR2-NEXT:    brlt .LBB0_13
+; AVR2-NEXT:    rjmp .LBB0_20
+; AVR2-NEXT:  .LBB0_13: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 32
+; AVR2-NEXT:    brne .LBB0_14
+; AVR2-NEXT:    rjmp .LBB0_46
+; AVR2-NEXT:  .LBB0_14: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 35
+; AVR2-NEXT:    brne .LBB0_15
+; AVR2-NEXT:    rjmp .LBB0_44
+; AVR2-NEXT:  .LBB0_15: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 39
+; AVR2-NEXT:    breq .LBB0_10
+; AVR2-NEXT:    rjmp .LBB0_17
+; AVR2-NEXT:  .LBB0_16: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r18, -128
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    brlo .LBB0_17
+; AVR2-NEXT:    rjmp .LBB0_24
+; AVR2-NEXT:  .LBB0_17: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r24, r17
+; AVR2-NEXT:    subi r24, 48
+; AVR2-NEXT:    cpi r24, 10
+; AVR2-NEXT:    brlo .LBB0_18
+; AVR2-NEXT:    rjmp .LBB0_26
+; AVR2-NEXT:  .LBB0_18: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r10, r26
+; AVR2-NEXT:    mov r11, r27
+; AVR2-NEXT:    mov r8, r24
+; AVR2-NEXT:    clr r9
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    andi r24, 64
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    mov r16, r18
+; AVR2-NEXT:    mov r17, r19
+; AVR2-NEXT:    brne .LBB0_19
+; AVR2-NEXT:    rjmp .LBB0_8
+; AVR2-NEXT:  .LBB0_19: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    ldi r22, 10
+; AVR2-NEXT:    ldi r23, 0
+; AVR2-NEXT:    mov r12, r30
+; AVR2-NEXT:    mov r13, r31
+; AVR2-NEXT:    rcall __mulhi3
+; AVR2-NEXT:    mov r30, r12
+; AVR2-NEXT:    mov r31, r13
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    add r12, r8
+; AVR2-NEXT:    adc r13, r9
+; AVR2-NEXT:    rjmp .LBB0_9
+; AVR2-NEXT:  .LBB0_20: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 43
+; AVR2-NEXT:    brne .LBB0_21
+; AVR2-NEXT:    rjmp .LBB0_45
+; AVR2-NEXT:  .LBB0_21: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 45
+; AVR2-NEXT:    brne .LBB0_22
+; AVR2-NEXT:    rjmp .LBB0_47
+; AVR2-NEXT:  .LBB0_22: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 48
+; AVR2-NEXT:    breq .LBB0_23
+; AVR2-NEXT:    rjmp .LBB0_17
+; AVR2-NEXT:  .LBB0_23: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r18, 1
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_24: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 108
+; AVR2-NEXT:    brge .LBB0_31
+; AVR2-NEXT:  ; %bb.25: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 76
+; AVR2-NEXT:    breq .LBB0_341
+; AVR2-NEXT:    rjmp .LBB0_35
+; AVR2-NEXT:  .LBB0_341: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    rjmp .LBB0_52
+; AVR2-NEXT:  .LBB0_26: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 104
+; AVR2-NEXT:    brge .LBB0_27
+; AVR2-NEXT:    rjmp .LBB0_37
+; AVR2-NEXT:  .LBB0_27: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 108
+; AVR2-NEXT:    brlt .LBB0_35
+; AVR2-NEXT:  ; %bb.28: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 108
+; AVR2-NEXT:    breq .LBB0_34
+; AVR2-NEXT:  ; %bb.29: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 116
+; AVR2-NEXT:    brne .LBB0_30
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_30: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 122
+; AVR2-NEXT:    brne .LBB0_330
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_330: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    rjmp .LBB0_68
+; AVR2-NEXT:  .LBB0_31: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 122
+; AVR2-NEXT:    brne .LBB0_32
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_32: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 116
+; AVR2-NEXT:    brne .LBB0_33
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_33: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 108
+; AVR2-NEXT:    breq .LBB0_34
+; AVR2-NEXT:    rjmp .LBB0_68
+; AVR2-NEXT:  .LBB0_34: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    rol r25
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    rol r25
+; AVR2-NEXT:    andi r24, 0
+; AVR2-NEXT:    andi r25, 2
+; AVR2-NEXT:    or r24, r18
+; AVR2-NEXT:    or r25, r19
+; AVR2-NEXT:    ori r24, 128
+; AVR2-NEXT:    rjmp .LBB0_49
+; AVR2-NEXT:  .LBB0_35: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 104
+; AVR2-NEXT:    brne .LBB0_36
+; AVR2-NEXT:    rjmp .LBB0_48
+; AVR2-NEXT:  .LBB0_36: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 106
+; AVR2-NEXT:    brne .LBB0_331
+; AVR2-NEXT:    rjmp .LBB0_52
+; AVR2-NEXT:  .LBB0_331: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    rjmp .LBB0_68
+; AVR2-NEXT:  .LBB0_37: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 46
+; AVR2-NEXT:    brlt .LBB0_38
+; AVR2-NEXT:    rjmp .LBB0_50
+; AVR2-NEXT:  .LBB0_38: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 36
+; AVR2-NEXT:    brne .LBB0_39
+; AVR2-NEXT:    rjmp .LBB0_53
+; AVR2-NEXT:  .LBB0_39: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 42
+; AVR2-NEXT:    breq .LBB0_40
+; AVR2-NEXT:    rjmp .LBB0_68
+; AVR2-NEXT:  .LBB0_40: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cp r14, r1
+; AVR2-NEXT:    cpc r15, r1
+; AVR2-NEXT:    breq .LBB0_41
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_41: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r20, r30
+; AVR2-NEXT:    mov r21, r31
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    adiw r30, 2
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r31
+; AVR2-NEXT:    std Y+62, r30
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    ld r24, Z
+; AVR2-NEXT:    ldd r25, Z+1
+; AVR2-NEXT:    mov r22, r18
+; AVR2-NEXT:    mov r23, r19
+; AVR2-NEXT:    andi r18, 64
+; AVR2-NEXT:    andi r19, 0
+; AVR2-NEXT:    cp r18, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    breq .LBB0_42
+; AVR2-NEXT:    rjmp .LBB0_64
+; AVR2-NEXT:  .LBB0_42: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r18, r25
+; AVR2-NEXT:    tst r18
+; AVR2-NEXT:    brpl .LBB0_43
+; AVR2-NEXT:    rjmp .LBB0_65
+; AVR2-NEXT:  .LBB0_43: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r22, 32
+; AVR2-NEXT:    rjmp .LBB0_66
+; AVR2-NEXT:  .LBB0_44: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r18, 16
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_45: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r18, 2
+; AVR2-NEXT:  .LBB0_46: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r18, 4
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_47: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r18, 8
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_48: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    rol r25
+; AVR2-NEXT:    andi r24, 0
+; AVR2-NEXT:    andi r25, 2
+; AVR2-NEXT:    or r24, r18
+; AVR2-NEXT:    or r25, r19
+; AVR2-NEXT:    ori r25, 1
+; AVR2-NEXT:  .LBB0_49: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r18, r24
+; AVR2-NEXT:    mov r19, r25
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_50: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 46
+; AVR2-NEXT:    brne .LBB0_51
+; AVR2-NEXT:    rjmp .LBB0_61
+; AVR2-NEXT:  .LBB0_51: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cpi r17, 76
+; AVR2-NEXT:    breq .LBB0_52
+; AVR2-NEXT:    rjmp .LBB0_68
+; AVR2-NEXT:  .LBB0_52: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r18, 128
+; AVR2-NEXT:    ori r19, 2
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_53: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cp r14, r1
+; AVR2-NEXT:    cpc r15, r1
+; AVR2-NEXT:    brne .LBB0_54
+; AVR2-NEXT:    rjmp .LBB0_63
+; AVR2-NEXT:  .LBB0_54: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r10, r26
+; AVR2-NEXT:    mov r11, r27
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 4
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 4
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r25
+; AVR2-NEXT:    std Y+62, r24
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    std Y+31, r19 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+30, r18 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r16, r18
+; AVR2-NEXT:    mov r17, r19
+; AVR2-NEXT:    andi r16, 64
+; AVR2-NEXT:    andi r17, 0
+; AVR2-NEXT:    cp r16, r1
+; AVR2-NEXT:    cpc r17, r1
+; AVR2-NEXT:    mov r8, r30
+; AVR2-NEXT:    mov r9, r31
+; AVR2-NEXT:    breq .LBB0_56
+; AVR2-NEXT:  ; %bb.55: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r30, r12
+; AVR2-NEXT:    mov r31, r13
+; AVR2-NEXT:  .LBB0_56: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r22, r28
+; AVR2-NEXT:    mov r23, r29
+; AVR2-NEXT:    subi r22, 192
+; AVR2-NEXT:    sbci r23, 255
+; AVR2-NEXT:    mov r24, r2
+; AVR2-NEXT:    mov r25, r3
+; AVR2-NEXT:    mov r20, r30
+; AVR2-NEXT:    mov r21, r31
+; AVR2-NEXT:    rcall skip_to_arg
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    adiw r30, 2
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r31
+; AVR2-NEXT:    std Y+62, r30
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    ld r18, Z
+; AVR2-NEXT:    ldd r19, Z+1
+; AVR2-NEXT:    cp r16, r1
+; AVR2-NEXT:    cpc r17, r1
+; AVR2-NEXT:    mov r30, r18
+; AVR2-NEXT:    mov r31, r19
+; AVR2-NEXT:    breq .LBB0_58
+; AVR2-NEXT:  ; %bb.57: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r30, r8
+; AVR2-NEXT:    mov r31, r9
+; AVR2-NEXT:  .LBB0_58: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    cp r16, r1
+; AVR2-NEXT:    cpc r17, r1
+; AVR2-NEXT:    mov r26, r10
+; AVR2-NEXT:    mov r27, r11
+; AVR2-NEXT:    breq .LBB0_60
+; AVR2-NEXT:  ; %bb.59: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r12, r18
+; AVR2-NEXT:    mov r13, r19
+; AVR2-NEXT:  .LBB0_60: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ldd r18, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r19, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_61: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    andi r24, 64
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    breq .LBB0_62
+; AVR2-NEXT:  ; %bb.342:
+; AVR2-NEXT:    rjmp .LBB0_327
+; AVR2-NEXT:  .LBB0_62: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ori r18, 64
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_63: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    rjmp .LBB0_49
+; AVR2-NEXT:  .LBB0_64: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ldi r18, 0
+; AVR2-NEXT:    ldi r19, 0
+; AVR2-NEXT:    mov r14, r18
+; AVR2-NEXT:    mov r15, r19
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    mov r30, r20
+; AVR2-NEXT:    mov r31, r21
+; AVR2-NEXT:    mov r18, r22
+; AVR2-NEXT:    mov r19, r23
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_65: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    neg r25
+; AVR2-NEXT:    neg r24
+; AVR2-NEXT:    sbc r25, r1
+; AVR2-NEXT:    ori r22, 40
+; AVR2-NEXT:  .LBB0_66: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT:    ldi r18, 0
+; AVR2-NEXT:    ldi r19, 0
+; AVR2-NEXT:    mov r14, r18
+; AVR2-NEXT:    mov r15, r19
+; AVR2-NEXT:    mov r18, r22
+; AVR2-NEXT:    mov r19, r23
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    rjmp .LBB0_10
+; AVR2-NEXT:  .LBB0_67: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r17, r1
+; AVR2-NEXT:  .LBB0_68: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r14, r1
+; AVR2-NEXT:    cpc r15, r1
+; AVR2-NEXT:    std Y+38, r27 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+37, r26 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+29, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+28, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    breq .LBB0_70
+; AVR2-NEXT:  ; %bb.69: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 4
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 4
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r25
+; AVR2-NEXT:    std Y+62, r24
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r22, r28
+; AVR2-NEXT:    mov r23, r29
+; AVR2-NEXT:    subi r22, 192
+; AVR2-NEXT:    sbci r23, 255
+; AVR2-NEXT:    mov r24, r2
+; AVR2-NEXT:    mov r25, r3
+; AVR2-NEXT:    mov r20, r14
+; AVR2-NEXT:    mov r21, r15
+; AVR2-NEXT:    mov r14, r18
+; AVR2-NEXT:    mov r15, r19
+; AVR2-NEXT:    rcall skip_to_arg
+; AVR2-NEXT:    mov r18, r14
+; AVR2-NEXT:    mov r19, r15
+; AVR2-NEXT:    ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT:  .LBB0_70: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r1, r12
+; AVR2-NEXT:    cpc r1, r13
+; AVR2-NEXT:    std Y+27, r13 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+26, r12 ; 2-byte Folded Spill
+; AVR2-NEXT:    brlt .LBB0_72
+; AVR2-NEXT:  ; %bb.71: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    std Y+27, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+26, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:  .LBB0_72: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    tst r13
+; AVR2-NEXT:    brpl .LBB0_74
+; AVR2-NEXT:  ; %bb.73: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r18, 191
+; AVR2-NEXT:  .LBB0_74: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r16, r17
+; AVR2-NEXT:    ori r16, 32
+; AVR2-NEXT:    cpi r16, 97
+; AVR2-NEXT:    breq .LBB0_81
+; AVR2-NEXT:  ; %bb.75: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    subi r24, 101
+; AVR2-NEXT:    cpi r24, 3
+; AVR2-NEXT:    brlo .LBB0_81
+; AVR2-NEXT:  ; %bb.76: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 111
+; AVR2-NEXT:    brge .LBB0_77
+; AVR2-NEXT:    rjmp .LBB0_92
+; AVR2-NEXT:  .LBB0_77: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 115
+; AVR2-NEXT:    brlt .LBB0_78
+; AVR2-NEXT:    rjmp .LBB0_95
+; AVR2-NEXT:  .LBB0_78: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 111
+; AVR2-NEXT:    brne .LBB0_79
+; AVR2-NEXT:    rjmp .LBB0_124
+; AVR2-NEXT:  .LBB0_79: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 112
+; AVR2-NEXT:    breq .LBB0_80
+; AVR2-NEXT:    rjmp .LBB0_123
+; AVR2-NEXT:  .LBB0_80: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ori r18, 16
+; AVR2-NEXT:    rjmp .LBB0_124
+; AVR2-NEXT:  .LBB0_81: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    std Y+31, r19 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+30, r18 ; 2-byte Folded Spill
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    adiw r30, 2
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r31
+; AVR2-NEXT:    std Y+62, r30
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    ld r18, Z
+; AVR2-NEXT:    ldd r19, Z+1
+; AVR2-NEXT:    mov r26, r24
+; AVR2-NEXT:    mov r27, r25
+; AVR2-NEXT:    adiw r26, 4
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r27
+; AVR2-NEXT:    std Y+62, r26
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    ldd r14, Z+2
+; AVR2-NEXT:    ldd r15, Z+3
+; AVR2-NEXT:    mov r26, r24
+; AVR2-NEXT:    mov r27, r25
+; AVR2-NEXT:    adiw r26, 6
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r27
+; AVR2-NEXT:    std Y+62, r26
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    ldd r22, Z+4
+; AVR2-NEXT:    ldd r23, Z+5
+; AVR2-NEXT:    adiw r24, 8
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r25
+; AVR2-NEXT:    std Y+62, r24
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    sub r24, r17
+; AVR2-NEXT:    std Y+34, r24 ; 1-byte Folded Spill
+; AVR2-NEXT:    ldd r24, Z+6
+; AVR2-NEXT:    ldd r25, Z+7
+; AVR2-NEXT:    cpi r16, 97
+; AVR2-NEXT:    breq .LBB0_82
+; AVR2-NEXT:    rjmp .LBB0_87
+; AVR2-NEXT:  .LBB0_82: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r17, 48
+; AVR2-NEXT:    std Y+46, r17
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    swap r30
+; AVR2-NEXT:    andi r30, 15
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    swap r31
+; AVR2-NEXT:    eor r30, r31
+; AVR2-NEXT:    andi r31, 15
+; AVR2-NEXT:    eor r30, r31
+; AVR2-NEXT:    andi r31, 7
+; AVR2-NEXT:    std Y+25, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+24, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    or r30, r18
+; AVR2-NEXT:    or r31, r19
+; AVR2-NEXT:    mov r26, r24
+; AVR2-NEXT:    mov r27, r25
+; AVR2-NEXT:    andi r26, 15
+; AVR2-NEXT:    andi r27, 0
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    cp r30, r1
+; AVR2-NEXT:    cpc r31, r1
+; AVR2-NEXT:    ldi r20, 0
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:    cpc r14, r20
+; AVR2-NEXT:    cpc r15, r21
+; AVR2-NEXT:    cpc r22, r20
+; AVR2-NEXT:    cpc r23, r21
+; AVR2-NEXT:    std Y+36, r27 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+35, r26 ; 2-byte Folded Spill
+; AVR2-NEXT:    cpc r26, r20
+; AVR2-NEXT:    cpc r27, r21
+; AVR2-NEXT:    mov r26, r14
+; AVR2-NEXT:    mov r27, r15
+; AVR2-NEXT:    breq .LBB0_84
+; AVR2-NEXT:  ; %bb.83: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r1
+; AVR2-NEXT:  .LBB0_84: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r24, 1
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    breq .LBB0_85
+; AVR2-NEXT:    rjmp .LBB0_98
+; AVR2-NEXT:  .LBB0_85: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT:    cp r20, r1
+; AVR2-NEXT:    cpc r21, r1
+; AVR2-NEXT:    brne .LBB0_86
+; AVR2-NEXT:    rjmp .LBB0_130
+; AVR2-NEXT:  .LBB0_86: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r17, 49
+; AVR2-NEXT:    std Y+46, r17
+; AVR2-NEXT:    ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT:    rjmp .LBB0_131
+; AVR2-NEXT:  .LBB0_87: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r26, r14
+; AVR2-NEXT:    mov r27, r15
+; AVR2-NEXT:    ldd r20, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    andi r20, 64
+; AVR2-NEXT:    andi r21, 0
+; AVR2-NEXT:    cp r20, r1
+; AVR2-NEXT:    cpc r21, r1
+; AVR2-NEXT:    ldi r20, 6
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:    mov r8, r20
+; AVR2-NEXT:    mov r9, r21
+; AVR2-NEXT:    breq .LBB0_89
+; AVR2-NEXT:  ; %bb.88: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r8, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r9, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:  .LBB0_89: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r16, 102
+; AVR2-NEXT:    brne .LBB0_90
+; AVR2-NEXT:    rjmp .LBB0_99
+; AVR2-NEXT:  .LBB0_90: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r16, 101
+; AVR2-NEXT:    breq .LBB0_91
+; AVR2-NEXT:    rjmp .LBB0_100
+; AVR2-NEXT:  .LBB0_91: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r20, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    ori r21, 16
+; AVR2-NEXT:    std Y+31, r21 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+30, r20 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    mov r30, r20
+; AVR2-NEXT:    inc r30
+; AVR2-NEXT:    ldi r16, 101
+; AVR2-NEXT:    rjmp .LBB0_103
+; AVR2-NEXT:  .LBB0_92: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 99
+; AVR2-NEXT:    brne .LBB0_93
+; AVR2-NEXT:    rjmp .LBB0_107
+; AVR2-NEXT:  .LBB0_93: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 100
+; AVR2-NEXT:    brne .LBB0_94
+; AVR2-NEXT:    rjmp .LBB0_124
+; AVR2-NEXT:  .LBB0_94: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 105
+; AVR2-NEXT:    brne .LBB0_332
+; AVR2-NEXT:    rjmp .LBB0_124
+; AVR2-NEXT:  .LBB0_332: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    rjmp .LBB0_123
+; AVR2-NEXT:  .LBB0_95: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 115
+; AVR2-NEXT:    brne .LBB0_96
+; AVR2-NEXT:    rjmp .LBB0_108
+; AVR2-NEXT:  .LBB0_96: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r17, 117
+; AVR2-NEXT:    breq .LBB0_97
+; AVR2-NEXT:    rjmp .LBB0_123
+; AVR2-NEXT:  .LBB0_97: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r18, 239
+; AVR2-NEXT:    rjmp .LBB0_124
+; AVR2-NEXT:  .LBB0_98: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r30, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:    rjmp .LBB0_132
+; AVR2-NEXT:  .LBB0_99: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r20, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    ori r21, 32
+; AVR2-NEXT:    std Y+31, r21 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+30, r20 ; 2-byte Folded Spill
+; AVR2-NEXT:    ldi r16, 102
+; AVR2-NEXT:    ldi r31, 1
+; AVR2-NEXT:    ldi r30, 17
+; AVR2-NEXT:    mov r10, r8
+; AVR2-NEXT:    mov r11, r9
+; AVR2-NEXT:    rjmp .LBB0_104
+; AVR2-NEXT:  .LBB0_100: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r30, 1
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    cpi r20, 0
+; AVR2-NEXT:    breq .LBB0_102
+; AVR2-NEXT:  ; %bb.101: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    mov r30, r20
+; AVR2-NEXT:  .LBB0_102: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    subi r16, 2
+; AVR2-NEXT:  .LBB0_103: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r20, 0
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:    mov r10, r20
+; AVR2-NEXT:    mov r11, r21
+; AVR2-NEXT:    mov r31, r1
+; AVR2-NEXT:  .LBB0_104: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r13, r16
+; AVR2-NEXT:    cpi r30, 17
+; AVR2-NEXT:    brlo .LBB0_106
+; AVR2-NEXT:  ; %bb.105: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r30, 17
+; AVR2-NEXT:  .LBB0_106: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    clr r15
+; AVR2-NEXT:    mov r16, r28
+; AVR2-NEXT:    mov r17, r29
+; AVR2-NEXT:    subi r16, 215
+; AVR2-NEXT:    sbci r17, 255
+; AVR2-NEXT:    mov r20, r26
+; AVR2-NEXT:    mov r21, r27
+; AVR2-NEXT:    mov r12, r31
+; AVR2-NEXT:    rcall __dtoa_engine
+; AVR2-NEXT:    mov r26, r24
+; AVR2-NEXT:    mov r27, r25
+; AVR2-NEXT:    ldi r24, 2
+; AVR2-NEXT:    ldd r22, Y+45
+; AVR2-NEXT:    ldd r20, Y+41
+; AVR2-NEXT:    ldd r21, Y+42
+; AVR2-NEXT:    mov r27, r13
+; AVR2-NEXT:    rjmp .LBB0_187
+; AVR2-NEXT:  .LBB0_107: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r26, Y+62
+; AVR2-NEXT:    ldd r27, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r24, r26
+; AVR2-NEXT:    mov r25, r27
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r25
+; AVR2-NEXT:    std Y+62, r24
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    ld r24, X
+; AVR2-NEXT:    std Y+41, r24
+; AVR2-NEXT:    mov r24, r28
+; AVR2-NEXT:    mov r25, r29
+; AVR2-NEXT:    adiw r24, 41
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    ldi r20, 1
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:    rjmp .LBB0_113
+; AVR2-NEXT:  .LBB0_108: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    adiw r30, 2
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r31
+; AVR2-NEXT:    std Y+62, r30
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    mov r16, r18
+; AVR2-NEXT:    mov r17, r19
+; AVR2-NEXT:    andi r18, 64
+; AVR2-NEXT:    andi r19, 0
+; AVR2-NEXT:    cp r18, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    ldi r22, 255
+; AVR2-NEXT:    ldi r23, 255
+; AVR2-NEXT:    breq .LBB0_110
+; AVR2-NEXT:  ; %bb.109: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r22, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r23, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:  .LBB0_110: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    ld r24, Z
+; AVR2-NEXT:    ldd r25, Z+1
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    ldi r18, lo8(.str.2)
+; AVR2-NEXT:    ldi r19, hi8(.str.2)
+; AVR2-NEXT:    breq .LBB0_112
+; AVR2-NEXT:  ; %bb.111: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r18, r24
+; AVR2-NEXT:    mov r19, r25
+; AVR2-NEXT:  .LBB0_112: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r12, r18
+; AVR2-NEXT:    mov r13, r19
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    rcall strnlen
+; AVR2-NEXT:    mov r20, r24
+; AVR2-NEXT:    mov r21, r25
+; AVR2-NEXT:    ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT:    mov r18, r16
+; AVR2-NEXT:    mov r19, r17
+; AVR2-NEXT:  .LBB0_113: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r18, 8
+; AVR2-NEXT:    andi r19, 0
+; AVR2-NEXT:    cp r18, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    breq .LBB0_114
+; AVR2-NEXT:    rjmp .LBB0_120
+; AVR2-NEXT:  .LBB0_114: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r30, r20
+; AVR2-NEXT:    cpc r31, r21
+; AVR2-NEXT:    mov r16, r30
+; AVR2-NEXT:    mov r17, r31
+; AVR2-NEXT:    brlo .LBB0_118
+; AVR2-NEXT:  ; %bb.115: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r16, r20
+; AVR2-NEXT:    mov r17, r21
+; AVR2-NEXT:    rjmp .LBB0_118
+; AVR2-NEXT:  .LBB0_116: ; in Loop: Header=BB0_118 Depth=2
+; AVR2-NEXT:    mov r10, r20
+; AVR2-NEXT:    mov r11, r21
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    ldi r24, 32
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_117
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_117: ; in Loop: Header=BB0_118 Depth=2
+; AVR2-NEXT:    mov r30, r14
+; AVR2-NEXT:    mov r31, r15
+; AVR2-NEXT:    sbiw r30, 1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r20, r10
+; AVR2-NEXT:    mov r21, r11
+; AVR2-NEXT:  .LBB0_118: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    cp r20, r30
+; AVR2-NEXT:    cpc r21, r31
+; AVR2-NEXT:    brlo .LBB0_116
+; AVR2-NEXT:  ; %bb.119: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:  .LBB0_120: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    add r24, r20
+; AVR2-NEXT:    adc r25, r21
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    sub r30, r20
+; AVR2-NEXT:    sbc r31, r21
+; AVR2-NEXT:  .LBB0_121: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    cp r20, r1
+; AVR2-NEXT:    cpc r21, r1
+; AVR2-NEXT:    brne .LBB0_122
+; AVR2-NEXT:    rjmp .LBB0_142
+; AVR2-NEXT:  .LBB0_122: ; in Loop: Header=BB0_121 Depth=2
+; AVR2-NEXT:    std Y+36, r21 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+35, r20 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r26, r12
+; AVR2-NEXT:    mov r27, r13
+; AVR2-NEXT:    ld r24, X+
+; AVR2-NEXT:    mov r12, r26
+; AVR2-NEXT:    mov r13, r27
+; AVR2-NEXT:    ldd r26, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    sbiw r26, 1
+; AVR2-NEXT:    std Y+36, r27 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+35, r26 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r16, r30
+; AVR2-NEXT:    mov r17, r31
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    ldd r20, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_121
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_123: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r16, 120
+; AVR2-NEXT:    breq .LBB0_124
+; AVR2-NEXT:    rjmp .LBB0_143
+; AVR2-NEXT:  .LBB0_124: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    andi r24, 128
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brne .LBB0_126
+; AVR2-NEXT:  ; %bb.125: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    rjmp .LBB0_129
+; AVR2-NEXT:  .LBB0_126: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r18, 0
+; AVR2-NEXT:    andi r19, 2
+; AVR2-NEXT:    cp r1, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    brne .LBB0_128
+; AVR2-NEXT:  ; %bb.127: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    adiw r24, 4
+; AVR2-NEXT:    rjmp .LBB0_129
+; AVR2-NEXT:  .LBB0_128: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    ldd r24, Y+62
+; AVR2-NEXT:    ldd r25, Y+63
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    adiw r24, 8
+; AVR2-NEXT:  .LBB0_129: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    std Y+63, r25
+; AVR2-NEXT:    std Y+62, r24
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    rjmp .LBB0_324
+; AVR2-NEXT:  .LBB0_130: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r20, 1
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:  .LBB0_131: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r30, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:    subi r20, 255
+; AVR2-NEXT:    sbci r21, 3
+; AVR2-NEXT:    std Y+25, r21 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+24, r20 ; 2-byte Folded Spill
+; AVR2-NEXT:  .LBB0_132: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    lsl r25
+; AVR2-NEXT:    mov r20, r1
+; AVR2-NEXT:    rol r20
+; AVR2-NEXT:    mov r24, r20
+; AVR2-NEXT:    std Y+23, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+22, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+45, r20
+; AVR2-NEXT:    ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    andi r24, 64
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brne .LBB0_134
+; AVR2-NEXT:  ; %bb.133: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    rjmp .LBB0_136
+; AVR2-NEXT:  .LBB0_134: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r30, 13
+; AVR2-NEXT:    cpc r31, r1
+; AVR2-NEXT:    brlo .LBB0_137
+; AVR2-NEXT:  ; %bb.135: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 13
+; AVR2-NEXT:  .LBB0_136: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    rjmp .LBB0_169
+; AVR2-NEXT:  .LBB0_137: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    std Y+3, r17 ; 1-byte Folded Spill
+; AVR2-NEXT:    std Y+19, r27 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+18, r26 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+15, r5 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+14, r4 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+13, r7 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+12, r6 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+21, r3 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+20, r2 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r20, r30
+; AVR2-NEXT:    mov r21, r31
+; AVR2-NEXT:    lsl r20
+; AVR2-NEXT:    rol r21
+; AVR2-NEXT:    lsl r20
+; AVR2-NEXT:    rol r21
+; AVR2-NEXT:    ldi r24, 51
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r16, r20
+; AVR2-NEXT:    std Y+2, r17 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+1, r16 ; 2-byte Folded Spill
+; AVR2-NEXT:    sub r24, r20
+; AVR2-NEXT:    sbc r25, r21
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    brne .LBB0_138
+; AVR2-NEXT:    rjmp .LBB0_145
+; AVR2-NEXT:  .LBB0_138: ; %shift.loop.preheader
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r25, r30
+; AVR2-NEXT:    lsl r25
+; AVR2-NEXT:    lsl r25
+; AVR2-NEXT:    subi r25, 51
+; AVR2-NEXT:    ldi r30, 1
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    mov r20, r30
+; AVR2-NEXT:    mov r21, r31
+; AVR2-NEXT:    ldi r30, 0
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    mov r2, r30
+; AVR2-NEXT:    mov r3, r31
+; AVR2-NEXT:    mov r12, r2
+; AVR2-NEXT:    mov r13, r3
+; AVR2-NEXT:    mov r10, r2
+; AVR2-NEXT:    mov r11, r3
+; AVR2-NEXT:    rjmp .LBB0_140
+; AVR2-NEXT:  .LBB0_139: ; %shift.loop
+; AVR2-NEXT:    ; in Loop: Header=BB0_140 Depth=2
+; AVR2-NEXT:    mov r31, r13
+; AVR2-NEXT:    lsl r31
+; AVR2-NEXT:    mov r16, r1
+; AVR2-NEXT:    rol r16
+; AVR2-NEXT:    mov r17, r1
+; AVR2-NEXT:    mov r8, r1
+; AVR2-NEXT:    mov r9, r1
+; AVR2-NEXT:    lsl r10
+; AVR2-NEXT:    rol r11
+; AVR2-NEXT:    rol r2
+; AVR2-NEXT:    rol r3
+; AVR2-NEXT:    or r2, r8
+; AVR2-NEXT:    or r3, r9
+; AVR2-NEXT:    or r10, r16
+; AVR2-NEXT:    or r11, r17
+; AVR2-NEXT:    lsl r20
+; AVR2-NEXT:    rol r21
+; AVR2-NEXT:    rol r12
+; AVR2-NEXT:    rol r13
+; AVR2-NEXT:    cpi r30, 1
+; AVR2-NEXT:    brne .LBB0_140
+; AVR2-NEXT:    rjmp .LBB0_146
+; AVR2-NEXT:  .LBB0_140: ; %shift.loop
+; AVR2-NEXT:    ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    inc r25
+; AVR2-NEXT:    ldi r30, 1
+; AVR2-NEXT:    cpi r25, 0
+; AVR2-NEXT:    breq .LBB0_139
+; AVR2-NEXT:  ; %bb.141: ; %shift.loop
+; AVR2-NEXT:    ; in Loop: Header=BB0_140 Depth=2
+; AVR2-NEXT:    mov r30, r1
+; AVR2-NEXT:    rjmp .LBB0_139
+; AVR2-NEXT:  .LBB0_142: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT:    rjmp .LBB0_324
+; AVR2-NEXT:  .LBB0_143: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 37
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_144
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_144: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r24, r17
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT:    brmi .LBB0_333
+; AVR2-NEXT:    rjmp .LBB0_3
+; AVR2-NEXT:  .LBB0_333:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_145: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r30, 1
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    mov r20, r30
+; AVR2-NEXT:    mov r21, r31
+; AVR2-NEXT:    ldi r30, 0
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    mov r2, r30
+; AVR2-NEXT:    mov r3, r31
+; AVR2-NEXT:    mov r12, r2
+; AVR2-NEXT:    mov r13, r3
+; AVR2-NEXT:    mov r10, r2
+; AVR2-NEXT:    mov r11, r3
+; AVR2-NEXT:  .LBB0_146: ; %shift.done
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    std Y+17, r21 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+16, r20 ; 2-byte Folded Spill
+; AVR2-NEXT:    brne .LBB0_147
+; AVR2-NEXT:    rjmp .LBB0_151
+; AVR2-NEXT:  .LBB0_147: ; %shift.loop2.preheader
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    lsl r30
+; AVR2-NEXT:    lsl r30
+; AVR2-NEXT:    subi r30, 51
+; AVR2-NEXT:    ldi r24, 2
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r8, r24
+; AVR2-NEXT:    mov r9, r25
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r4, r24
+; AVR2-NEXT:    mov r5, r25
+; AVR2-NEXT:    mov r16, r4
+; AVR2-NEXT:    mov r17, r5
+; AVR2-NEXT:    rjmp .LBB0_149
+; AVR2-NEXT:  .LBB0_148: ; %shift.loop2
+; AVR2-NEXT:    ; in Loop: Header=BB0_149 Depth=2
+; AVR2-NEXT:    mov r7, r17
+; AVR2-NEXT:    lsl r7
+; AVR2-NEXT:    mov r6, r1
+; AVR2-NEXT:    rol r6
+; AVR2-NEXT:    mov r7, r1
+; AVR2-NEXT:    mov r14, r1
+; AVR2-NEXT:    mov r15, r1
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    rol r25
+; AVR2-NEXT:    rol r4
+; AVR2-NEXT:    rol r5
+; AVR2-NEXT:    or r4, r14
+; AVR2-NEXT:    or r5, r15
+; AVR2-NEXT:    or r24, r6
+; AVR2-NEXT:    or r25, r7
+; AVR2-NEXT:    lsl r8
+; AVR2-NEXT:    rol r9
+; AVR2-NEXT:    rol r16
+; AVR2-NEXT:    rol r17
+; AVR2-NEXT:    cpi r31, 1
+; AVR2-NEXT:    breq .LBB0_152
+; AVR2-NEXT:  .LBB0_149: ; %shift.loop2
+; AVR2-NEXT:    ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    inc r30
+; AVR2-NEXT:    ldi r31, 1
+; AVR2-NEXT:    cpi r30, 0
+; AVR2-NEXT:    breq .LBB0_148
+; AVR2-NEXT:  ; %bb.150: ; %shift.loop2
+; AVR2-NEXT:    ; in Loop: Header=BB0_149 Depth=2
+; AVR2-NEXT:    mov r31, r1
+; AVR2-NEXT:    rjmp .LBB0_148
+; AVR2-NEXT:  .LBB0_151: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 2
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r8, r24
+; AVR2-NEXT:    mov r9, r25
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r4, r24
+; AVR2-NEXT:    mov r5, r25
+; AVR2-NEXT:    mov r16, r4
+; AVR2-NEXT:    mov r17, r5
+; AVR2-NEXT:  .LBB0_152: ; %shift.done1
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r26, r8
+; AVR2-NEXT:    mov r27, r9
+; AVR2-NEXT:    subi r26, 1
+; AVR2-NEXT:    sbci r27, 0
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:    sbci r30, 0
+; AVR2-NEXT:    sbci r31, 0
+; AVR2-NEXT:    mov r20, r30
+; AVR2-NEXT:    mov r21, r31
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    sbci r30, 0
+; AVR2-NEXT:    sbci r31, 0
+; AVR2-NEXT:    mov r6, r30
+; AVR2-NEXT:    mov r7, r31
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    sbci r30, 0
+; AVR2-NEXT:    sbci r31, 0
+; AVR2-NEXT:    and r26, r18
+; AVR2-NEXT:    and r27, r19
+; AVR2-NEXT:    std Y+11, r27 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+10, r26 ; 2-byte Folded Spill
+; AVR2-NEXT:    ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r20, r26
+; AVR2-NEXT:    and r21, r27
+; AVR2-NEXT:    std Y+9, r21 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+8, r20 ; 2-byte Folded Spill
+; AVR2-NEXT:    and r6, r22
+; AVR2-NEXT:    and r7, r23
+; AVR2-NEXT:    ldd r14, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r15, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r30, r14
+; AVR2-NEXT:    and r31, r15
+; AVR2-NEXT:    ldi r26, 1
+; AVR2-NEXT:    ldd r14, Y+16 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r15, Y+17 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r20, Y+10 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+11 ; 2-byte Folded Reload
+; AVR2-NEXT:    cp r14, r20
+; AVR2-NEXT:    cpc r15, r21
+; AVR2-NEXT:    ldd r20, Y+8 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+9 ; 2-byte Folded Reload
+; AVR2-NEXT:    cpc r12, r20
+; AVR2-NEXT:    cpc r13, r21
+; AVR2-NEXT:    cpc r10, r6
+; AVR2-NEXT:    cpc r11, r7
+; AVR2-NEXT:    cpc r2, r30
+; AVR2-NEXT:    cpc r3, r31
+; AVR2-NEXT:    brlo .LBB0_154
+; AVR2-NEXT:  ; %bb.153: ; %shift.done1
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r26, r1
+; AVR2-NEXT:  .LBB0_154: ; %shift.done1
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r26, 1
+; AVR2-NEXT:    ldi r30, 0
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    sub r14, r8
+; AVR2-NEXT:    sbc r15, r9
+; AVR2-NEXT:    std Y+11, r15 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+10, r14 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    sbc r14, r16
+; AVR2-NEXT:    sbc r15, r17
+; AVR2-NEXT:    std Y+9, r15 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+8, r14 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r16, r30
+; AVR2-NEXT:    mov r17, r31
+; AVR2-NEXT:    sbc r16, r24
+; AVR2-NEXT:    sbc r17, r25
+; AVR2-NEXT:    std Y+7, r17 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+6, r16 ; 2-byte Folded Spill
+; AVR2-NEXT:    sbc r30, r4
+; AVR2-NEXT:    sbc r31, r5
+; AVR2-NEXT:    std Y+5, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+4, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    cpi r26, 0
+; AVR2-NEXT:    ldd r20, Y+16 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+17 ; 2-byte Folded Reload
+; AVR2-NEXT:    breq .LBB0_155
+; AVR2-NEXT:    rjmp .LBB0_164
+; AVR2-NEXT:  .LBB0_155: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT:    cpi r24, 52
+; AVR2-NEXT:    brne .LBB0_156
+; AVR2-NEXT:    rjmp .LBB0_160
+; AVR2-NEXT:  .LBB0_156: ; %shift.loop4.preheader
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    lsl r30
+; AVR2-NEXT:    lsl r30
+; AVR2-NEXT:    subi r30, 52
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    ldi r16, 0
+; AVR2-NEXT:    ldi r17, 0
+; AVR2-NEXT:    mov r4, r16
+; AVR2-NEXT:    mov r5, r17
+; AVR2-NEXT:    mov r8, r4
+; AVR2-NEXT:    mov r9, r5
+; AVR2-NEXT:    rjmp .LBB0_158
+; AVR2-NEXT:  .LBB0_157: ; %shift.loop4
+; AVR2-NEXT:    ; in Loop: Header=BB0_158 Depth=2
+; AVR2-NEXT:    mov r15, r17
+; AVR2-NEXT:    lsl r15
+; AVR2-NEXT:    mov r14, r1
+; AVR2-NEXT:    rol r14
+; AVR2-NEXT:    mov r15, r1
+; AVR2-NEXT:    mov r6, r1
+; AVR2-NEXT:    mov r7, r1
+; AVR2-NEXT:    lsl r8
+; AVR2-NEXT:    rol r9
+; AVR2-NEXT:    rol r4
+; AVR2-NEXT:    rol r5
+; AVR2-NEXT:    or r4, r6
+; AVR2-NEXT:    or r5, r7
+; AVR2-NEXT:    or r8, r14
+; AVR2-NEXT:    or r9, r15
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    rol r25
+; AVR2-NEXT:    rol r16
+; AVR2-NEXT:    rol r17
+; AVR2-NEXT:    cpi r31, 1
+; AVR2-NEXT:    breq .LBB0_161
+; AVR2-NEXT:  .LBB0_158: ; %shift.loop4
+; AVR2-NEXT:    ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    inc r30
+; AVR2-NEXT:    ldi r31, 1
+; AVR2-NEXT:    cpi r30, 0
+; AVR2-NEXT:    breq .LBB0_157
+; AVR2-NEXT:  ; %bb.159: ; %shift.loop4
+; AVR2-NEXT:    ; in Loop: Header=BB0_158 Depth=2
+; AVR2-NEXT:    mov r31, r1
+; AVR2-NEXT:    rjmp .LBB0_157
+; AVR2-NEXT:  .LBB0_160: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    ldi r30, 0
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    mov r4, r30
+; AVR2-NEXT:    mov r5, r31
+; AVR2-NEXT:    mov r16, r4
+; AVR2-NEXT:    mov r17, r5
+; AVR2-NEXT:    mov r8, r4
+; AVR2-NEXT:    mov r9, r5
+; AVR2-NEXT:  .LBB0_161: ; %shift.done3
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r30, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r16, r30
+; AVR2-NEXT:    and r17, r31
+; AVR2-NEXT:    and r8, r22
+; AVR2-NEXT:    and r9, r23
+; AVR2-NEXT:    ldd r30, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r4, r30
+; AVR2-NEXT:    and r5, r31
+; AVR2-NEXT:    and r24, r18
+; AVR2-NEXT:    and r25, r19
+; AVR2-NEXT:    ldi r30, 1
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    cpc r16, r24
+; AVR2-NEXT:    cpc r17, r25
+; AVR2-NEXT:    cpc r8, r24
+; AVR2-NEXT:    cpc r9, r25
+; AVR2-NEXT:    cpc r4, r24
+; AVR2-NEXT:    cpc r5, r25
+; AVR2-NEXT:    breq .LBB0_163
+; AVR2-NEXT:  ; %bb.162: ; %shift.done3
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r30, r1
+; AVR2-NEXT:  .LBB0_163: ; %shift.done3
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r30, 1
+; AVR2-NEXT:    cpi r30, 0
+; AVR2-NEXT:    breq .LBB0_164
+; AVR2-NEXT:    rjmp .LBB0_168
+; AVR2-NEXT:  .LBB0_164: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    add r18, r20
+; AVR2-NEXT:    adc r19, r21
+; AVR2-NEXT:    ldd r16, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r17, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT:    adc r16, r12
+; AVR2-NEXT:    adc r17, r13
+; AVR2-NEXT:    adc r22, r10
+; AVR2-NEXT:    adc r23, r11
+; AVR2-NEXT:    ldd r14, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r15, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    adc r14, r2
+; AVR2-NEXT:    adc r15, r3
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    cp r18, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    ldi r30, 0
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    std Y+19, r17 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+18, r16 ; 2-byte Folded Spill
+; AVR2-NEXT:    cpc r16, r30
+; AVR2-NEXT:    cpc r17, r31
+; AVR2-NEXT:    cpc r22, r30
+; AVR2-NEXT:    cpc r23, r31
+; AVR2-NEXT:    ldi r30, 16
+; AVR2-NEXT:    ldi r31, 0
+; AVR2-NEXT:    std Y+36, r15 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+35, r14 ; 2-byte Folded Spill
+; AVR2-NEXT:    cpc r14, r30
+; AVR2-NEXT:    cpc r15, r31
+; AVR2-NEXT:    brlo .LBB0_166
+; AVR2-NEXT:  ; %bb.165: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r1
+; AVR2-NEXT:  .LBB0_166: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r24, 1
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    ldd r24, Y+3 ; 1-byte Folded Reload
+; AVR2-NEXT:    brne .LBB0_168
+; AVR2-NEXT:  ; %bb.167: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    inc r24
+; AVR2-NEXT:    std Y+46, r24
+; AVR2-NEXT:  .LBB0_168: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+10 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+11 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r18, r24
+; AVR2-NEXT:    and r19, r25
+; AVR2-NEXT:    ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r24, Y+8 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+9 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r26, r24
+; AVR2-NEXT:    and r27, r25
+; AVR2-NEXT:    ldd r24, Y+6 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+7 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r22, r24
+; AVR2-NEXT:    and r23, r25
+; AVR2-NEXT:    ldd r24, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r20, Y+4 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+5 ; 2-byte Folded Reload
+; AVR2-NEXT:    and r24, r20
+; AVR2-NEXT:    and r25, r21
+; AVR2-NEXT:    std Y+36, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+35, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r6, Y+12 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r7, Y+13 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r4, Y+14 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r5, Y+15 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r12, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r13, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:  .LBB0_169: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    ori r25, 24
+; AVR2-NEXT:    std Y+31, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+30, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    ldi r24, 4
+; AVR2-NEXT:    cpc r25, r24
+; AVR2-NEXT:    brne .LBB0_174
+; AVR2-NEXT:  ; %bb.170: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    cp r18, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    ldi r18, 0
+; AVR2-NEXT:    ldi r19, 0
+; AVR2-NEXT:    cpc r26, r18
+; AVR2-NEXT:    cpc r27, r19
+; AVR2-NEXT:    cpc r22, r18
+; AVR2-NEXT:    cpc r23, r19
+; AVR2-NEXT:    ldd r20, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    cpc r20, r18
+; AVR2-NEXT:    cpc r21, r19
+; AVR2-NEXT:    breq .LBB0_172
+; AVR2-NEXT:  ; %bb.171: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r1
+; AVR2-NEXT:  .LBB0_172: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r24, 1
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    ldd r22, Y+22 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r23, Y+23 ; 2-byte Folded Reload
+; AVR2-NEXT:    breq .LBB0_173
+; AVR2-NEXT:    rjmp .LBB0_185
+; AVR2-NEXT:  .LBB0_173: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ori r22, 8
+; AVR2-NEXT:    rjmp .LBB0_186
+; AVR2-NEXT:  .LBB0_174: ; %.preheader18
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r25, 13
+; AVR2-NEXT:    rjmp .LBB0_177
+; AVR2-NEXT:  .LBB0_175: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    mov r26, r10
+; AVR2-NEXT:    mov r27, r11
+; AVR2-NEXT:  .LBB0_176: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    mov r17, r19
+; AVR2-NEXT:    mov r20, r1
+; AVR2-NEXT:    mov r19, r1
+; AVR2-NEXT:    mov r18, r1
+; AVR2-NEXT:    or r26, r20
+; AVR2-NEXT:    or r27, r21
+; AVR2-NEXT:    or r18, r16
+; AVR2-NEXT:    or r19, r17
+; AVR2-NEXT:    dec r25
+; AVR2-NEXT:  .LBB0_177: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    cpi r25, 0
+; AVR2-NEXT:    brne .LBB0_178
+; AVR2-NEXT:    rjmp .LBB0_184
+; AVR2-NEXT:  .LBB0_178: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    mov r16, r18
+; AVR2-NEXT:    swap r16
+; AVR2-NEXT:    andi r16, 15
+; AVR2-NEXT:    swap r19
+; AVR2-NEXT:    eor r16, r19
+; AVR2-NEXT:    andi r19, 15
+; AVR2-NEXT:    eor r16, r19
+; AVR2-NEXT:    swap r26
+; AVR2-NEXT:    eor r19, r26
+; AVR2-NEXT:    andi r26, 15
+; AVR2-NEXT:    eor r19, r26
+; AVR2-NEXT:    swap r27
+; AVR2-NEXT:    eor r26, r27
+; AVR2-NEXT:    andi r27, 15
+; AVR2-NEXT:    eor r26, r27
+; AVR2-NEXT:    swap r22
+; AVR2-NEXT:    mov r21, r22
+; AVR2-NEXT:    andi r21, 240
+; AVR2-NEXT:    andi r22, 15
+; AVR2-NEXT:    swap r23
+; AVR2-NEXT:    eor r22, r23
+; AVR2-NEXT:    andi r23, 15
+; AVR2-NEXT:    eor r22, r23
+; AVR2-NEXT:    ldd r30, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    swap r30
+; AVR2-NEXT:    eor r23, r30
+; AVR2-NEXT:    andi r30, 15
+; AVR2-NEXT:    eor r23, r30
+; AVR2-NEXT:    swap r31
+; AVR2-NEXT:    eor r30, r31
+; AVR2-NEXT:    andi r31, 15
+; AVR2-NEXT:    eor r30, r31
+; AVR2-NEXT:    std Y+36, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+35, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r14, r25
+; AVR2-NEXT:    clr r15
+; AVR2-NEXT:    andi r18, 15
+; AVR2-NEXT:    cpi r18, 0
+; AVR2-NEXT:    brne .LBB0_180
+; AVR2-NEXT:  ; %bb.179: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    cp r12, r14
+; AVR2-NEXT:    cpc r13, r15
+; AVR2-NEXT:    brge .LBB0_180
+; AVR2-NEXT:    rjmp .LBB0_176
+; AVR2-NEXT:  .LBB0_180: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    mov r10, r26
+; AVR2-NEXT:    mov r11, r27
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    ori r24, 48
+; AVR2-NEXT:    cpi r18, 10
+; AVR2-NEXT:    brlo .LBB0_182
+; AVR2-NEXT:  ; %bb.181: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    ldd r24, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT:    sub r18, r24
+; AVR2-NEXT:    subi r18, -87
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:  .LBB0_182: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    mov r30, r28
+; AVR2-NEXT:    mov r31, r29
+; AVR2-NEXT:    adiw r30, 41
+; AVR2-NEXT:    add r30, r14
+; AVR2-NEXT:    adc r31, r15
+; AVR2-NEXT:    std Z+5, r24
+; AVR2-NEXT:    cp r14, r12
+; AVR2-NEXT:    cpc r15, r13
+; AVR2-NEXT:    brge .LBB0_183
+; AVR2-NEXT:    rjmp .LBB0_175
+; AVR2-NEXT:  .LBB0_183: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT:    mov r12, r14
+; AVR2-NEXT:    mov r13, r15
+; AVR2-NEXT:    rjmp .LBB0_175
+; AVR2-NEXT:  .LBB0_184: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r27, 112
+; AVR2-NEXT:    ldi r26, 14
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    mov r8, r12
+; AVR2-NEXT:    mov r9, r13
+; AVR2-NEXT:    ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r22, Y+22 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r23, Y+23 ; 2-byte Folded Reload
+; AVR2-NEXT:    rjmp .LBB0_187
+; AVR2-NEXT:  .LBB0_185: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ori r22, 4
+; AVR2-NEXT:  .LBB0_186: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    std Y+45, r22
+; AVR2-NEXT:    ldi r27, 112
+; AVR2-NEXT:    ldi r26, 14
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    ldi r18, 0
+; AVR2-NEXT:    ldi r19, 4
+; AVR2-NEXT:    mov r20, r18
+; AVR2-NEXT:    mov r21, r19
+; AVR2-NEXT:    mov r8, r12
+; AVR2-NEXT:    mov r9, r13
+; AVR2-NEXT:  .LBB0_187: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r30, r20
+; AVR2-NEXT:    mov r31, r21
+; AVR2-NEXT:    sbiw r30, 10
+; AVR2-NEXT:    ldi r25, 2
+; AVR2-NEXT:    cpi r30, -19
+; AVR2-NEXT:    ldi r18, -1
+; AVR2-NEXT:    cpc r31, r18
+; AVR2-NEXT:    brlo .LBB0_189
+; AVR2-NEXT:  ; %bb.188: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r25, r24
+; AVR2-NEXT:  .LBB0_189: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r18, r20
+; AVR2-NEXT:    mov r19, r21
+; AVR2-NEXT:    subi r18, 100
+; AVR2-NEXT:    sbci r19, 0
+; AVR2-NEXT:    ldi r23, 3
+; AVR2-NEXT:    cpi r18, 57
+; AVR2-NEXT:    ldi r24, -1
+; AVR2-NEXT:    std Y+36, r19 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+35, r18 ; 2-byte Folded Spill
+; AVR2-NEXT:    cpc r19, r24
+; AVR2-NEXT:    ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r16, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r17, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    brlo .LBB0_191
+; AVR2-NEXT:  ; %bb.190: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r23, r25
+; AVR2-NEXT:  .LBB0_191: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r22
+; AVR2-NEXT:    andi r24, 1
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    brne .LBB0_196
+; AVR2-NEXT:  ; %bb.192: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    mov r25, r17
+; AVR2-NEXT:    andi r24, 2
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brne .LBB0_197
+; AVR2-NEXT:  ; %bb.193: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    mov r25, r17
+; AVR2-NEXT:    andi r24, 4
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    ldi r18, 1
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    breq .LBB0_195
+; AVR2-NEXT:  ; %bb.194: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r18, r1
+; AVR2-NEXT:  .LBB0_195: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    lsl r24
+; AVR2-NEXT:    rjmp .LBB0_199
+; AVR2-NEXT:  .LBB0_196: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 45
+; AVR2-NEXT:    rjmp .LBB0_198
+; AVR2-NEXT:  .LBB0_197: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 43
+; AVR2-NEXT:  .LBB0_198: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r18, r1
+; AVR2-NEXT:  .LBB0_199: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r11, r24
+; AVR2-NEXT:    andi r22, 12
+; AVR2-NEXT:    cpi r22, 0
+; AVR2-NEXT:    brne .LBB0_200
+; AVR2-NEXT:    rjmp .LBB0_208
+; AVR2-NEXT:  .LBB0_200: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    andi r24, 1
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    ldi r24, 3
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    brne .LBB0_202
+; AVR2-NEXT:  ; %bb.201: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 4
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:  .LBB0_202: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r24, r30
+; AVR2-NEXT:    cpc r25, r31
+; AVR2-NEXT:    brlt .LBB0_203
+; AVR2-NEXT:    rjmp .LBB0_210
+; AVR2-NEXT:  .LBB0_203: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    sub r30, r24
+; AVR2-NEXT:    sbc r31, r25
+; AVR2-NEXT:    andi r16, 8
+; AVR2-NEXT:    andi r17, 0
+; AVR2-NEXT:    cp r16, r1
+; AVR2-NEXT:    cpc r17, r1
+; AVR2-NEXT:    breq .LBB0_204
+; AVR2-NEXT:    rjmp .LBB0_211
+; AVR2-NEXT:  .LBB0_204: ; %.preheader15
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r17, r18
+; AVR2-NEXT:  .LBB0_205: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    ldi r24, 32
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_206
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_206: ; in Loop: Header=BB0_205 Depth=2
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r30, r14
+; AVR2-NEXT:    mov r31, r15
+; AVR2-NEXT:    sbiw r30, 1
+; AVR2-NEXT:    cp r30, r1
+; AVR2-NEXT:    cpc r31, r1
+; AVR2-NEXT:    brne .LBB0_205
+; AVR2-NEXT:  ; %bb.207: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    mov r18, r17
+; AVR2-NEXT:    rjmp .LBB0_211
+; AVR2-NEXT:  .LBB0_208: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    mov r25, r17
+; AVR2-NEXT:    andi r24, 0
+; AVR2-NEXT:    andi r25, 48
+; AVR2-NEXT:    cp r1, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brne .LBB0_209
+; AVR2-NEXT:    rjmp .LBB0_219
+; AVR2-NEXT:  .LBB0_209: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r22, r18
+; AVR2-NEXT:    mov r30, r8
+; AVR2-NEXT:    mov r31, r9
+; AVR2-NEXT:    rjmp .LBB0_232
+; AVR2-NEXT:  .LBB0_210: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:  .LBB0_211: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    andi r18, 1
+; AVR2-NEXT:    cpi r18, 0
+; AVR2-NEXT:    mov r24, r11
+; AVR2-NEXT:    brne .LBB0_214
+; AVR2-NEXT:  ; %bb.212: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r16, r30
+; AVR2-NEXT:    mov r17, r31
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_213
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_213: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:  .LBB0_214: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r16, r30
+; AVR2-NEXT:    mov r17, r31
+; AVR2-NEXT:    ldd r24, Y+45
+; AVR2-NEXT:    andi r24, 8
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    ldi r24, lo8(.str)
+; AVR2-NEXT:    ldi r25, hi8(.str)
+; AVR2-NEXT:    mov r26, r24
+; AVR2-NEXT:    mov r27, r25
+; AVR2-NEXT:    breq .LBB0_216
+; AVR2-NEXT:  ; %bb.215: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, lo8(.str.1)
+; AVR2-NEXT:    ldi r25, hi8(.str.1)
+; AVR2-NEXT:    mov r26, r24
+; AVR2-NEXT:    mov r27, r25
+; AVR2-NEXT:  .LBB0_216: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    ld r24, X
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    breq .LBB0_218
+; AVR2-NEXT:  ; %bb.217: ; in Loop: Header=BB0_216 Depth=2
+; AVR2-NEXT:    ldd r25, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT:    sub r24, r25
+; AVR2-NEXT:    ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r30, 1
+; AVR2-NEXT:    std Y+40, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    adiw r26, 1
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    mov r14, r26
+; AVR2-NEXT:    mov r15, r27
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    mov r26, r14
+; AVR2-NEXT:    mov r27, r15
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_216
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_218: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:    rjmp .LBB0_324
+; AVR2-NEXT:  .LBB0_219: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r8
+; AVR2-NEXT:    mov r25, r9
+; AVR2-NEXT:    cpi r24, 2
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brsh .LBB0_221
+; AVR2-NEXT:  ; %bb.220: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r8, r24
+; AVR2-NEXT:    mov r9, r25
+; AVR2-NEXT:  .LBB0_221: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    mov r30, r26
+; AVR2-NEXT:    clr r31
+; AVR2-NEXT:    cpi r26, 0
+; AVR2-NEXT:    breq .LBB0_224
+; AVR2-NEXT:  ; %bb.222: ; in Loop: Header=BB0_221 Depth=2
+; AVR2-NEXT:    mov r24, r28
+; AVR2-NEXT:    mov r25, r29
+; AVR2-NEXT:    adiw r24, 41
+; AVR2-NEXT:    add r24, r30
+; AVR2-NEXT:    adc r25, r31
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    ldd r24, Z+4
+; AVR2-NEXT:    mov r30, r14
+; AVR2-NEXT:    mov r31, r15
+; AVR2-NEXT:    cpi r24, 48
+; AVR2-NEXT:    brne .LBB0_224
+; AVR2-NEXT:  ; %bb.223: ; in Loop: Header=BB0_221 Depth=2
+; AVR2-NEXT:    dec r26
+; AVR2-NEXT:    rjmp .LBB0_221
+; AVR2-NEXT:  .LBB0_224: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    mov r25, r17
+; AVR2-NEXT:    andi r24, 16
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    breq .LBB0_226
+; AVR2-NEXT:  ; %bb.225: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r30, r8
+; AVR2-NEXT:    mov r31, r9
+; AVR2-NEXT:  .LBB0_226: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r20, -4
+; AVR2-NEXT:    ldi r24, -1
+; AVR2-NEXT:    cpc r21, r24
+; AVR2-NEXT:    brlt .LBB0_230
+; AVR2-NEXT:  ; %bb.227: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r20, r8
+; AVR2-NEXT:    cpc r21, r9
+; AVR2-NEXT:    brge .LBB0_230
+; AVR2-NEXT:  ; %bb.228: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ori r17, 32
+; AVR2-NEXT:    mov r22, r18
+; AVR2-NEXT:    cp r20, r30
+; AVR2-NEXT:    cpc r21, r31
+; AVR2-NEXT:    brge .LBB0_231
+; AVR2-NEXT:  ; %bb.229: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r20
+; AVR2-NEXT:    mov r25, r21
+; AVR2-NEXT:    com r24
+; AVR2-NEXT:    com r25
+; AVR2-NEXT:    add r30, r24
+; AVR2-NEXT:    adc r31, r25
+; AVR2-NEXT:    rjmp .LBB0_232
+; AVR2-NEXT:  .LBB0_230: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r22, r18
+; AVR2-NEXT:    sbiw r30, 1
+; AVR2-NEXT:    rjmp .LBB0_232
+; AVR2-NEXT:  .LBB0_231: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:  .LBB0_232: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r20
+; AVR2-NEXT:    mov r25, r21
+; AVR2-NEXT:    subi r24, 232
+; AVR2-NEXT:    sbci r25, 3
+; AVR2-NEXT:    mov r18, r16
+; AVR2-NEXT:    mov r19, r17
+; AVR2-NEXT:    andi r18, 0
+; AVR2-NEXT:    andi r19, 32
+; AVR2-NEXT:    cp r1, r1
+; AVR2-NEXT:    std Y+31, r19 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+30, r18 ; 2-byte Folded Spill
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    mov r12, r16
+; AVR2-NEXT:    mov r13, r17
+; AVR2-NEXT:    std Y+21, r3 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+20, r2 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+27, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+26, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    brne .LBB0_238
+; AVR2-NEXT:  ; %bb.233: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r24, 49
+; AVR2-NEXT:    mov r18, r24
+; AVR2-NEXT:    mov r19, r25
+; AVR2-NEXT:    ldi r24, -8
+; AVR2-NEXT:    cpc r19, r24
+; AVR2-NEXT:    ldi r18, 4
+; AVR2-NEXT:    ldi r19, 0
+; AVR2-NEXT:    brlo .LBB0_235
+; AVR2-NEXT:  ; %bb.234: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r18, r23
+; AVR2-NEXT:    clr r19
+; AVR2-NEXT:  .LBB0_235: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    andi r24, 0
+; AVR2-NEXT:    andi r25, 8
+; AVR2-NEXT:    cp r1, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    ldi r24, 3
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    breq .LBB0_237
+; AVR2-NEXT:  ; %bb.236: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 5
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:  .LBB0_237: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    add r24, r18
+; AVR2-NEXT:    adc r25, r19
+; AVR2-NEXT:    mov r16, r12
+; AVR2-NEXT:    mov r17, r13
+; AVR2-NEXT:    rjmp .LBB0_240
+; AVR2-NEXT:  .LBB0_238: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r1, r20
+; AVR2-NEXT:    cpc r1, r21
+; AVR2-NEXT:    ldi r24, 1
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    brge .LBB0_240
+; AVR2-NEXT:  ; %bb.239: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r20
+; AVR2-NEXT:    mov r25, r21
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:  .LBB0_240: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r30, r1
+; AVR2-NEXT:    cpc r31, r1
+; AVR2-NEXT:    mov r2, r30
+; AVR2-NEXT:    mov r3, r31
+; AVR2-NEXT:    breq .LBB0_242
+; AVR2-NEXT:  ; %bb.241: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    adiw r30, 1
+; AVR2-NEXT:    rjmp .LBB0_243
+; AVR2-NEXT:  .LBB0_242: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:    swap r31
+; AVR2-NEXT:    swap r30
+; AVR2-NEXT:    andi r30, 15
+; AVR2-NEXT:    eor r30, r31
+; AVR2-NEXT:    andi r31, 15
+; AVR2-NEXT:    eor r30, r31
+; AVR2-NEXT:    andi r30, 1
+; AVR2-NEXT:    andi r31, 0
+; AVR2-NEXT:  .LBB0_243: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r16, r22
+; AVR2-NEXT:    mov r18, r22
+; AVR2-NEXT:    com r18
+; AVR2-NEXT:    andi r18, 1
+; AVR2-NEXT:    andi r19, 0
+; AVR2-NEXT:    add r18, r30
+; AVR2-NEXT:    adc r19, r31
+; AVR2-NEXT:    add r18, r24
+; AVR2-NEXT:    adc r19, r25
+; AVR2-NEXT:    ldd r24, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    sub r30, r18
+; AVR2-NEXT:    sbc r31, r19
+; AVR2-NEXT:    cp r18, r24
+; AVR2-NEXT:    cpc r19, r25
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    brlt .LBB0_245
+; AVR2-NEXT:  ; %bb.244: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:  .LBB0_245: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r18, r12
+; AVR2-NEXT:    mov r19, r13
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    andi r24, 9
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    mov r8, r20
+; AVR2-NEXT:    mov r9, r21
+; AVR2-NEXT:    std Y+24, r23 ; 1-byte Folded Spill
+; AVR2-NEXT:    mov r10, r26
+; AVR2-NEXT:    breq .LBB0_246
+; AVR2-NEXT:    rjmp .LBB0_251
+; AVR2-NEXT:  .LBB0_246: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r30, r1
+; AVR2-NEXT:    cpc r31, r1
+; AVR2-NEXT:    brne .LBB0_247
+; AVR2-NEXT:    rjmp .LBB0_251
+; AVR2-NEXT:  .LBB0_247: ; %.preheader
+; AVR2-NEXT:    ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r17, r27
+; AVR2-NEXT:  .LBB0_248: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    ldi r24, 32
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_249
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_249: ; in Loop: Header=BB0_248 Depth=2
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r24, r14
+; AVR2-NEXT:    mov r25, r15
+; AVR2-NEXT:    sbiw r24, 1
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    mov r14, r24
+; AVR2-NEXT:    mov r15, r25
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brne .LBB0_248
+; AVR2-NEXT:  ; %bb.250: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    mov r18, r12
+; AVR2-NEXT:    mov r19, r13
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    mov r26, r10
+; AVR2-NEXT:    mov r27, r17
+; AVR2-NEXT:  .LBB0_251: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    std Y+22, r27 ; 1-byte Folded Spill
+; AVR2-NEXT:    andi r16, 1
+; AVR2-NEXT:    cpi r16, 0
+; AVR2-NEXT:    mov r24, r11
+; AVR2-NEXT:    breq .LBB0_253
+; AVR2-NEXT:  ; %bb.252: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r16, 232
+; AVR2-NEXT:    ldi r17, 3
+; AVR2-NEXT:    rjmp .LBB0_255
+; AVR2-NEXT:  .LBB0_253: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    ldi r16, 232
+; AVR2-NEXT:    ldi r17, 3
+; AVR2-NEXT:    brpl .LBB0_254
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_254: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r30, r14
+; AVR2-NEXT:    mov r31, r15
+; AVR2-NEXT:    mov r18, r12
+; AVR2-NEXT:    mov r19, r13
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    mov r26, r10
+; AVR2-NEXT:  .LBB0_255: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    andi r24, 0
+; AVR2-NEXT:    andi r25, 8
+; AVR2-NEXT:    cp r1, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brne .LBB0_256
+; AVR2-NEXT:    rjmp .LBB0_259
+; AVR2-NEXT:  .LBB0_256: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    ldi r24, 48
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_257
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_257: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 120
+; AVR2-NEXT:    ldd r25, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT:    sub r24, r25
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_258
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_258: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r30, r14
+; AVR2-NEXT:    mov r31, r15
+; AVR2-NEXT:    mov r18, r12
+; AVR2-NEXT:    mov r19, r13
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    mov r26, r10
+; AVR2-NEXT:  .LBB0_259: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    andi r24, 8
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    breq .LBB0_260
+; AVR2-NEXT:    rjmp .LBB0_265
+; AVR2-NEXT:  .LBB0_260: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r30, r1
+; AVR2-NEXT:    cpc r31, r1
+; AVR2-NEXT:    breq .LBB0_265
+; AVR2-NEXT:  ; %bb.261: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    add r24, r30
+; AVR2-NEXT:    adc r25, r31
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:  .LBB0_262: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    mov r14, r30
+; AVR2-NEXT:    mov r15, r31
+; AVR2-NEXT:    ldi r24, 48
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_263
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_263: ; in Loop: Header=BB0_262 Depth=2
+; AVR2-NEXT:    mov r30, r14
+; AVR2-NEXT:    mov r31, r15
+; AVR2-NEXT:    sbiw r30, 1
+; AVR2-NEXT:    cp r30, r1
+; AVR2-NEXT:    cpc r31, r1
+; AVR2-NEXT:    brne .LBB0_262
+; AVR2-NEXT:  ; %bb.264: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    mov r26, r10
+; AVR2-NEXT:  .LBB0_265: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    std Y+29, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+28, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    breq .LBB0_266
+; AVR2-NEXT:    rjmp .LBB0_277
+; AVR2-NEXT:  .LBB0_266: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+46
+; AVR2-NEXT:    cpi r24, 49
+; AVR2-NEXT:    breq .LBB0_268
+; AVR2-NEXT:  ; %bb.267: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r25, Y+45
+; AVR2-NEXT:    andi r25, -17
+; AVR2-NEXT:    std Y+45, r25
+; AVR2-NEXT:  .LBB0_268: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_269
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_269: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r2
+; AVR2-NEXT:    mov r25, r3
+; AVR2-NEXT:    cp r1, r24
+; AVR2-NEXT:    cpc r1, r25
+; AVR2-NEXT:    brlt .LBB0_270
+; AVR2-NEXT:    rjmp .LBB0_293
+; AVR2-NEXT:  .LBB0_270: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 46
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_271
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_271: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    ldi r17, 1
+; AVR2-NEXT:    mov r18, r2
+; AVR2-NEXT:    mov r19, r3
+; AVR2-NEXT:    rjmp .LBB0_274
+; AVR2-NEXT:  .LBB0_272: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT:    mov r18, r28
+; AVR2-NEXT:    mov r19, r29
+; AVR2-NEXT:    subi r18, 215
+; AVR2-NEXT:    sbci r19, 255
+; AVR2-NEXT:    add r18, r24
+; AVR2-NEXT:    adc r19, r25
+; AVR2-NEXT:    mov r30, r18
+; AVR2-NEXT:    mov r31, r19
+; AVR2-NEXT:    ldd r24, Z+5
+; AVR2-NEXT:  .LBB0_273: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    mov r30, r12
+; AVR2-NEXT:    mov r31, r13
+; AVR2-NEXT:    adiw r30, 1
+; AVR2-NEXT:    mov r12, r30
+; AVR2-NEXT:    mov r13, r31
+; AVR2-NEXT:    inc r17
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    mov r18, r2
+; AVR2-NEXT:    mov r19, r3
+; AVR2-NEXT:    brpl .LBB0_274
+; AVR2-NEXT:  ; %bb.344:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_274: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    mov r24, r17
+; AVR2-NEXT:    clr r25
+; AVR2-NEXT:    cp r18, r24
+; AVR2-NEXT:    cpc r19, r25
+; AVR2-NEXT:    brge .LBB0_275
+; AVR2-NEXT:    rjmp .LBB0_295
+; AVR2-NEXT:  .LBB0_275: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT:    mov r18, r10
+; AVR2-NEXT:    cp r17, r18
+; AVR2-NEXT:    brsh .LBB0_276
+; AVR2-NEXT:    rjmp .LBB0_272
+; AVR2-NEXT:  .LBB0_276: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT:    ldi r24, 48
+; AVR2-NEXT:    rjmp .LBB0_273
+; AVR2-NEXT:  .LBB0_277: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r1, r20
+; AVR2-NEXT:    cpc r1, r21
+; AVR2-NEXT:    mov r16, r20
+; AVR2-NEXT:    mov r17, r21
+; AVR2-NEXT:    brlt .LBB0_279
+; AVR2-NEXT:  ; %bb.278: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r16, 0
+; AVR2-NEXT:    ldi r17, 0
+; AVR2-NEXT:  .LBB0_279: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    neg r3
+; AVR2-NEXT:    neg r2
+; AVR2-NEXT:    sbc r3, r1
+; AVR2-NEXT:    mov r14, r26
+; AVR2-NEXT:    clr r15
+; AVR2-NEXT:    mov r10, r2
+; AVR2-NEXT:    mov r11, r3
+; AVR2-NEXT:  .LBB0_280: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    cpi r16, -1
+; AVR2-NEXT:    ldi r24, -1
+; AVR2-NEXT:    cpc r17, r24
+; AVR2-NEXT:    brne .LBB0_283
+; AVR2-NEXT:  ; %bb.281: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT:    ldi r24, 46
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_282
+; AVR2-NEXT:  ; %bb.346:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_282: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r2, r10
+; AVR2-NEXT:    mov r3, r11
+; AVR2-NEXT:  .LBB0_283: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT:    mov r20, r8
+; AVR2-NEXT:    mov r21, r9
+; AVR2-NEXT:    mov r18, r20
+; AVR2-NEXT:    mov r19, r21
+; AVR2-NEXT:    sub r18, r16
+; AVR2-NEXT:    sbc r19, r17
+; AVR2-NEXT:    ldi r24, 48
+; AVR2-NEXT:    mov r25, r19
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brmi .LBB0_286
+; AVR2-NEXT:  ; %bb.284: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT:    cp r18, r14
+; AVR2-NEXT:    cpc r19, r15
+; AVR2-NEXT:    brge .LBB0_286
+; AVR2-NEXT:  ; %bb.285: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT:    mov r24, r28
+; AVR2-NEXT:    mov r25, r29
+; AVR2-NEXT:    adiw r24, 41
+; AVR2-NEXT:    add r24, r18
+; AVR2-NEXT:    adc r25, r19
+; AVR2-NEXT:    mov r30, r24
+; AVR2-NEXT:    mov r31, r25
+; AVR2-NEXT:    ldd r24, Z+5
+; AVR2-NEXT:    mov r2, r10
+; AVR2-NEXT:    mov r3, r11
+; AVR2-NEXT:  .LBB0_286: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:    sbiw r30, 1
+; AVR2-NEXT:    cp r2, r16
+; AVR2-NEXT:    cpc r3, r17
+; AVR2-NEXT:    brge .LBB0_288
+; AVR2-NEXT:  ; %bb.287: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT:    mov r16, r30
+; AVR2-NEXT:    mov r17, r31
+; AVR2-NEXT:    ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r30, 1
+; AVR2-NEXT:    std Y+40, r31 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r30 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    mov r2, r10
+; AVR2-NEXT:    mov r3, r11
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brmi .LBB0_334
+; AVR2-NEXT:    rjmp .LBB0_280
+; AVR2-NEXT:  .LBB0_334:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_288: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r30, r20
+; AVR2-NEXT:    cpc r31, r21
+; AVR2-NEXT:    breq .LBB0_289
+; AVR2-NEXT:    rjmp .LBB0_297
+; AVR2-NEXT:  .LBB0_289: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r25, Y+46
+; AVR2-NEXT:    cpi r25, 54
+; AVR2-NEXT:    ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT:    brge .LBB0_292
+; AVR2-NEXT:  ; %bb.290: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cpi r25, 53
+; AVR2-NEXT:    brne .LBB0_298
+; AVR2-NEXT:  ; %bb.291: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r25, Y+45
+; AVR2-NEXT:    andi r25, 16
+; AVR2-NEXT:    cpi r25, 0
+; AVR2-NEXT:    brne .LBB0_298
+; AVR2-NEXT:  .LBB0_292: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 49
+; AVR2-NEXT:    rjmp .LBB0_298
+; AVR2-NEXT:  .LBB0_293: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    andi r24, 16
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    breq .LBB0_294
+; AVR2-NEXT:    rjmp .LBB0_303
+; AVR2-NEXT:  .LBB0_294: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    rjmp .LBB0_296
+; AVR2-NEXT:  .LBB0_295: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r16, 232
+; AVR2-NEXT:    ldi r17, 3
+; AVR2-NEXT:  .LBB0_296: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT:    rjmp .LBB0_305
+; AVR2-NEXT:  .LBB0_297: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT:  .LBB0_298: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_299
+; AVR2-NEXT:  ; %bb.348:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_299: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    mov r18, r12
+; AVR2-NEXT:    mov r19, r13
+; AVR2-NEXT:    andi r18, 16
+; AVR2-NEXT:    andi r19, 0
+; AVR2-NEXT:    cp r18, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    brne .LBB0_300
+; AVR2-NEXT:    rjmp .LBB0_323
+; AVR2-NEXT:  .LBB0_300: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r16, r1
+; AVR2-NEXT:    cpc r17, r1
+; AVR2-NEXT:    breq .LBB0_301
+; AVR2-NEXT:    rjmp .LBB0_323
+; AVR2-NEXT:  .LBB0_301: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 46
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_302
+; AVR2-NEXT:  ; %bb.350:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_302: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    rjmp .LBB0_323
+; AVR2-NEXT:  .LBB0_303: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 46
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT:    brpl .LBB0_304
+; AVR2-NEXT:  ; %bb.352:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_304: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:  .LBB0_305: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+22 ; 1-byte Folded Reload
+; AVR2-NEXT:    sub r25, r24
+; AVR2-NEXT:    mov r24, r25
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_306
+; AVR2-NEXT:  ; %bb.354:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_306: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r18, r8
+; AVR2-NEXT:    mov r19, r9
+; AVR2-NEXT:    mov r24, r19
+; AVR2-NEXT:    tst r24
+; AVR2-NEXT:    brmi .LBB0_311
+; AVR2-NEXT:  ; %bb.307: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    cp r18, r1
+; AVR2-NEXT:    cpc r19, r1
+; AVR2-NEXT:    breq .LBB0_309
+; AVR2-NEXT:  ; %bb.308: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 43
+; AVR2-NEXT:    rjmp .LBB0_312
+; AVR2-NEXT:  .LBB0_309: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+45
+; AVR2-NEXT:    andi r24, 16
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    brne .LBB0_311
+; AVR2-NEXT:  ; %bb.310: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r24, 43
+; AVR2-NEXT:    ldi r18, 0
+; AVR2-NEXT:    ldi r19, 0
+; AVR2-NEXT:    mov r8, r18
+; AVR2-NEXT:    mov r9, r19
+; AVR2-NEXT:    rjmp .LBB0_312
+; AVR2-NEXT:  .LBB0_311: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    neg r19
+; AVR2-NEXT:    neg r18
+; AVR2-NEXT:    sbc r19, r1
+; AVR2-NEXT:    mov r8, r18
+; AVR2-NEXT:    mov r9, r19
+; AVR2-NEXT:    ldi r24, 45
+; AVR2-NEXT:  .LBB0_312: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_313
+; AVR2-NEXT:  ; %bb.356:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_313: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT:    cpi r24, 49
+; AVR2-NEXT:    ldi r24, -8
+; AVR2-NEXT:    cpc r25, r24
+; AVR2-NEXT:    brlo .LBB0_314
+; AVR2-NEXT:    rjmp .LBB0_316
+; AVR2-NEXT:  .LBB0_314: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r8
+; AVR2-NEXT:    mov r25, r9
+; AVR2-NEXT:    mov r22, r16
+; AVR2-NEXT:    mov r23, r17
+; AVR2-NEXT:    rcall __udivmodhi4
+; AVR2-NEXT:    mov r14, r16
+; AVR2-NEXT:    mov r15, r17
+; AVR2-NEXT:    mov r16, r22
+; AVR2-NEXT:    mov r17, r23
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    subi r24, -48
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_315
+; AVR2-NEXT:  ; %bb.358:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_315: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    mov r25, r17
+; AVR2-NEXT:    mov r22, r14
+; AVR2-NEXT:    mov r23, r15
+; AVR2-NEXT:    rcall __mulhi3
+; AVR2-NEXT:    sub r8, r24
+; AVR2-NEXT:    sbc r9, r25
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    adiw r24, 3
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    rjmp .LBB0_317
+; AVR2-NEXT:  .LBB0_316: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    ldd r24, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT:    cpi r24, 57
+; AVR2-NEXT:    ldi r24, -1
+; AVR2-NEXT:    cpc r25, r24
+; AVR2-NEXT:    brlo .LBB0_317
+; AVR2-NEXT:    rjmp .LBB0_326
+; AVR2-NEXT:  .LBB0_317: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldi r22, 100
+; AVR2-NEXT:    ldi r23, 0
+; AVR2-NEXT:    mov r24, r8
+; AVR2-NEXT:    mov r25, r9
+; AVR2-NEXT:    mov r14, r22
+; AVR2-NEXT:    mov r15, r23
+; AVR2-NEXT:    rcall __udivmodhi4
+; AVR2-NEXT:    mov r16, r22
+; AVR2-NEXT:    mov r17, r23
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    subi r24, -48
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_318
+; AVR2-NEXT:  ; %bb.360:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_318: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    mov r25, r17
+; AVR2-NEXT:    mov r22, r14
+; AVR2-NEXT:    mov r23, r15
+; AVR2-NEXT:    rcall __mulhi3
+; AVR2-NEXT:    sub r8, r24
+; AVR2-NEXT:    sbc r9, r25
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    ldi r24, 10
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r14, r24
+; AVR2-NEXT:    mov r15, r25
+; AVR2-NEXT:    mov r24, r8
+; AVR2-NEXT:    mov r25, r9
+; AVR2-NEXT:  .LBB0_319: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r8, r24
+; AVR2-NEXT:    mov r9, r25
+; AVR2-NEXT:    mov r22, r14
+; AVR2-NEXT:    mov r23, r15
+; AVR2-NEXT:    rcall __udivmodhi4
+; AVR2-NEXT:    mov r16, r22
+; AVR2-NEXT:    mov r17, r23
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    subi r24, -48
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_320
+; AVR2-NEXT:  ; %bb.362:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_320: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r16
+; AVR2-NEXT:    mov r25, r17
+; AVR2-NEXT:    mov r22, r14
+; AVR2-NEXT:    mov r23, r15
+; AVR2-NEXT:    rcall __mulhi3
+; AVR2-NEXT:    sub r8, r24
+; AVR2-NEXT:    sbc r9, r25
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    mov r24, r8
+; AVR2-NEXT:  .LBB0_321: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    subi r24, -48
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_322
+; AVR2-NEXT:  ; %bb.364:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_322: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    mov r24, r12
+; AVR2-NEXT:    mov r25, r13
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:  .LBB0_323: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT:  .LBB0_324: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT:    cp r1, r30
+; AVR2-NEXT:    cpc r1, r31
+; AVR2-NEXT:    brlt .LBB0_325
+; AVR2-NEXT:  ; %bb.366: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    rjmp .LBB0_3
+; AVR2-NEXT:  .LBB0_325: ; in Loop: Header=BB0_324 Depth=2
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    adiw r24, 1
+; AVR2-NEXT:    std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:    sbiw r30, 1
+; AVR2-NEXT:    ldi r24, 32
+; AVR2-NEXT:    mov r22, r6
+; AVR2-NEXT:    mov r23, r7
+; AVR2-NEXT:    mov r16, r30
+; AVR2-NEXT:    mov r17, r31
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    icall
+; AVR2-NEXT:    ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT:    mov r30, r16
+; AVR2-NEXT:    mov r31, r17
+; AVR2-NEXT:    tst r25
+; AVR2-NEXT:    brpl .LBB0_324
+; AVR2-NEXT:  ; %bb.336:
+; AVR2-NEXT:    rjmp .LBB0_1
+; AVR2-NEXT:  .LBB0_326: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    ldd r24, Y+24 ; 1-byte Folded Reload
+; AVR2-NEXT:    cpi r24, 2
+; AVR2-NEXT:    ldi r24, 10
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r14, r24
+; AVR2-NEXT:    mov r15, r25
+; AVR2-NEXT:    mov r24, r8
+; AVR2-NEXT:    mov r25, r9
+; AVR2-NEXT:    brlo .LBB0_338
+; AVR2-NEXT:    rjmp .LBB0_319
+; AVR2-NEXT:  .LBB0_338: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT:    rjmp .LBB0_321
+; AVR2-NEXT:  .LBB0_327:
+; AVR2-NEXT:    ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT:    std Y+33, r25 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+32, r24 ; 2-byte Folded Spill
+; AVR2-NEXT:  ; %bb.339:
+; AVR2-NEXT:    rjmp .LBB0_1
+  %4 = alloca ptr, align 1
+  %5 = alloca %struct.my_va_list, align 1
+  %6 = alloca %union.anon, align 1
+  store ptr %2, ptr %4, align 1
+  %7 = getelementptr inbounds %struct.__file, ptr %0, i16 0, i32 2
+  %8 = load ptr addrspace(1), ptr %7, align 1
+  call addrspace(1) void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5)
+  call addrspace(1) void @llvm.lifetime.start.p0(i64 23, ptr nonnull %6)
+  %9 = getelementptr inbounds %struct.__file, ptr %0, i16 0, i32 1
+  %10 = load i8, ptr %9, align 1
+  %11 = and i8 %10, 2
+  %12 = icmp eq i8 %11, 0
+  br i1 %12, label %699, label %13
+
+13:                                               ; preds = %3
+  call addrspace(1) void @llvm.va_copy(ptr nonnull %5, ptr nonnull %4)
+  %14 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2
+  %15 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 1
+  br label %16
+
+16:                                               ; preds = %30, %13
+  %17 = phi i16 [ 0, %13 ], [ %31, %30 ]
+  %18 = phi ptr [ %1, %13 ], [ %32, %30 ]
+  %19 = getelementptr inbounds i8, ptr %18, i16 1
+  %20 = load i8, ptr %18, align 1
+  switch i8 %20, label %25 [
+    i8 0, label %697
+    i8 37, label %21
+  ]
+
+21:                                               ; preds = %16
+  %22 = getelementptr inbounds i8, ptr %18, i16 2
+  %23 = load i8, ptr %19, align 1
+  %24 = icmp eq i8 %23, 37
+  br i1 %24, label %25, label %33
+
+25:                                               ; preds = %16, %21
+  %26 = phi ptr [ %22, %21 ], [ %19, %16 ]
+  %27 = add nsw i16 %17, 1
+  %28 = call addrspace(1) i16 %8(i8 noundef signext %20, ptr noundef %0)
+  %29 = icmp slt i16 %28, 0
+  br i1 %29, label %697, label %30
+
+30:                                               ; preds = %688, %25, %668
+  %31 = phi i16 [ %27, %25 ], [ %669, %668 ], [ %689, %688 ]
+  %32 = phi ptr [ %26, %25 ], [ %125, %668 ], [ %125, %688 ]
+  br label %16
+
+33:                                               ; preds = %21, %111
+  %34 = phi i16 [ %112, %111 ], [ 0, %21 ]
+  %35 = phi i16 [ %113, %111 ], [ 0, %21 ]
+  %36 = phi i16 [ %114, %111 ], [ 0, %21 ]
+  %37 = phi i16 [ %115, %111 ], [ 0, %21 ]
+  %38 = phi i8 [ %117, %111 ], [ %23, %21 ]
+  %39 = phi ptr [ %116, %111 ], [ %22, %21 ]
+  %40 = icmp ult i16 %37, 32
+  br i1 %40, label %41, label %53
+
+41:                                               ; preds = %33
+  switch i8 %38, label %55 [
+    i8 48, label %42
+    i8 43, label %44
+    i8 32, label %46
+    i8 45, label %49
+    i8 35, label %51
+    i8 39, label %111
+  ]
+
+42:                                               ; preds = %41
+  %43 = or i16 %37, 1
+  br label %111
+
+44:                                               ; preds = %41
+  %45 = or i16 %37, 2
+  br label %46
+
+46:                                               ; preds = %41, %44
+  %47 = phi i16 [ %37, %41 ], [ %45, %44 ]
+  %48 = or i16 %47, 4
+  br label %111
+
+49:                                               ; preds = %41
+  %50 = or i16 %37, 8
+  br label %111
+
+51:                                               ; preds = %41
+  %52 = or i16 %37, 16
+  br label %111
+
+53:                                               ; preds = %33
+  %54 = icmp ult i16 %37, 128
+  br i1 %54, label %55, label %96
+
+55:                                               ; preds = %41, %53
+  %56 = add i8 %38, -48
+  %57 = icmp ult i8 %56, 10
+  br i1 %57, label %58, label %69
+
+58:                                               ; preds = %55
+  %59 = and i16 %37, 64
+  %60 = icmp eq i16 %59, 0
+  %61 = zext i8 %56 to i16
+  br i1 %60, label %65, label %62
+
+62:                                               ; preds = %58
+  %63 = mul nsw i16 %35, 10
+  %64 = add nsw i16 %63, %61
+  br label %111
+
+65:                                               ; preds = %58
+  %66 = mul nsw i16 %36, 10
+  %67 = add nsw i16 %66, %61
+  %68 = or i16 %37, 32
+  br label %111
+
+69:                                               ; preds = %55
+  switch i8 %38, label %119 [
+    i8 42, label %70
+    i8 46, label %82
+    i8 36, label %87
+    i8 108, label %97
+    i8 104, label %102
+    i8 76, label %107
+    i8 106, label %109
+    i8 122, label %111
+    i8 116, label %111
+  ]
+
+70:                                               ; preds = %69
+  %71 = icmp eq i16 %34, 0
+  br i1 %71, label %72, label %111
+
+72:                                               ; preds = %70
+  %73 = and i16 %37, 64
+  %74 = icmp eq i16 %73, 0
+  %75 = va_arg ptr %5, i16
+  br i1 %74, label %76, label %111
+
+76:                                               ; preds = %72
+  %77 = or i16 %37, 32
+  %78 = icmp slt i16 %75, 0
+  br i1 %78, label %79, label %111
+
+79:                                               ; preds = %76
+  %80 = sub nsw i16 0, %75
+  %81 = or i16 %37, 40
+  br label %111
+
+82:                                               ; preds = %69
+  %83 = and i16 %37, 64
+  %84 = icmp eq i16 %83, 0
+  br i1 %84, label %85, label %697
+
+85:                                               ; preds = %82
+  %86 = or i16 %37, 64
+  br label %111
+
+87:                                               ; preds = %69
+  %88 = icmp eq i16 %34, 0
+  br i1 %88, label %111, label %89
+
+89:                                               ; preds = %87
+  call addrspace(1) void @llvm.va_end(ptr nonnull %5)
+  call addrspace(1) void @llvm.va_copy(ptr nonnull %5, ptr nonnull %4)
+  %90 = and i16 %37, 64
+  %91 = icmp eq i16 %90, 0
+  %92 = select i1 %91, i16 %36, i16 %35
+  call fastcc addrspace(1) void @skip_to_arg(ptr noundef %1, ptr noundef nonnull %5, i16 noundef %92)
+  %93 = va_arg ptr %5, i16
+  %94 = select i1 %91, i16 %35, i16 %93
+  %95 = select i1 %91, i16 %93, i16 %36
+  br label %111
+
+96:                                               ; preds = %53
+  switch i8 %38, label %119 [
+    i8 108, label %97
+    i8 104, label %102
+    i8 76, label %107
+    i8 106, label %109
+    i8 122, label %111
+    i8 116, label %111
+  ]
+
+97:                                               ; preds = %69, %96
+  %98 = shl i16 %37, 2
+  %99 = and i16 %98, 512
+  %100 = or i16 %37, %99
+  %101 = or i16 %100, 128
+  br label %111
+
+102:                                              ; preds = %69, %96
+  %103 = shl i16 %37, 1
+  %104 = and i16 %103, 512
+  %105 = or i16 %37, %104
+  %106 = or i16 %105, 256
+  br label %111
+
+107:                                              ; preds = %69, %96
+  %108 = or i16 %37, 640
+  br label %111
+
+109:                                              ; preds = %69, %96
+  %110 = or i16 %37, 640
+  br label %111
+
+111:                                              ; preds = %89, %72, %69, %69, %96, %96, %87, %79, %76, %70, %41, %109, %107, %102, %97, %85, %65, %62, %51, %49, %46, %42
+  %112 = phi i16 [ %34, %62 ], [ %34, %65 ], [ %34, %70 ], [ 0, %79 ], [ 0, %76 ], [ %34, %85 ], [ %34, %97 ], [ %34, %102 ], [ %34, %107 ], [ %34, %109 ], [ %34, %41 ], [ %34, %51 ], [ %34, %49 ], [ %34, %46 ], [ %34, %42 ], [ %36, %87 ], [ %34, %96 ], [ %34, %69 ], [ %34, %96 ], [ %34, %69 ], [ 0, %72 ], [ %34, %89 ]
+  %113 = phi i16 [ %64, %62 ], [ %35, %65 ], [ %35, %70 ], [ %35, %79 ], [ %35, %76 ], [ %35, %85 ], [ %35, %97 ], [ %35, %102 ], [ %35, %107 ], [ %35, %109 ], [ %35, %41 ], [ %35, %51 ], [ %35, %49 ], [ %35, %46 ], [ %35, %42 ], [ 0, %87 ], [ %35, %96 ], [ %35, %69 ], [ %35, %96 ], [ %35, %69 ], [ %75, %72 ], [ %94, %89 ]
+  %114 = phi i16 [ %36, %62 ], [ %67, %65 ], [ %36, %70 ], [ %80, %79 ], [ %75, %76 ], [ %36, %85 ], [ %36, %97 ], [ %36, %102 ], [ %36, %107 ], [ %36, %109 ], [ %36, %41 ], [ %36, %51 ], [ %36, %49 ], [ %36, %46 ], [ %36, %42 ], [ 0, %87 ], [ %36, %96 ], [ %36, %69 ], [ %36, %96 ], [ %36, %69 ], [ %36, %72 ], [ %95, %89 ]
+  %115 = phi i16 [ %37, %62 ], [ %68, %65 ], [ %37, %70 ], [ %81, %79 ], [ %77, %76 ], [ %86, %85 ], [ %101, %97 ], [ %106, %102 ], [ %108, %107 ], [ %110, %109 ], [ %37, %41 ], [ %52, %51 ], [ %50, %49 ], [ %48, %46 ], [ %43, %42 ], [ 0, %87 ], [ %37, %96 ], [ %37, %69 ], [ %37, %96 ], [ %37, %69 ], [ %37, %72 ], [ %37, %89 ]
+  %116 = getelementptr inbounds i8, ptr %39, i16 1
+  %117 = load i8, ptr %39, align 1
+  %118 = icmp eq i8 %117, 0
+  br i1 %118, label %119, label %33
+
+119:                                              ; preds = %69, %96, %111
+  %120 = phi i16 [ %112, %111 ], [ %34, %96 ], [ %34, %69 ]
+  %121 = phi i16 [ %113, %111 ], [ %35, %96 ], [ %35, %69 ]
+  %122 = phi i16 [ %114, %111 ], [ %36, %96 ], [ %36, %69 ]
+  %123 = phi i16 [ %115, %111 ], [ %37, %96 ], [ %37, %69 ]
+  %124 = phi i8 [ 0, %111 ], [ %38, %96 ], [ %38, %69 ]
+  %125 = phi ptr [ %116, %111 ], [ %39, %96 ], [ %39, %69 ]
+  %126 = icmp eq i16 %120, 0
+  br i1 %126, label %128, label %127
+
+127:                                              ; preds = %119
+  call addrspace(1) void @llvm.va_end(ptr nonnull %5)
+  call addrspace(1) void @llvm.va_copy(ptr nonnull %5, ptr nonnull %4)
+  call fastcc addrspace(1) void @skip_to_arg(ptr noundef %1, ptr noundef nonnull %5, i16 noundef %120)
+  br label %128
+
+128:                                              ; preds = %127, %119
+  %129 = icmp slt i16 %121, 0
+  %130 = and i16 %123, -65
+  %131 = call addrspace(1) i16 @llvm.smax.i16(i16 %121, i16 0)
+  %132 = select i1 %129, i16 %130, i16 %123
+  %133 = or i8 %124, 32
+  %134 = add i8 %133, -101
+  %135 = icmp ult i8 %134, 3
+  %136 = icmp eq i8 %133, 97
+  %137 = or i1 %136, %135
+  br i1 %137, label %138, label %603
+
+138:                                              ; preds = %128
+  %139 = va_arg ptr %5, double
+  %140 = sub i8 %133, %124
+  br i1 %136, label %141, label %225
+
+141:                                              ; preds = %138
+  %142 = or i16 %132, 6144
+  %143 = bitcast double %139 to i64
+  store i8 48, ptr %14, align 1
+  %144 = lshr i64 %143, 52
+  %145 = trunc i64 %144 to i16
+  %146 = and i16 %145, 2047
+  %147 = and i64 %143, 4503599627370495
+  %148 = and i64 %144, 2047
+  %149 = or i64 %148, %147
+  %150 = icmp eq i64 %149, 0
+  br i1 %150, label %158, label %151
+
+151:                                              ; preds = %141
+  %152 = icmp eq i16 %146, 0
+  br i1 %152, label %154, label %153
+
+153:                                              ; preds = %151
+  store i8 49, ptr %14, align 1
+  br label %154
+
+154:                                              ; preds = %151, %153
+  %155 = phi i8 [ 49, %153 ], [ 48, %151 ]
+  %156 = phi i16 [ %146, %153 ], [ 1, %151 ]
+  %157 = add nsw i16 %156, -1023
+  br label %158
+
+158:                                              ; preds = %154, %141
+  %159 = phi i8 [ %155, %154 ], [ 48, %141 ]
+  %160 = phi i16 [ %157, %154 ], [ %146, %141 ]
+  %161 = lshr i64 %143, 63
+  %162 = trunc i64 %161 to i8
+  store i8 %162, ptr %15, align 1
+  %163 = and i16 %132, 64
+  %164 = icmp eq i16 %163, 0
+  br i1 %164, label %191, label %165
+
+165:                                              ; preds = %158
+  %166 = icmp ugt i16 %131, 12
+  br i1 %166, label %191, label %167
+
+167:                                              ; preds = %165
+  %168 = shl nuw nsw i16 %131, 2
+  %169 = sub nuw nsw i16 51, %168
+  %170 = zext i16 %169 to i64
+  %171 = shl nuw nsw i64 1, %170
+  %172 = shl nuw nsw i64 2, %170
+  %173 = add nsw i64 %172, -1
+  %174 = sub nsw i64 0, %172
+  %175 = and i64 %147, %173
+  %176 = icmp ugt i64 %175, %171
+  br i1 %176, label %183, label %177
+
+177:                                              ; preds = %167
+  %178 = sub nuw nsw i16 52, %168
+  %179 = zext i16 %178 to i64
+  %180 = shl nuw nsw i64 1, %179
+  %181 = and i64 %147, %180
+  %182 = icmp eq i64 %181, 0
+  br i1 %182, label %188, label %183
+
+183:                                              ; preds = %167, %177
+  %184 = add nuw nsw i64 %147, %171
+  %185 = icmp ugt i64 %184, 4503599627370495
+  br i1 %185, label %186, label %188
+
+186:                                              ; preds = %183
+  %187 = add nuw nsw i8 %159, 1
+  store i8 %187, ptr %14, align 1
+  br label %188
+
+188:                                              ; preds = %177, %186, %183
+  %189 = phi i64 [ %184, %186 ], [ %184, %183 ], [ %147, %177 ]
+  %190 = and i64 %189, %174
+  br label %191
+
+191:                                              ; preds = %165, %158, %188
+  %192 = phi i64 [ %190, %188 ], [ %147, %158 ], [ %147, %165 ]
+  %193 = phi i16 [ %131, %188 ], [ 0, %158 ], [ 13, %165 ]
+  %194 = icmp eq i16 %160, 1024
+  br i1 %194, label %195, label %201
+
+195:                                              ; preds = %191
+  %196 = icmp eq i64 %192, 0
+  br i1 %196, label %199, label %197
+
+197:                                              ; preds = %195
+  %198 = or i8 %162, 8
+  store i8 %198, ptr %15, align 1
+  br label %254
+
+199:                                              ; preds = %195
+  %200 = or i8 %162, 4
+  store i8 %200, ptr %15, align 1
+  br label %254
+
+201:                                              ; preds = %191, %222
+  %202 = phi i64 [ %209, %222 ], [ %192, %191 ]
+  %203 = phi i8 [ %224, %222 ], [ 13, %191 ]
+  %204 = phi i16 [ %223, %222 ], [ %193, %191 ]
+  %205 = icmp eq i8 %203, 0
+  br i1 %205, label %254, label %206
+
+206:                                              ; preds = %201
+  %207 = trunc i64 %202 to i8
+  %208 = and i8 %207, 15
+  %209 = lshr i64 %202, 4
+  %210 = icmp eq i8 %208, 0
+  %211 = zext i8 %203 to i16
+  %212 = icmp slt i16 %204, %211
+  %213 = select i1 %210, i1 %212, i1 false
+  br i1 %213, label %222, label %214
+
+214:                                              ; preds = %206
+  %215 = icmp ult i8 %208, 10
+  %216 = or i8 %208, 48
+  %217 = sub i8 %208, %140
+  %218 = add i8 %217, 87
+  %219 = select i1 %215, i8 %216, i8 %218
+  %220 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %211
+  store i8 %219, ptr %220, align 1
+  %221 = call addrspace(1) i16 @llvm.smax.i16(i16 %204, i16 %211)
+  br label %222
+
+222:                                              ; preds = %206, %214
+  %223 = phi i16 [ %221, %214 ], [ %204, %206 ]
+  %224 = add nsw i8 %203, -1
+  br label %201
+
+225:                                              ; preds = %138
+  %226 = and i16 %132, 64
+  %227 = icmp eq i16 %226, 0
+  %228 = select i1 %227, i16 6, i16 %131
+  switch i8 %133, label %235 [
+    i8 101, label %229
+    i8 102, label %233
+  ]
+
+229:                                              ; preds = %225
+  %230 = trunc i16 %228 to i8
+  %231 = add i8 %230, 1
+  %232 = or i16 %132, 4096
+  br label %241
+
+233:                                              ; preds = %225
+  %234 = or i16 %132, 8192
+  br label %241
+
+235:                                              ; preds = %225
+  %236 = add nsw i8 %133, -2
+  %237 = trunc i16 %228 to i8
+  %238 = and i16 %228, 255
+  %239 = icmp eq i16 %238, 0
+  %240 = select i1 %239, i8 1, i8 %237
+  br label %241
+
+241:                                              ; preds = %233, %235, %229
+  %242 = phi i8 [ %231, %229 ], [ 17, %233 ], [ %240, %235 ]
+  %243 = phi i16 [ 0, %229 ], [ %228, %233 ], [ 0, %235 ]
+  %244 = phi i1 [ false, %229 ], [ true, %233 ], [ false, %235 ]
+  %245 = phi i16 [ %232, %229 ], [ %234, %233 ], [ %132, %235 ]
+  %246 = phi i8 [ 101, %229 ], [ 102, %233 ], [ %236, %235 ]
+  %247 = call addrspace(1) i8 @llvm.umin.i8(i8 %242, i8 17)
+  %248 = zext i8 %247 to i16
+  %249 = call addrspace(1) i16 @__dtoa_engine(double noundef %139, ptr noundef nonnull %6, i16 noundef %248, i1 noundef zeroext %244, i16 noundef %243)
+  %250 = trunc i16 %249 to i8
+  %251 = load i32, ptr %6, align 1
+  %252 = trunc i32 %251 to i16
+  %253 = load i8, ptr %15, align 1
+  br label %254
+
+254:                                              ; preds = %201, %199, %197, %241
+  %255 = phi i8 [ %253, %241 ], [ %198, %197 ], [ %200, %199 ], [ %162, %201 ]
+  %256 = phi i8 [ 2, %241 ], [ 1, %197 ], [ 1, %199 ], [ 1, %201 ]
+  %257 = phi i16 [ %252, %241 ], [ 1024, %197 ], [ 1024, %199 ], [ %160, %201 ]
+  %258 = phi i8 [ %250, %241 ], [ 14, %197 ], [ 14, %199 ], [ 14, %201 ]
+  %259 = phi i16 [ %228, %241 ], [ %193, %197 ], [ %193, %199 ], [ %204, %201 ]
+  %260 = phi i16 [ %245, %241 ], [ %142, %197 ], [ %142, %199 ], [ %142, %201 ]
+  %261 = phi i8 [ %246, %241 ], [ 112, %197 ], [ 112, %199 ], [ 112, %201 ]
+  %262 = add i16 %257, -10
+  %263 = icmp ult i16 %262, -19
+  %264 = select i1 %263, i8 2, i8 %256
+  %265 = add i16 %257, -100
+  %266 = icmp ult i16 %265, -199
+  %267 = select i1 %266, i8 3, i8 %264
+  %268 = add i16 %257, -1000
+  %269 = icmp ult i16 %268, -1999
+  %270 = zext i8 %267 to i16
+  %271 = and i8 %255, 1
+  %272 = icmp eq i8 %271, 0
+  br i1 %272, label %273, label %281
+
+273:                                              ; preds = %254
+  %274 = and i16 %260, 2
+  %275 = icmp eq i16 %274, 0
+  br i1 %275, label %276, label %281
+
+276:                                              ; preds = %273
+  %277 = and i16 %260, 4
+  %278 = icmp eq i16 %277, 0
+  %279 = trunc i16 %277 to i8
+  %280 = shl nuw nsw i8 %279, 3
+  br label %281
+
+281:                                              ; preds = %276, %273, %254
+  %282 = phi i1 [ false, %254 ], [ false, %273 ], [ %278, %276 ]
+  %283 = phi i8 [ 45, %254 ], [ 43, %273 ], [ %280, %276 ]
+  %284 = and i8 %255, 12
+  %285 = icmp eq i8 %284, 0
+  br i1 %285, label %326, label %286
+
+286:                                              ; preds = %281
+  %287 = select i1 %282, i16 3, i16 4
+  %288 = icmp sgt i16 %122, %287
+  br i1 %288, label %289, label %302
+
+289:                                              ; preds = %286
+  %290 = sub nuw nsw i16 %122, %287
+  %291 = and i16 %260, 8
+  %292 = icmp eq i16 %291, 0
+  br i1 %292, label %293, label %302
+
+293:                                              ; preds = %289, %298
+  %294 = phi i16 [ %299, %298 ], [ %17, %289 ]
+  %295 = phi i16 [ %300, %298 ], [ %290, %289 ]
+  %296 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+  %297 = icmp slt i16 %296, 0
+  br i1 %297, label %697, label %298
+
+298:                                              ; preds = %293
+  %299 = add nsw i16 %294, 1
+  %300 = add nsw i16 %295, -1
+  %301 = icmp eq i16 %300, 0
+  br i1 %301, label %302, label %293
+
+302:                                              ; preds = %298, %286, %289
+  %303 = phi i16 [ %17, %289 ], [ %17, %286 ], [ %299, %298 ]
+  %304 = phi i16 [ %290, %289 ], [ 0, %286 ], [ 0, %298 ]
+  br i1 %282, label %309, label %305
+
+305:                                              ; preds = %302
+  %306 = add nsw i16 %303, 1
+  %307 = call addrspace(1) i16 %8(i8 noundef signext %283, ptr noundef %0)
+  %308 = icmp slt i16 %307, 0
+  br i1 %308, label %697, label %309
+
+309:                                              ; preds = %305, %302
+  %310 = phi i16 [ %306, %305 ], [ %303, %302 ]
+  %311 = load i8, ptr %15, align 1
+  %312 = and i8 %311, 8
+  %313 = icmp eq i8 %312, 0
+  %314 = select i1 %313, ptr @.str, ptr @.str.1
+  br label %315
+
+315:                                              ; preds = %320, %309
+  %316 = phi i16 [ %310, %309 ], [ %322, %320 ]
+  %317 = phi ptr [ %314, %309 ], [ %321, %320 ]
+  %318 = load i8, ptr %317, align 1
+  %319 = icmp eq i8 %318, 0
+  br i1 %319, label %685, label %320
+
+320:                                              ; preds = %315
+  %321 = getelementptr inbounds i8, ptr %317, i16 1
+  %322 = add nsw i16 %316, 1
+  %323 = sub i8 %318, %140
+  %324 = call addrspace(1) i16 %8(i8 noundef signext %323, ptr noundef %0)
+  %325 = icmp slt i16 %324, 0
+  br i1 %325, label %697, label %315
+
+326:                                              ; preds = %281
+  %327 = and i16 %260, 12288
+  %328 = icmp eq i16 %327, 0
+  br i1 %328, label %329, label %357
+
+329:                                              ; preds = %326
+  %330 = call addrspace(1) i16 @llvm.umax.i16(i16 %259, i16 1)
+  br label %331
+
+331:                                              ; preds = %340, %329
+  %332 = phi i8 [ %258, %329 ], [ %341, %340 ]
+  %333 = zext i8 %332 to i16
+  %334 = icmp eq i8 %332, 0
+  br i1 %334, label %342, label %335
+
+335:                                              ; preds = %331
+  %336 = add nsw i16 %333, -1
+  %337 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %336
+  %338 = load i8, ptr %337, align 1
+  %339 = icmp eq i8 %338, 48
+  br i1 %339, label %340, label %342
+
+340:                                              ; preds = %335
+  %341 = add i8 %332, -1
+  br label %331
+
+342:                                              ; preds = %331, %335
+  %343 = and i16 %260, 16
+  %344 = icmp eq i16 %343, 0
+  %345 = select i1 %344, i16 %333, i16 %330
+  %346 = icmp sgt i16 %257, -5
+  %347 = icmp slt i16 %257, %330
+  %348 = select i1 %346, i1 %347, i1 false
+  br i1 %348, label %349, label %355
+
+349:                                              ; preds = %342
+  %350 = or i16 %260, 8192
+  %351 = icmp slt i16 %257, %345
+  br i1 %351, label %352, label %357
+
+352:                                              ; preds = %349
+  %353 = xor i16 %257, -1
+  %354 = add i16 %345, %353
+  br label %357
+
+355:                                              ; preds = %342
+  %356 = add nsw i16 %345, -1
+  br label %357
+
+357:                                              ; preds = %355, %352, %349, %326
+  %358 = phi i8 [ %258, %326 ], [ %332, %349 ], [ %332, %352 ], [ %332, %355 ]
+  %359 = phi i16 [ %259, %326 ], [ 0, %349 ], [ %354, %352 ], [ %356, %355 ]
+  %360 = phi i16 [ %260, %326 ], [ %350, %349 ], [ %350, %352 ], [ %260, %355 ]
+  %361 = and i16 %360, 8192
+  %362 = icmp eq i16 %361, 0
+  br i1 %362, label %367, label %363
+
+363:                                              ; preds = %357
+  %364 = add nsw i16 %257, 1
+  %365 = icmp slt i16 %257, 1
+  %366 = select i1 %365, i16 1, i16 %364
+  br label %373
+
+367:                                              ; preds = %357
+  %368 = and i16 %360, 2048
+  %369 = icmp eq i16 %368, 0
+  %370 = select i1 %369, i16 3, i16 5
+  %371 = select i1 %269, i16 4, i16 %270
+  %372 = add nuw nsw i16 %370, %371
+  br label %373
+
+373:                                              ; preds = %367, %363
+  %374 = phi i16 [ %366, %363 ], [ %372, %367 ]
+  %375 = xor i1 %282, true
+  %376 = zext i1 %375 to i16
+  %377 = icmp eq i16 %359, 0
+  %378 = add nsw i16 %359, 1
+  %379 = lshr i16 %360, 4
+  %380 = and i16 %379, 1
+  %381 = select i1 %377, i16 %380, i16 %378
+  %382 = add i16 %381, %376
+  %383 = add i16 %382, %374
+  %384 = icmp sgt i16 %122, %383
+  %385 = sub nsw i16 %122, %383
+  %386 = select i1 %384, i16 %385, i16 0
+  %387 = and i16 %360, 9
+  %388 = icmp eq i16 %387, 0
+  %389 = icmp ne i16 %386, 0
+  %390 = select i1 %388, i1 %389, i1 false
+  br i1 %390, label %391, label %400
+
+391:                                              ; preds = %373, %396
+  %392 = phi i16 [ %397, %396 ], [ %17, %373 ]
+  %393 = phi i16 [ %398, %396 ], [ %385, %373 ]
+  %394 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+  %395 = icmp slt i16 %394, 0
+  br i1 %395, label %697, label %396
+
+396:                                              ; preds = %391
+  %397 = add nsw i16 %392, 1
+  %398 = add nsw i16 %393, -1
+  %399 = icmp eq i16 %398, 0
+  br i1 %399, label %400, label %391
+
+400:                                              ; preds = %396, %373
+  %401 = phi i16 [ %17, %373 ], [ %397, %396 ]
+  %402 = phi i16 [ %386, %373 ], [ 0, %396 ]
+  br i1 %282, label %407, label %403
+
+403:                                              ; preds = %400
+  %404 = add nsw i16 %401, 1
+  %405 = call addrspace(1) i16 %8(i8 noundef signext %283, ptr noundef %0)
+  %406 = icmp slt i16 %405, 0
+  br i1 %406, label %697, label %407
+
+407:                                              ; preds = %403, %400
+  %408 = phi i16 [ %404, %403 ], [ %401, %400 ]
+  %409 = and i16 %360, 2048
+  %410 = icmp eq i16 %409, 0
+  br i1 %410, label %419, label %411
+
+411:                                              ; preds = %407
+  %412 = call addrspace(1) i16 %8(i8 noundef signext 48, ptr noundef %0)
+  %413 = icmp slt i16 %412, 0
+  br i1 %413, label %697, label %414
+
+414:                                              ; preds = %411
+  %415 = add nsw i16 %408, 2
+  %416 = sub i8 120, %140
+  %417 = call addrspace(1) i16 %8(i8 noundef signext %416, ptr noundef %0)
+  %418 = icmp slt i16 %417, 0
+  br i1 %418, label %697, label %419
+
+419:                                              ; preds = %414, %407
+  %420 = phi i16 [ %415, %414 ], [ %408, %407 ]
+  %421 = and i16 %360, 8
+  %422 = icmp eq i16 %421, 0
+  %423 = icmp ne i16 %402, 0
+  %424 = select i1 %422, i1 %423, i1 false
+  br i1 %424, label %425, label %434
+
+425:                                              ; preds = %419
+  %426 = add i16 %402, %420
+  br label %427
+
+427:                                              ; preds = %425, %431
+  %428 = phi i16 [ %432, %431 ], [ %402, %425 ]
+  %429 = call addrspace(1) i16 %8(i8 noundef signext 48, ptr noundef %0)
+  %430 = icmp slt i16 %429, 0
+  br i1 %430, label %697, label %431
+
+431:                                              ; preds = %427
+  %432 = add nsw i16 %428, -1
+  %433 = icmp eq i16 %432, 0
+  br i1 %433, label %434, label %427
+
+434:                                              ; preds = %431, %419
+  %435 = phi i16 [ %420, %419 ], [ %426, %431 ]
+  %436 = phi i16 [ %402, %419 ], [ 0, %431 ]
+  br i1 %362, label %492, label %437
+
+437:                                              ; preds = %434
+  %438 = call addrspace(1) i16 @llvm.smax.i16(i16 %257, i16 0)
+  %439 = zext i8 %358 to i16
+  %440 = sub nsw i16 0, %359
+  br label %441
+
+441:                                              ; preds = %462, %437
+  %442 = phi i16 [ %438, %437 ], [ %460, %462 ]
+  %443 = phi i16 [ %435, %437 ], [ %463, %462 ]
+  %444 = icmp eq i16 %442, -1
+  br i1 %444, label %445, label %449
+
+445:                                              ; preds = %441
+  %446 = add nsw i16 %443, 1
+  %447 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+  %448 = icmp slt i16 %447, 0
+  br i1 %448, label %697, label %449
+
+449:                                              ; preds = %445, %441
+  %450 = phi i16 [ %446, %445 ], [ %443, %441 ]
+  %451 = sub nsw i16 %257, %442
+  %452 = icmp sgt i16 %451, -1
+  %453 = icmp slt i16 %451, %439
+  %454 = select i1 %452, i1 %453, i1 false
+  br i1 %454, label %455, label %458
+
+455:                                              ; preds = %449
+  %456 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %451
+  %457 = load i8, ptr %456, align 1
+  br label %458
+
+458:                                              ; preds = %449, %455
+  %459 = phi i8 [ %457, %455 ], [ 48, %449 ]
+  %460 = add nsw i16 %442, -1
+  %461 = icmp sgt i16 %442, %440
+  br i1 %461, label %462, label %466
+
+462:                                              ; preds = %458
+  %463 = add nsw i16 %450, 1
+  %464 = call addrspace(1) i16 %8(i8 noundef signext %459, ptr noundef %0)
+  %465 = icmp slt i16 %464, 0
+  br i1 %465, label %697, label %441
+
+466:                                              ; preds = %458
+  %467 = icmp eq i16 %460, %257
+  br i1 %467, label %468, label %478
+
+468:                                              ; preds = %466
+  %469 = load i8, ptr %14, align 1
+  %470 = icmp sgt i8 %469, 53
+  br i1 %470, label %477, label %471
+
+471:                                              ; preds = %468
+  %472 = icmp eq i8 %469, 53
+  br i1 %472, label %473, label %478
+
+473:                                              ; preds = %471
+  %474 = load i8, ptr %15, align 1
+  %475 = and i8 %474, 16
+  %476 = icmp eq i8 %475, 0
+  br i1 %476, label %477, label %478
+
+477:                                              ; preds = %473, %468
+  br label %478
+
+478:                                              ; preds = %466, %471, %473, %477
+  %479 = phi i8 [ 49, %477 ], [ %459, %473 ], [ %459, %471 ], [ %459, %466 ]
+  %480 = call addrspace(1) i16 %8(i8 noundef signext %479, ptr noundef %0)
+  %481 = icmp slt i16 %480, 0
+  br i1 %481, label %697, label %482
+
+482:                                              ; preds = %478
+  %483 = add nsw i16 %450, 1
+  %484 = and i16 %360, 16
+  %485 = icmp ne i16 %484, 0
+  %486 = icmp eq i16 %442, 0
+  %487 = and i1 %485, %486
+  br i1 %487, label %488, label %685
+
+488:                                              ; preds = %482
+  %489 = add nsw i16 %450, 2
+  %490 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+  %491 = icmp slt i16 %490, 0
+  br i1 %491, label %697, label %685
+
+492:                                              ; preds = %434
+  %493 = load i8, ptr %14, align 1
+  %494 = icmp eq i8 %493, 49
+  br i1 %494, label %498, label %495
+
+495:                                              ; preds = %492
+  %496 = load i8, ptr %15, align 1
+  %497 = and i8 %496, -17
+  store i8 %497, ptr %15, align 1
+  br label %498
+
+498:                                              ; preds = %492, %495
+  %499 = add nsw i16 %435, 1
+  %500 = call addrspace(1) i16 %8(i8 noundef signext %493, ptr noundef %0)
+  %501 = icmp slt i16 %500, 0
+  br i1 %501, label %697, label %502
+
+502:                                              ; preds = %498
+  %503 = icmp sgt i16 %359, 0
+  br i1 %503, label %504, label %525
+
+504:                                              ; preds = %502
+  %505 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+  %506 = icmp slt i16 %505, 0
+  br i1 %506, label %697, label %507
+
+507:                                              ; preds = %504
+  %508 = add nsw i16 %435, 2
+  br label %509
+
+509:                                              ; preds = %507, %520
+  %510 = phi i16 [ %515, %520 ], [ %508, %507 ]
+  %511 = phi i8 [ %524, %520 ], [ 1, %507 ]
+  %512 = zext i8 %511 to i16
+  %513 = icmp slt i16 %359, %512
+  br i1 %513, label %532, label %514
+
+514:                                              ; preds = %509
+  %515 = add nsw i16 %510, 1
+  %516 = icmp ult i8 %511, %358
+  br i1 %516, label %517, label %520
+
+517:                                              ; preds = %514
+  %518 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %512
+  %519 = load i8, ptr %518, align 1
+  br label %520
+
+520:                                              ; preds = %514, %517
+  %521 = phi i8 [ %519, %517 ], [ 48, %514 ]
+  %522 = call addrspace(1) i16 %8(i8 noundef signext %521, ptr noundef %0)
+  %523 = icmp slt i16 %522, 0
+  %524 = add i8 %511, 1
+  br i1 %523, label %697, label %509
+
+525:                                              ; preds = %502
+  %526 = and i16 %360, 16
+  %527 = icmp eq i16 %526, 0
+  br i1 %527, label %532, label %528
+
+528:                                              ; preds = %525
+  %529 = add nsw i16 %435, 2
+  %530 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+  %531 = icmp slt i16 %530, 0
+  br i1 %531, label %697, label %532
+
+532:                                              ; preds = %509, %528, %525
+  %533 = phi i16 [ %529, %528 ], [ %499, %525 ], [ %510, %509 ]
+  %534 = sub i8 %261, %140
+  %535 = call addrspace(1) i16 %8(i8 noundef signext %534, ptr noundef %0)
+  %536 = icmp slt i16 %535, 0
+  br i1 %536, label %697, label %537
+
+537:                                              ; preds = %532
+  %538 = icmp slt i16 %257, 0
+  br i1 %538, label %545, label %539
+
+539:                                              ; preds = %537
+  %540 = icmp eq i16 %257, 0
+  br i1 %540, label %541, label %547
+
+541:                                              ; preds = %539
+  %542 = load i8, ptr %15, align 1
+  %543 = and i8 %542, 16
+  %544 = icmp eq i8 %543, 0
+  br i1 %544, label %547, label %545
+
+545:                                              ; preds = %541, %537
+  %546 = sub nsw i16 0, %257
+  br label %547
+
+547:                                              ; preds = %539, %541, %545
+  %548 = phi i16 [ %546, %545 ], [ 0, %541 ], [ %257, %539 ]
+  %549 = phi i8 [ 45, %545 ], [ 43, %541 ], [ 43, %539 ]
+  %550 = add nsw i16 %533, 2
+  %551 = call addrspace(1) i16 %8(i8 noundef signext %549, ptr noundef %0)
+  %552 = icmp slt i16 %551, 0
+  br i1 %552, label %697, label %553
+
+553:                                              ; preds = %547
+  br i1 %269, label %554, label %565
+
+554:                                              ; preds = %553
+  %555 = freeze i16 %548
+  %556 = udiv i16 %555, 1000
+  %557 = trunc i16 %556 to i8
+  %558 = add nuw nsw i8 %557, 48
+  %559 = call addrspace(1) i16 %8(i8 noundef signext %558, ptr noundef %0)
+  %560 = icmp slt i16 %559, 0
+  br i1 %560, label %697, label %561
+
+561:                                              ; preds = %554
+  %562 = add nsw i16 %533, 3
+  %563 = mul i16 %556, 1000
+  %564 = sub i16 %555, %563
+  br label %566
+
+565:                                              ; preds = %553
+  br i1 %266, label %566, label %579
+
+566:                                              ; preds = %561, %565
+  %567 = phi i16 [ %562, %561 ], [ %550, %565 ]
+  %568 = phi i16 [ %564, %561 ], [ %548, %565 ]
+  %569 = freeze i16 %568
+  %570 = udiv i16 %569, 100
+  %571 = trunc i16 %570 to i8
+  %572 = add i8 %571, 48
+  %573 = call addrspace(1) i16 %8(i8 noundef signext %572, ptr noundef %0)
+  %574 = icmp slt i16 %573, 0
+  br i1 %574, label %697, label %575
+
+575:                                              ; preds = %566
+  %576 = add nsw i16 %567, 1
+  %577 = mul i16 %570, 100
+  %578 = sub i16 %569, %577
+  br label %582
+
+579:                                              ; preds = %565
+  %580 = icmp ugt i8 %267, 1
+  %581 = trunc i16 %548 to i8
+  br i1 %580, label %582, label %596
+
+582:                                              ; preds = %575, %579
+  %583 = phi i16 [ %576, %575 ], [ %550, %579 ]
+  %584 = phi i16 [ %578, %575 ], [ %548, %579 ]
+  %585 = freeze i16 %584
+  %586 = udiv i16 %585, 10
+  %587 = trunc i16 %586 to i8
+  %588 = add i8 %587, 48
+  %589 = call addrspace(1) i16 %8(i8 noundef signext %588, ptr noundef %0)
+  %590 = icmp slt i16 %589, 0
+  br i1 %590, label %697, label %591
+
+591:                                              ; preds = %582
+  %592 = add nsw i16 %583, 1
+  %593 = mul i16 %586, 10
+  %594 = sub i16 %585, %593
+  %595 = trunc i16 %594 to i8
+  br label %596
+
+596:                                              ; preds = %579, %591
+  %597 = phi i8 [ %595, %591 ], [ %581, %579 ]
+  %598 = phi i16 [ %592, %591 ], [ %550, %579 ]
+  %599 = add nsw i16 %598, 1
+  %600 = add i8 %597, 48
+  %601 = call addrspace(1) i16 %8(i8 noundef signext %600, ptr noundef %0)
+  %602 = icmp slt i16 %601, 0
+  br i1 %602, label %697, label %685
+
+603:                                              ; preds = %128
+  switch i8 %124, label %663 [
+    i8 99, label %604
+    i8 115, label %607
+    i8 100, label %647
+    i8 105, label %647
+    i8 117, label %659
+    i8 111, label %672
+    i8 112, label %661
+  ]
+
+604:                                              ; preds = %603
+  %605 = va_arg ptr %5, i16
+  %606 = trunc i16 %605 to i8
+  store i8 %606, ptr %6, align 1
+  br label %615
+
+607:                                              ; preds = %603
+  %608 = va_arg ptr %5, ptr
+  %609 = icmp eq ptr %608, null
+  %610 = select i1 %609, ptr @.str.2, ptr %608
+  %611 = and i16 %132, 64
+  %612 = icmp eq i16 %611, 0
+  %613 = select i1 %612, i16 -1, i16 %131
+  %614 = call addrspace(1) i16 @strnlen(ptr noundef nonnull %610, i16 noundef %613)
+  br label %615
+
+615:                                              ; preds = %607, %604
+  %616 = phi i16 [ 1, %604 ], [ %614, %607 ]
+  %617 = phi ptr [ %6, %604 ], [ %610, %607 ]
+  %618 = and i16 %132, 8
+  %619 = icmp eq i16 %618, 0
+  br i1 %619, label %620, label %632
+
+620:                                              ; preds = %615
+  %621 = call addrspace(1) i16 @llvm.umin.i16(i16 %122, i16 %616)
+  br label %622
+
+622:                                              ; preds = %620, %629
+  %623 = phi i16 [ %630, %629 ], [ %17, %620 ]
+  %624 = phi i16 [ %631, %629 ], [ %122, %620 ]
+  %625 = icmp ugt i16 %624, %616
+  br i1 %625, label %626, label %632
+
+626:                                              ; preds = %622
+  %627 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+  %628 = icmp slt i16 %627, 0
+  br i1 %628, label %697, label %629
+
+629:                                              ; preds = %626
+  %630 = add nsw i16 %623, 1
+  %631 = add nsw i16 %624, -1
+  br label %622
+
+632:                                              ; preds = %622, %615
+  %633 = phi i16 [ %17, %615 ], [ %623, %622 ]
+  %634 = phi i16 [ %122, %615 ], [ %621, %622 ]
+  %635 = sub i16 %634, %616
+  %636 = add i16 %633, %616
+  br label %637
+
+637:                                              ; preds = %641, %632
+  %638 = phi i16 [ %616, %632 ], [ %642, %641 ]
+  %639 = phi ptr [ %617, %632 ], [ %643, %641 ]
+  %640 = icmp eq i16 %638, 0
+  br i1 %640, label %685, label %641
+
+641:                                              ; preds = %637
+  %642 = add i16 %638, -1
+  %643 = getelementptr inbounds i8, ptr %639, i16 1
+  %644 = load i8, ptr %639, align 1
+  %645 = call addrspace(1) i16 %8(i8 noundef signext %644, ptr noundef %0)
+  %646 = icmp slt i16 %645, 0
+  br i1 %646, label %697, label %637
+
+647:                                              ; preds = %603, %603
+  %648 = and i16 %132, 128
+  %649 = icmp eq i16 %648, 0
+  br i1 %649, label %657, label %650
+
+650:                                              ; preds = %647
+  %651 = and i16 %132, 512
+  %652 = icmp eq i16 %651, 0
+  br i1 %652, label %655, label %653
+
+653:                                              ; preds = %650
+  %654 = va_arg ptr %5, i64
+  br label %685
+
+655:                                              ; preds = %650
+  %656 = va_arg ptr %5, i32
+  br label %685
+
+657:                                              ; preds = %647
+  %658 = va_arg ptr %5, i16
+  br label %685
+
+659:                                              ; preds = %603
+  %660 = and i16 %132, -17
+  br label %672
+
+661:                                              ; preds = %603
+  %662 = or i16 %132, 16
+  br label %672
+
+663:                                              ; preds = %603
+  %664 = icmp eq i8 %133, 120
+  br i1 %664, label %672, label %665
+
+665:                                              ; preds = %663
+  %666 = call addrspace(1) i16 %8(i8 noundef signext 37, ptr noundef %0)
+  %667 = icmp slt i16 %666, 0
+  br i1 %667, label %697, label %668
+
+668:                                              ; preds = %665
+  %669 = add nsw i16 %17, 2
+  %670 = call addrspace(1) i16 %8(i8 noundef signext %124, ptr noundef %0)
+  %671 = icmp slt i16 %670, 0
+  br i1 %671, label %697, label %30
+
+672:                                              ; preds = %603, %663, %661, %659
+  %673 = phi i16 [ %660, %659 ], [ %662, %661 ], [ %132, %663 ], [ %132, %603 ]
+  %674 = and i16 %673, 128
+  %675 = icmp eq i16 %674, 0
+  br i1 %675, label %683, label %676
+
+676:                                              ; preds = %672
+  %677 = and i16 %673, 512
+  %678 = icmp eq i16 %677, 0
+  br i1 %678, label %681, label %679
+
+679:                                              ; preds = %676
+  %680 = va_arg ptr %5, i64
+  br label %685
+
+681:                                              ; preds = %676
+  %682 = va_arg ptr %5, i32
+  br label %685
+
+683:                                              ; preds = %672
+  %684 = va_arg ptr %5, i16
+  br label %685
+
+685:                                              ; preds = %637, %315, %683, %657, %681, %679, %655, %653, %488, %482, %596
+  %686 = phi i16 [ %17, %683 ], [ %17, %657 ], [ %17, %681 ], [ %17, %679 ], [ %17, %655 ], [ %17, %653 ], [ %483, %482 ], [ %489, %488 ], [ %599, %596 ], [ %316, %315 ], [ %636, %637 ]
+  %687 = phi i16 [ %122, %683 ], [ %122, %657 ], [ %122, %681 ], [ %122, %679 ], [ %122, %655 ], [ %122, %653 ], [ %436, %482 ], [ %436, %488 ], [ %436, %596 ], [ %304, %315 ], [ %635, %637 ]
+  br label %688
+
+688:                                              ; preds = %685, %692
+  %689 = phi i16 [ %694, %692 ], [ %686, %685 ]
+  %690 = phi i16 [ %693, %692 ], [ %687, %685 ]
+  %691 = icmp sgt i16 %690, 0
+  br i1 %691, label %692, label %30
+
+692:                                              ; preds = %688
+  %693 = add nsw i16 %690, -1
+  %694 = add nsw i16 %689, 1
+  %695 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+  %696 = icmp slt i16 %695, 0
+  br i1 %696, label %697, label %688
+
+697:                                              ; preds = %668, %665, %532, %488, %478, %411, %596, %582, %566, %554, %547, %528, %504, %498, %414, %403, %305, %25, %16, %82, %626, %641, %293, %320, %391, %427, %462, %445, %520, %692
+  %698 = phi i16 [ -1, %692 ], [ -1, %520 ], [ -1, %445 ], [ -1, %462 ], [ -1, %427 ], [ -1, %391 ], [ -1, %320 ], [ -1, %293 ], [ -1, %641 ], [ -1, %626 ], [ %17, %82 ], [ -1, %668 ], [ -1, %665 ], [ -1, %532 ], [ -1, %488 ], [ -1, %478 ], [ -1, %411 ], [ -1, %596 ], [ -1, %582 ], [ -1, %566 ], [ -1, %554 ], [ -1, %547 ], [ -1, %528 ], [ -1, %504 ], [ -1, %498 ], [ -1, %414 ], [ -1, %403 ], [ -1, %305 ], [ -1, %25 ], [ %17, %16 ]
+  call addrspace(1) void @llvm.va_end(ptr nonnull %5)
+  br label %699
+
+699:                                              ; preds = %3, %697
+  %700 = phi i16 [ %698, %697 ], [ -1, %3 ]
+  call addrspace(1) void @llvm.lifetime.end.p0(i64 23, ptr nonnull %6)
+  call addrspace(1) void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5)
+  ret i16 %700
+}
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) addrspace(1)
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
+declare void @llvm.va_copy(ptr, ptr) addrspace(1)
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
+declare void @llvm.va_end(ptr) addrspace(1)
+
+; Function Attrs: minsize nofree norecurse nosync nounwind optsize memory(read, argmem: readwrite, inaccessiblemem: none)
+define internal fastcc void @skip_to_arg(ptr nocapture noundef readonly %0, ptr nocapture noundef %1, i16 noundef %2) unnamed_addr addrspace(1) {
+; AVR51-LABEL: skip_to_arg:
+; AVR51:       ; %bb.0:
+; AVR51-NEXT:    push r4
+; AVR51-NEXT:    push r5
+; AVR51-NEXT:    push r6
+; AVR51-NEXT:    push r7
+; AVR51-NEXT:    push r8
+; AVR51-NEXT:    push r9
+; AVR51-NEXT:    push r10
+; AVR51-NEXT:    push r11
+; AVR51-NEXT:    push r12
+; AVR51-NEXT:    push r13
+; AVR51-NEXT:    push r14
+; AVR51-NEXT:    push r15
+; AVR51-NEXT:    push r16
+; AVR51-NEXT:    push r17
+; AVR51-NEXT:    movw r10, r22
+; AVR51-NEXT:    movw r14, r24
+; AVR51-NEXT:    ldi r24, 1
+; AVR51-NEXT:    ldi r25, 0
+; AVR51-NEXT:    movw r4, r24
+; AVR51-NEXT:    ldi r18, 0
+; AVR51-NEXT:    ldi r19, 0
+; AVR51-NEXT:    movw r6, r18
+; AVR51-NEXT:    ldi r26, 10
+; AVR51-NEXT:  .LBB1_1: ; =>This Loop Header: Depth=1
+; AVR51-NEXT:    ; Child Loop BB1_2 Depth 2
+; AVR51-NEXT:    ; Child Loop BB1_4 Depth 3
+; AVR51-NEXT:    ; Child Loop BB1_11 Depth 3
+; AVR51-NEXT:    movw r30, r14
+; AVR51-NEXT:    movw r24, r4
+; AVR51-NEXT:  .LBB1_2: ; Parent Loop BB1_1 Depth=1
+; AVR51-NEXT:    ; => This Loop Header: Depth=2
+; AVR51-NEXT:    ; Child Loop BB1_4 Depth 3
+; AVR51-NEXT:    ; Child Loop BB1_11 Depth 3
+; AVR51-NEXT:    cp r24, r20
+; AVR51-NEXT:    cpc r25, r21
+; AVR51-NEXT:    brlt .LBB1_4
+; AVR51-NEXT:    rjmp .LBB1_62
+; AVR51-NEXT:  .LBB1_3: ; in Loop: Header=BB1_4 Depth=3
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ldd r27, Z+1
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    cpi r27, 37
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    brne .LBB1_6
+; AVR51-NEXT:  .LBB1_4: ; Parent Loop BB1_1 Depth=1
+; AVR51-NEXT:    ; Parent Loop BB1_2 Depth=2
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=3
+; AVR51-NEXT:    movw r24, r30
+; AVR51-NEXT:    ld r18, Z+
+; AVR51-NEXT:    cpi r18, 37
+; AVR51-NEXT:    breq .LBB1_3
+; AVR51-NEXT:  ; %bb.5: ; in Loop: Header=BB1_4 Depth=3
+; AVR51-NEXT:    cpi r18, 0
+; AVR51-NEXT:    brne .LBB1_4
+; AVR51-NEXT:    rjmp .LBB1_62
+; AVR51-NEXT:  .LBB1_6: ; %.preheader
+; AVR51-NEXT:    ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT:    movw r16, r6
+; AVR51-NEXT:    movw r8, r16
+; AVR51-NEXT:    movw r12, r16
+; AVR51-NEXT:    rjmp .LBB1_11
+; AVR51-NEXT:  .LBB1_7: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 106
+; AVR51-NEXT:    breq .LBB1_8
+; AVR51-NEXT:    rjmp .LBB1_45
+; AVR51-NEXT:  .LBB1_8: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    ori r16, 128
+; AVR51-NEXT:    ori r17, 2
+; AVR51-NEXT:  .LBB1_9: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    movw r8, r18
+; AVR51-NEXT:  .LBB1_10: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    ld r27, Z+
+; AVR51-NEXT:    cpi r27, 0
+; AVR51-NEXT:    mov r18, r1
+; AVR51-NEXT:    brne .LBB1_11
+; AVR51-NEXT:    rjmp .LBB1_46
+; AVR51-NEXT:  .LBB1_11: ; Parent Loop BB1_1 Depth=1
+; AVR51-NEXT:    ; Parent Loop BB1_2 Depth=2
+; AVR51-NEXT:    ; => This Inner Loop Header: Depth=3
+; AVR51-NEXT:    movw r18, r8
+; AVR51-NEXT:    cpi r16, 32
+; AVR51-NEXT:    cpc r17, r1
+; AVR51-NEXT:    brsh .LBB1_16
+; AVR51-NEXT:  ; %bb.12: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 43
+; AVR51-NEXT:    brlt .LBB1_13
+; AVR51-NEXT:    rjmp .LBB1_19
+; AVR51-NEXT:  .LBB1_13: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 32
+; AVR51-NEXT:    breq .LBB1_9
+; AVR51-NEXT:  ; %bb.14: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 35
+; AVR51-NEXT:    breq .LBB1_9
+; AVR51-NEXT:  ; %bb.15: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 39
+; AVR51-NEXT:    breq .LBB1_9
+; AVR51-NEXT:    rjmp .LBB1_17
+; AVR51-NEXT:  .LBB1_16: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r16, -128
+; AVR51-NEXT:    cpc r17, r1
+; AVR51-NEXT:    brlo .LBB1_17
+; AVR51-NEXT:    rjmp .LBB1_22
+; AVR51-NEXT:  .LBB1_17: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    mov r22, r27
+; AVR51-NEXT:    subi r22, 48
+; AVR51-NEXT:    cpi r22, 10
+; AVR51-NEXT:    brlo .LBB1_18
+; AVR51-NEXT:    rjmp .LBB1_24
+; AVR51-NEXT:  .LBB1_18: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    muls r19, r26
+; AVR51-NEXT:    mov r19, r0
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    mul r18, r26
+; AVR51-NEXT:    mov r18, r1
+; AVR51-NEXT:    clr r1
+; AVR51-NEXT:    add r18, r19
+; AVR51-NEXT:    mov r19, r18
+; AVR51-NEXT:    clr r18
+; AVR51-NEXT:    movw r24, r30
+; AVR51-NEXT:    mov r30, r0
+; AVR51-NEXT:    clr r31
+; AVR51-NEXT:    or r30, r18
+; AVR51-NEXT:    or r31, r19
+; AVR51-NEXT:    mov r8, r22
+; AVR51-NEXT:    clr r9
+; AVR51-NEXT:    add r8, r30
+; AVR51-NEXT:    adc r9, r31
+; AVR51-NEXT:    movw r30, r24
+; AVR51-NEXT:    ori r16, 32
+; AVR51-NEXT:    rjmp .LBB1_10
+; AVR51-NEXT:  .LBB1_19: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 43
+; AVR51-NEXT:    brne .LBB1_20
+; AVR51-NEXT:    rjmp .LBB1_9
+; AVR51-NEXT:  .LBB1_20: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 45
+; AVR51-NEXT:    brne .LBB1_21
+; AVR51-NEXT:    rjmp .LBB1_9
+; AVR51-NEXT:  .LBB1_21: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 48
+; AVR51-NEXT:    brne .LBB1_63
+; AVR51-NEXT:    rjmp .LBB1_9
+; AVR51-NEXT:  .LBB1_63: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    rjmp .LBB1_17
+; AVR51-NEXT:  .LBB1_22: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 108
+; AVR51-NEXT:    brge .LBB1_29
+; AVR51-NEXT:  ; %bb.23: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 76
+; AVR51-NEXT:    breq .LBB1_65
+; AVR51-NEXT:    rjmp .LBB1_33
+; AVR51-NEXT:  .LBB1_65: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    rjmp .LBB1_8
+; AVR51-NEXT:  .LBB1_24: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 104
+; AVR51-NEXT:    brge .LBB1_25
+; AVR51-NEXT:    rjmp .LBB1_36
+; AVR51-NEXT:  .LBB1_25: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 108
+; AVR51-NEXT:    brlt .LBB1_33
+; AVR51-NEXT:  ; %bb.26: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 108
+; AVR51-NEXT:    breq .LBB1_32
+; AVR51-NEXT:  ; %bb.27: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 116
+; AVR51-NEXT:    brne .LBB1_28
+; AVR51-NEXT:    rjmp .LBB1_9
+; AVR51-NEXT:  .LBB1_28: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 122
+; AVR51-NEXT:    movw r8, r18
+; AVR51-NEXT:    brne .LBB1_64
+; AVR51-NEXT:    rjmp .LBB1_10
+; AVR51-NEXT:  .LBB1_64: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT:    rjmp .LBB1_45
+; AVR51-NEXT:  .LBB1_29: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 122
+; AVR51-NEXT:    brne .LBB1_30
+; AVR51-NEXT:    rjmp .LBB1_9
+; AVR51-NEXT:  .LBB1_30: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 116
+; AVR51-NEXT:    brne .LBB1_31
+; AVR51-NEXT:    rjmp .LBB1_9
+; AVR51-NEXT:  .LBB1_31: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 108
+; AVR51-NEXT:    breq .LBB1_32
+; AVR51-NEXT:    rjmp .LBB1_45
+; AVR51-NEXT:  .LBB1_32: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    movw r22, r16
+; AVR51-NEXT:    lsl r22
+; AVR51-NEXT:    rol r23
+; AVR51-NEXT:    lsl r22
+; AVR51-NEXT:    rol r23
+; AVR51-NEXT:    andi r22, 0
+; AVR51-NEXT:    andi r23, 2
+; AVR51-NEXT:    or r22, r16
+; AVR51-NEXT:    or r23, r17
+; AVR51-NEXT:    ori r22, 128
+; AVR51-NEXT:    rjmp .LBB1_35
+; AVR51-NEXT:  .LBB1_33: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 104
+; AVR51-NEXT:    breq .LBB1_34
+; AVR51-NEXT:    rjmp .LBB1_7
+; AVR51-NEXT:  .LBB1_34: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    movw r22, r16
+; AVR51-NEXT:    lsl r22
+; AVR51-NEXT:    rol r23
+; AVR51-NEXT:    andi r22, 0
+; AVR51-NEXT:    andi r23, 2
+; AVR51-NEXT:    or r22, r16
+; AVR51-NEXT:    or r23, r17
+; AVR51-NEXT:    ori r23, 1
+; AVR51-NEXT:  .LBB1_35: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    movw r8, r18
+; AVR51-NEXT:    movw r16, r22
+; AVR51-NEXT:    rjmp .LBB1_10
+; AVR51-NEXT:  .LBB1_36: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 46
+; AVR51-NEXT:    brge .LBB1_39
+; AVR51-NEXT:  ; %bb.37: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 36
+; AVR51-NEXT:    breq .LBB1_41
+; AVR51-NEXT:  ; %bb.38: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 42
+; AVR51-NEXT:    movw r8, r6
+; AVR51-NEXT:    brne .LBB1_45
+; AVR51-NEXT:    rjmp .LBB1_10
+; AVR51-NEXT:  .LBB1_39: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 46
+; AVR51-NEXT:    breq .LBB1_44
+; AVR51-NEXT:  ; %bb.40: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cpi r27, 76
+; AVR51-NEXT:    brne .LBB1_45
+; AVR51-NEXT:    rjmp .LBB1_8
+; AVR51-NEXT:  .LBB1_41: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    cp r12, r1
+; AVR51-NEXT:    cpc r13, r1
+; AVR51-NEXT:    brne .LBB1_43
+; AVR51-NEXT:  ; %bb.42: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    movw r8, r6
+; AVR51-NEXT:    movw r12, r18
+; AVR51-NEXT:    rjmp .LBB1_10
+; AVR51-NEXT:  .LBB1_43: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    movw r24, r4
+; AVR51-NEXT:    cp r18, r24
+; AVR51-NEXT:    cpc r19, r25
+; AVR51-NEXT:    breq .LBB1_48
+; AVR51-NEXT:  .LBB1_44: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT:    movw r8, r6
+; AVR51-NEXT:    rjmp .LBB1_10
+; AVR51-NEXT:  .LBB1_45: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT:    mov r18, r27
+; AVR51-NEXT:  .LBB1_46: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT:    cp r12, r1
+; AVR51-NEXT:    cpc r13, r1
+; AVR51-NEXT:    brne .LBB1_47
+; AVR51-NEXT:    rjmp .LBB1_62
+; AVR51-NEXT:  .LBB1_47: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT:    movw r24, r4
+; AVR51-NEXT:    cp r12, r24
+; AVR51-NEXT:    cpc r13, r25
+; AVR51-NEXT:    breq .LBB1_49
+; AVR51-NEXT:    rjmp .LBB1_2
+; AVR51-NEXT:  .LBB1_48: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT:    ldi r18, 99
+; AVR51-NEXT:    movw r12, r4
+; AVR51-NEXT:    rjmp .LBB1_46
+; AVR51-NEXT:  .LBB1_49: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    mov r19, r18
+; AVR51-NEXT:    ori r19, 32
+; AVR51-NEXT:    cpi r19, 97
+; AVR51-NEXT:    brne .LBB1_50
+; AVR51-NEXT:    rjmp .LBB1_60
+; AVR51-NEXT:  .LBB1_50: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    subi r19, 101
+; AVR51-NEXT:    cpi r19, 3
+; AVR51-NEXT:    brsh .LBB1_51
+; AVR51-NEXT:    rjmp .LBB1_60
+; AVR51-NEXT:  .LBB1_51: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    cpi r18, 105
+; AVR51-NEXT:    brge .LBB1_54
+; AVR51-NEXT:  ; %bb.52: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    cpi r18, 99
+; AVR51-NEXT:    breq .LBB1_57
+; AVR51-NEXT:  ; %bb.53: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    cpi r18, 100
+; AVR51-NEXT:    rjmp .LBB1_56
+; AVR51-NEXT:  .LBB1_54: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    cpi r18, 105
+; AVR51-NEXT:    breq .LBB1_56
+; AVR51-NEXT:  ; %bb.55: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    cpi r18, 115
+; AVR51-NEXT:    breq .LBB1_57
+; AVR51-NEXT:  .LBB1_56: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    movw r18, r16
+; AVR51-NEXT:    andi r18, 128
+; AVR51-NEXT:    andi r19, 0
+; AVR51-NEXT:    cp r18, r1
+; AVR51-NEXT:    cpc r19, r1
+; AVR51-NEXT:    brne .LBB1_58
+; AVR51-NEXT:  .LBB1_57: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    movw r18, r10
+; AVR51-NEXT:    movw r30, r18
+; AVR51-NEXT:    ld r24, Z
+; AVR51-NEXT:    ldd r25, Z+1
+; AVR51-NEXT:    adiw r24, 2
+; AVR51-NEXT:    rjmp .LBB1_61
+; AVR51-NEXT:  .LBB1_58: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    andi r16, 0
+; AVR51-NEXT:    andi r17, 2
+; AVR51-NEXT:    cp r1, r1
+; AVR51-NEXT:    cpc r17, r1
+; AVR51-NEXT:    brne .LBB1_60
+; AVR51-NEXT:  ; %bb.59: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    movw r18, r10
+; AVR51-NEXT:    movw r30, r18
+; AVR51-NEXT:    ld r24, Z
+; AVR51-NEXT:    ldd r25, Z+1
+; AVR51-NEXT:    adiw r24, 4
+; AVR51-NEXT:    rjmp .LBB1_61
+; AVR51-NEXT:  .LBB1_60: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    movw r18, r10
+; AVR51-NEXT:    movw r30, r18
+; AVR51-NEXT:    ld r24, Z
+; AVR51-NEXT:    ldd r25, Z+1
+; AVR51-NEXT:    adiw r24, 8
+; AVR51-NEXT:  .LBB1_61: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT:    std Z+1, r25
+; AVR51-NEXT:    st Z, r24
+; AVR51-NEXT:    movw r24, r4
+; AVR51-NEXT:    adiw r24, 1
+; AVR51-NEXT:    movw r4, r24
+; AVR51-NEXT:    rjmp .LBB1_1
+; AVR51-NEXT:  .LBB1_62:
+; AVR51-NEXT:    pop r17
+; AVR51-NEXT:    pop r16
+; AVR51-NEXT:    pop r15
+; AVR51-NEXT:    pop r14
+; AVR51-NEXT:    pop r13
+; AVR51-NEXT:    pop r12
+; AVR51-NEXT:    pop r11
+; AVR51-NEXT:    pop r10
+; AVR51-NEXT:    pop r9
+; AVR51-NEXT:    pop r8
+; AVR51-NEXT:    pop r7
+; AVR51-NEXT:    pop r6
+; AVR51-NEXT:    pop r5
+; AVR51-NEXT:    pop r4
+; AVR51-NEXT:    ret
+;
+; AVR2-LABEL: skip_to_arg:
+; AVR2:       ; %bb.0:
+; AVR2-NEXT:    push r2
+; AVR2-NEXT:    push r3
+; AVR2-NEXT:    push r4
+; AVR2-NEXT:    push r5
+; AVR2-NEXT:    push r6
+; AVR2-NEXT:    push r7
+; AVR2-NEXT:    push r8
+; AVR2-NEXT:    push r9
+; AVR2-NEXT:    push r10
+; AVR2-NEXT:    push r11
+; AVR2-NEXT:    push r12
+; AVR2-NEXT:    push r13
+; AVR2-NEXT:    push r14
+; AVR2-NEXT:    push r15
+; AVR2-NEXT:    push r17
+; AVR2-NEXT:    push r28
+; AVR2-NEXT:    push r29
+; AVR2-NEXT:    in r28, 61
+; AVR2-NEXT:    in r29, 62
+; AVR2-NEXT:    sbiw r28, 2
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    cli
+; AVR2-NEXT:    out 62, r29
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    out 61, r28
+; AVR2-NEXT:    mov r10, r20
+; AVR2-NEXT:    mov r11, r21
+; AVR2-NEXT:    std Y+2, r23 ; 2-byte Folded Spill
+; AVR2-NEXT:    std Y+1, r22 ; 2-byte Folded Spill
+; AVR2-NEXT:    mov r12, r24
+; AVR2-NEXT:    mov r13, r25
+; AVR2-NEXT:    ldi r26, 1
+; AVR2-NEXT:    ldi r27, 0
+; AVR2-NEXT:    ldi r24, 10
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r2, r24
+; AVR2-NEXT:    mov r3, r25
+; AVR2-NEXT:  .LBB1_1: ; =>This Loop Header: Depth=1
+; AVR2-NEXT:    ; Child Loop BB1_2 Depth 2
+; AVR2-NEXT:    ; Child Loop BB1_4 Depth 3
+; AVR2-NEXT:    ; Child Loop BB1_11 Depth 3
+; AVR2-NEXT:    mov r30, r12
+; AVR2-NEXT:    mov r31, r13
+; AVR2-NEXT:  .LBB1_2: ; Parent Loop BB1_1 Depth=1
+; AVR2-NEXT:    ; => This Loop Header: Depth=2
+; AVR2-NEXT:    ; Child Loop BB1_4 Depth 3
+; AVR2-NEXT:    ; Child Loop BB1_11 Depth 3
+; AVR2-NEXT:    mov r6, r26
+; AVR2-NEXT:    mov r7, r27
+; AVR2-NEXT:    cp r26, r10
+; AVR2-NEXT:    cpc r27, r11
+; AVR2-NEXT:    brlt .LBB1_4
+; AVR2-NEXT:    rjmp .LBB1_62
+; AVR2-NEXT:  .LBB1_3: ; in Loop: Header=BB1_4 Depth=3
+; AVR2-NEXT:    mov r24, r30
+; AVR2-NEXT:    mov r25, r31
+; AVR2-NEXT:    ldd r18, Z+1
+; AVR2-NEXT:    adiw r30, 2
+; AVR2-NEXT:    cpi r18, 37
+; AVR2-NEXT:    brne .LBB1_6
+; AVR2-NEXT:  .LBB1_4: ; Parent Loop BB1_1 Depth=1
+; AVR2-NEXT:    ; Parent Loop BB1_2 Depth=2
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=3
+; AVR2-NEXT:    mov r26, r30
+; AVR2-NEXT:    mov r27, r31
+; AVR2-NEXT:    ld r24, X+
+; AVR2-NEXT:    cpi r24, 37
+; AVR2-NEXT:    breq .LBB1_3
+; AVR2-NEXT:  ; %bb.5: ; in Loop: Header=BB1_4 Depth=3
+; AVR2-NEXT:    cpi r24, 0
+; AVR2-NEXT:    mov r30, r26
+; AVR2-NEXT:    mov r31, r27
+; AVR2-NEXT:    brne .LBB1_4
+; AVR2-NEXT:    rjmp .LBB1_62
+; AVR2-NEXT:  .LBB1_6: ; %.preheader
+; AVR2-NEXT:    ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT:    ldi r24, 0
+; AVR2-NEXT:    ldi r25, 0
+; AVR2-NEXT:    mov r20, r24
+; AVR2-NEXT:    mov r21, r25
+; AVR2-NEXT:    mov r8, r24
+; AVR2-NEXT:    mov r9, r25
+; AVR2-NEXT:    mov r22, r24
+; AVR2-NEXT:    mov r23, r25
+; AVR2-NEXT:    rjmp .LBB1_11
+; AVR2-NEXT:  .LBB1_7: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 106
+; AVR2-NEXT:    breq .LBB1_8
+; AVR2-NEXT:    rjmp .LBB1_46
+; AVR2-NEXT:  .LBB1_8: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    ori r22, 128
+; AVR2-NEXT:    ori r23, 2
+; AVR2-NEXT:  .LBB1_9: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    mov r20, r24
+; AVR2-NEXT:    mov r21, r25
+; AVR2-NEXT:  .LBB1_10: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    ld r18, Z+
+; AVR2-NEXT:    cpi r18, 0
+; AVR2-NEXT:    brne .LBB1_11
+; AVR2-NEXT:    rjmp .LBB1_45
+; AVR2-NEXT:  .LBB1_11: ; Parent Loop BB1_1 Depth=1
+; AVR2-NEXT:    ; Parent Loop BB1_2 Depth=2
+; AVR2-NEXT:    ; => This Inner Loop Header: Depth=3
+; AVR2-NEXT:    mov r24, r20
+; AVR2-NEXT:    mov r25, r21
+; AVR2-NEXT:    cpi r22, 32
+; AVR2-NEXT:    cpc r23, r1
+; AVR2-NEXT:    brsh .LBB1_16
+; AVR2-NEXT:  ; %bb.12: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 43
+; AVR2-NEXT:    brlt .LBB1_13
+; AVR2-NEXT:    rjmp .LBB1_19
+; AVR2-NEXT:  .LBB1_13: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 32
+; AVR2-NEXT:    breq .LBB1_9
+; AVR2-NEXT:  ; %bb.14: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 35
+; AVR2-NEXT:    breq .LBB1_9
+; AVR2-NEXT:  ; %bb.15: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 39
+; AVR2-NEXT:    breq .LBB1_9
+; AVR2-NEXT:    rjmp .LBB1_17
+; AVR2-NEXT:  .LBB1_16: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r22, -128
+; AVR2-NEXT:    cpc r23, r1
+; AVR2-NEXT:    brlo .LBB1_17
+; AVR2-NEXT:    rjmp .LBB1_22
+; AVR2-NEXT:  .LBB1_17: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    mov r17, r18
+; AVR2-NEXT:    subi r17, 48
+; AVR2-NEXT:    cpi r17, 10
+; AVR2-NEXT:    brlo .LBB1_18
+; AVR2-NEXT:    rjmp .LBB1_24
+; AVR2-NEXT:  .LBB1_18: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    mov r14, r22
+; AVR2-NEXT:    mov r15, r23
+; AVR2-NEXT:    mov r22, r2
+; AVR2-NEXT:    mov r23, r3
+; AVR2-NEXT:    mov r4, r30
+; AVR2-NEXT:    mov r5, r31
+; AVR2-NEXT:    rcall __mulhi3
+; AVR2-NEXT:    mov r22, r14
+; AVR2-NEXT:    mov r23, r15
+; AVR2-NEXT:    mov r30, r4
+; AVR2-NEXT:    mov r31, r5
+; AVR2-NEXT:    mov r20, r17
+; AVR2-NEXT:    clr r21
+; AVR2-NEXT:    add r20, r24
+; AVR2-NEXT:    adc r21, r25
+; AVR2-NEXT:    ori r22, 32
+; AVR2-NEXT:    rjmp .LBB1_10
+; AVR2-NEXT:  .LBB1_19: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 43
+; AVR2-NEXT:    brne .LBB1_20
+; AVR2-NEXT:    rjmp .LBB1_9
+; AVR2-NEXT:  .LBB1_20: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 45
+; AVR2-NEXT:    brne .LBB1_21
+; AVR2-NEXT:    rjmp .LBB1_9
+; AVR2-NEXT:  .LBB1_21: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 48
+; AVR2-NEXT:    brne .LBB1_17
+; AVR2-NEXT:    rjmp .LBB1_9
+; AVR2-NEXT:  .LBB1_22: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 108
+; AVR2-NEXT:    brge .LBB1_29
+; AVR2-NEXT:  ; %bb.23: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 76
+; AVR2-NEXT:    breq .LBB1_63
+; AVR2-NEXT:    rjmp .LBB1_33
+; AVR2-NEXT:  .LBB1_63: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    rjmp .LBB1_8
+; AVR2-NEXT:  .LBB1_24: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 104
+; AVR2-NEXT:    brge .LBB1_25
+; AVR2-NEXT:    rjmp .LBB1_36
+; AVR2-NEXT:  .LBB1_25: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 108
+; AVR2-NEXT:    brge .LBB1_26
+; AVR2-NEXT:    rjmp .LBB1_33
+; AVR2-NEXT:  .LBB1_26: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 108
+; AVR2-NEXT:    breq .LBB1_32
+; AVR2-NEXT:  ; %bb.27: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 116
+; AVR2-NEXT:    brne .LBB1_28
+; AVR2-NEXT:    rjmp .LBB1_9
+; AVR2-NEXT:  .LBB1_28: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 122
+; AVR2-NEXT:    mov r20, r24
+; AVR2-NEXT:    mov r21, r25
+; AVR2-NEXT:    brne .LBB1_64
+; AVR2-NEXT:    rjmp .LBB1_10
+; AVR2-NEXT:  .LBB1_64: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT:    rjmp .LBB1_46
+; AVR2-NEXT:  .LBB1_29: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 122
+; AVR2-NEXT:    brne .LBB1_30
+; AVR2-NEXT:    rjmp .LBB1_9
+; AVR2-NEXT:  .LBB1_30: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 116
+; AVR2-NEXT:    brne .LBB1_31
+; AVR2-NEXT:    rjmp .LBB1_9
+; AVR2-NEXT:  .LBB1_31: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 108
+; AVR2-NEXT:    breq .LBB1_32
+; AVR2-NEXT:    rjmp .LBB1_46
+; AVR2-NEXT:  .LBB1_32: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    mov r18, r22
+; AVR2-NEXT:    mov r19, r23
+; AVR2-NEXT:    lsl r18
+; AVR2-NEXT:    rol r19
+; AVR2-NEXT:    lsl r18
+; AVR2-NEXT:    rol r19
+; AVR2-NEXT:    andi r18, 0
+; AVR2-NEXT:    andi r19, 2
+; AVR2-NEXT:    or r18, r22
+; AVR2-NEXT:    or r19, r23
+; AVR2-NEXT:    ori r18, 128
+; AVR2-NEXT:    rjmp .LBB1_35
+; AVR2-NEXT:  .LBB1_33: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 104
+; AVR2-NEXT:    breq .LBB1_34
+; AVR2-NEXT:    rjmp .LBB1_7
+; AVR2-NEXT:  .LBB1_34: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    mov r18, r22
+; AVR2-NEXT:    mov r19, r23
+; AVR2-NEXT:    lsl r18
+; AVR2-NEXT:    rol r19
+; AVR2-NEXT:    andi r18, 0
+; AVR2-NEXT:    andi r19, 2
+; AVR2-NEXT:    or r18, r22
+; AVR2-NEXT:    or r19, r23
+; AVR2-NEXT:    ori r19, 1
+; AVR2-NEXT:  .LBB1_35: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    mov r20, r24
+; AVR2-NEXT:    mov r21, r25
+; AVR2-NEXT:    mov r22, r18
+; AVR2-NEXT:    mov r23, r19
+; AVR2-NEXT:    rjmp .LBB1_10
+; AVR2-NEXT:  .LBB1_36: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 46
+; AVR2-NEXT:    brge .LBB1_39
+; AVR2-NEXT:  ; %bb.37: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 36
+; AVR2-NEXT:    breq .LBB1_41
+; AVR2-NEXT:  ; %bb.38: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 42
+; AVR2-NEXT:    ldi r20, 0
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:    brne .LBB1_46
+; AVR2-NEXT:    rjmp .LBB1_10
+; AVR2-NEXT:  .LBB1_39: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 46
+; AVR2-NEXT:    breq .LBB1_44
+; AVR2-NEXT:  ; %bb.40: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cpi r18, 76
+; AVR2-NEXT:    brne .LBB1_46
+; AVR2-NEXT:    rjmp .LBB1_8
+; AVR2-NEXT:  .LBB1_41: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    cp r8, r1
+; AVR2-NEXT:    cpc r9, r1
+; AVR2-NEXT:    brne .LBB1_43
+; AVR2-NEXT:  ; %bb.42: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    ldi r20, 0
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:    mov r8, r24
+; AVR2-NEXT:    mov r9, r25
+; AVR2-NEXT:    rjmp .LBB1_10
+; AVR2-NEXT:  .LBB1_43: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    mov r20, r6
+; AVR2-NEXT:    mov r21, r7
+; AVR2-NEXT:    cp r24, r20
+; AVR2-NEXT:    cpc r25, r21
+; AVR2-NEXT:    breq .LBB1_48
+; AVR2-NEXT:  .LBB1_44: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT:    ldi r20, 0
+; AVR2-NEXT:    ldi r21, 0
+; AVR2-NEXT:    rjmp .LBB1_10
+; AVR2-NEXT:  .LBB1_45: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT:    mov r18, r1
+; AVR2-NEXT:  .LBB1_46: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT:    cp r8, r1
+; AVR2-NEXT:    cpc r9, r1
+; AVR2-NEXT:    brne .LBB1_47
+; AVR2-NEXT:    rjmp .LBB1_62
+; AVR2-NEXT:  .LBB1_47: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT:    mov r26, r6
+; AVR2-NEXT:    mov r27, r7
+; AVR2-NEXT:    cp r8, r26
+; AVR2-NEXT:    cpc r9, r27
+; AVR2-NEXT:    breq .LBB1_49
+; AVR2-NEXT:    rjmp .LBB1_2
+; AVR2-NEXT:  .LBB1_48: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT:    ldi r18, 99
+; AVR2-NEXT:    mov r8, r20
+; AVR2-NEXT:    mov r9, r21
+; AVR2-NEXT:    rjmp .LBB1_46
+; AVR2-NEXT:  .LBB1_49: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    mov r24, r18
+; AVR2-NEXT:    ori r24, 32
+; AVR2-NEXT:    cpi r24, 97
+; AVR2-NEXT:    brne .LBB1_50
+; AVR2-NEXT:    rjmp .LBB1_60
+; AVR2-NEXT:  .LBB1_50: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    subi r24, 101
+; AVR2-NEXT:    cpi r24, 3
+; AVR2-NEXT:    brsh .LBB1_51
+; AVR2-NEXT:    rjmp .LBB1_60
+; AVR2-NEXT:  .LBB1_51: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    cpi r18, 105
+; AVR2-NEXT:    brge .LBB1_54
+; AVR2-NEXT:  ; %bb.52: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    cpi r18, 99
+; AVR2-NEXT:    breq .LBB1_57
+; AVR2-NEXT:  ; %bb.53: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    cpi r18, 100
+; AVR2-NEXT:    rjmp .LBB1_56
+; AVR2-NEXT:  .LBB1_54: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    cpi r18, 105
+; AVR2-NEXT:    breq .LBB1_56
+; AVR2-NEXT:  ; %bb.55: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    cpi r18, 115
+; AVR2-NEXT:    breq .LBB1_57
+; AVR2-NEXT:  .LBB1_56: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    mov r24, r22
+; AVR2-NEXT:    mov r25, r23
+; AVR2-NEXT:    andi r24, 128
+; AVR2-NEXT:    andi r25, 0
+; AVR2-NEXT:    cp r24, r1
+; AVR2-NEXT:    cpc r25, r1
+; AVR2-NEXT:    brne .LBB1_58
+; AVR2-NEXT:  .LBB1_57: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    ldd r30, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT:    ld r24, Z
+; AVR2-NEXT:    ldd r25, Z+1
+; AVR2-NEXT:    adiw r24, 2
+; AVR2-NEXT:    rjmp .LBB1_61
+; AVR2-NEXT:  .LBB1_58: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    andi r22, 0
+; AVR2-NEXT:    andi r23, 2
+; AVR2-NEXT:    cp r1, r1
+; AVR2-NEXT:    cpc r23, r1
+; AVR2-NEXT:    brne .LBB1_60
+; AVR2-NEXT:  ; %bb.59: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    ldd r30, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT:    ld r24, Z
+; AVR2-NEXT:    ldd r25, Z+1
+; AVR2-NEXT:    adiw r24, 4
+; AVR2-NEXT:    rjmp .LBB1_61
+; AVR2-NEXT:  .LBB1_60: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    ldd r30, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT:    ldd r31, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT:    ld r24, Z
+; AVR2-NEXT:    ldd r25, Z+1
+; AVR2-NEXT:    adiw r24, 8
+; AVR2-NEXT:  .LBB1_61: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT:    std Z+1, r25
+; AVR2-NEXT:    st Z, r24
+; AVR2-NEXT:    adiw r26, 1
+; AVR2-NEXT:    rjmp .LBB1_1
+; AVR2-NEXT:  .LBB1_62:
+; AVR2-NEXT:    adiw r28, 2
+; AVR2-NEXT:    in r0, 63
+; AVR2-NEXT:    cli
+; AVR2-NEXT:    out 62, r29
+; AVR2-NEXT:    out 63, r0
+; AVR2-NEXT:    out 61, r28
+; AVR2-NEXT:    pop r29
+; AVR2-NEXT:    pop r28
+; AVR2-NEXT:    pop r17
+; AVR2-NEXT:    pop r15
+; AVR2-NEXT:    pop r14
+; AVR2-NEXT:    pop r13
+; AVR2-NEXT:    pop r12
+; AVR2-NEXT:    pop r11
+; AVR2-NEXT:    pop r10
+; AVR2-NEXT:    pop r9
+; AVR2-NEXT:    pop r8
+; AVR2-NEXT:    pop r7
+; AVR2-NEXT:    pop r6
+; AVR2-NEXT:    pop r5
+; AVR2-NEXT:    pop r4
+; AVR2-NEXT:    pop r3
+; AVR2-NEXT:    pop r2
+; AVR2-NEXT:    ret
+  br label %4
+
+4:                                                ; preds = %111, %3
+  %5 = phi i16 [ %112, %111 ], [ 1, %3 ]
+  %6 = icmp slt i16 %5, %2
+  br label %7
+
+7:                                                ; preds = %4, %72
+  %8 = phi ptr [ %67, %72 ], [ %0, %4 ]
+  br i1 %6, label %9, label %113
+
+9:                                                ; preds = %7, %13
+  %10 = phi ptr [ %14, %13 ], [ %8, %7 ]
+  %11 = getelementptr inbounds i8, ptr %10, i16 1
+  %12 = load i8, ptr %10, align 1
+  switch i8 %12, label %13 [
+    i8 0, label %113
+    i8 37, label %15
+  ]
+
+13:                                               ; preds = %9, %15
+  %14 = phi ptr [ %16, %15 ], [ %11, %9 ]
+  br label %9
+
+15:                                               ; preds = %9
+  %16 = getelementptr inbounds i8, ptr %10, i16 2
+  %17 = load i8, ptr %11, align 1
+  %18 = icmp eq i8 %17, 37
+  br i1 %18, label %13, label %19
+
+19:                                               ; preds = %15, %59
+  %20 = phi ptr [ %63, %59 ], [ %16, %15 ]
+  %21 = phi i16 [ %60, %59 ], [ 0, %15 ]
+  %22 = phi i16 [ %61, %59 ], [ 0, %15 ]
+  %23 = phi i16 [ %62, %59 ], [ 0, %15 ]
+  %24 = phi i8 [ %64, %59 ], [ %17, %15 ]
+  %25 = icmp ult i16 %23, 32
+  br i1 %25, label %26, label %27
+
+26:                                               ; preds = %19
+  switch i8 %24, label %29 [
+    i8 48, label %59
+    i8 43, label %59
+    i8 32, label %59
+    i8 45, label %59
+    i8 35, label %59
+    i8 39, label %59
+  ]
+
+27:                                               ; preds = %19
+  %28 = icmp ult i16 %23, 128
+  br i1 %28, label %29, label %42
+
+29:                                               ; preds = %26, %27
+  %30 = add i8 %24, -48
+  %31 = icmp ult i8 %30, 10
+  br i1 %31, label %32, label %37
+
+32:                                               ; preds = %29
+  %33 = mul nsw i16 %21, 10
+  %34 = zext i8 %30 to i16
+  %35 = add nsw i16 %33, %34
+  %36 = or i16 %23, 32
+  br label %59
+
+37:                                               ; preds = %29
+  switch i8 %24, label %66 [
+    i8 36, label %38
+    i8 42, label %59
+    i8 46, label %59
+    i8 108, label %43
+    i8 104, label %48
+    i8 76, label %53
+    i8 106, label %55
+    i8 122, label %57
+    i8 116, label %58
+  ]
+
+38:                                               ; preds = %37
+  %39 = icmp eq i16 %22, 0
+  br i1 %39, label %59, label %40
+
+40:                                               ; preds = %38
+  %41 = icmp eq i16 %21, %5
+  br i1 %41, label %66, label %59
+
+42:                                               ; preds = %27
+  switch i8 %24, label %66 [
+    i8 108, label %43
+    i8 104, label %48
+    i8 76, label %53
+    i8 106, label %55
+    i8 122, label %59
+    i8 116, label %59
+  ]
+
+43:                                               ; preds = %37, %42
+  %44 = shl i16 %23, 2
+  %45 = and i16 %44, 512
+  %46 = or i16 %23, %45
+  %47 = or i16 %46, 128
+  br label %59
+
+48:                                               ; preds = %37, %42
+  %49 = shl i16 %23, 1
+  %50 = and i16 %49, 512
+  %51 = or i16 %23, %50
+  %52 = or i16 %51, 256
+  br label %59
+
+53:                                               ; preds = %37, %42
+  %54 = or i16 %23, 640
+  br label %59
+
+55:                                               ; preds = %37, %42
+  %56 = or i16 %23, 640
+  br label %59
+
+57:                                               ; preds = %37
+  br label %59
+
+58:                                               ; preds = %37
+  br label %59
+
+59:                                               ; preds = %37, %37, %58, %42, %42, %57, %40, %38, %26, %26, %26, %26, %26, %26, %55, %53, %48, %43, %32
+  %60 = phi i16 [ %35, %32 ], [ %21, %43 ], [ %21, %48 ], [ %21, %53 ], [ %21, %55 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ 0, %38 ], [ 0, %40 ], [ 0, %37 ], [ 0, %37 ], [ %21, %42 ], [ %21, %57 ], [ %21, %42 ], [ %21, %58 ]
+  %61 = phi i16 [ %22, %32 ], [ %22, %43 ], [ %22, %48 ], [ %22, %53 ], [ %22, %55 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %21, %38 ], [ %22, %40 ], [ %22, %37 ], [ %22, %37 ], [ %22, %42 ], [ %22, %57 ], [ %22, %42 ], [ %22, %58 ]
+  %62 = phi i16 [ %36, %32 ], [ %47, %43 ], [ %52, %48 ], [ %54, %53 ], [ %56, %55 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %38 ], [ %23, %40 ], [ %23, %37 ], [ %23, %37 ], [ %23, %42 ], [ %23, %57 ], [ %23, %42 ], [ %23, %58 ]
+  %63 = getelementptr inbounds i8, ptr %20, i16 1
+  %64 = load i8, ptr %20, align 1
+  %65 = icmp eq i8 %64, 0
+  br i1 %65, label %66, label %19
+
+66:                                               ; preds = %37, %42, %40, %59
+  %67 = phi ptr [ %63, %59 ], [ %20, %40 ], [ %20, %42 ], [ %20, %37 ]
+  %68 = phi i16 [ %61, %59 ], [ %5, %40 ], [ %22, %42 ], [ %22, %37 ]
+  %69 = phi i16 [ %62, %59 ], [ %23, %40 ], [ %23, %42 ], [ %23, %37 ]
+  %70 = phi i8 [ 0, %59 ], [ 99, %40 ], [ %24, %42 ], [ %24, %37 ]
+  %71 = icmp eq i16 %68, 0
+  br i1 %71, label %113, label %72
+
+72:                                               ; preds = %66
+  %73 = icmp eq i16 %68, %5
+  br i1 %73, label %74, label %7
+
+74:                                               ; preds = %72
+  %75 = or i8 %70, 32
+  %76 = add i8 %75, -101
+  %77 = icmp ult i8 %76, 3
+  %78 = icmp eq i8 %75, 97
+  %79 = or i1 %78, %77
+  br i1 %79, label %80, label %82
+
+80:                                               ; preds = %74
+  %81 = va_arg ptr %1, double
+  br label %111
+
+82:                                               ; preds = %74
+  switch i8 %70, label %99 [
+    i8 99, label %83
+    i8 115, label %85
+    i8 100, label %87
+    i8 105, label %87
+  ]
+
+83:                                               ; preds = %82
+  %84 = va_arg ptr %1, i16
+  br label %111
+
+85:                                               ; preds = %82
+  %86 = va_arg ptr %1, ptr
+  br label %111
+
+87:                                               ; preds = %82, %82
+  %88 = and i16 %69, 128
+  %89 = icmp eq i16 %88, 0
+  br i1 %89, label %97, label %90
+
+90:                                               ; preds = %87
+  %91 = and i16 %69, 512
+  %92 = icmp eq i16 %91, 0
+  br i1 %92, label %95, label %93
+
+93:                                               ; preds = %90
+  %94 = va_arg ptr %1, i64
+  br label %111
+
+95:                                               ; preds = %90
+  %96 = va_arg ptr %1, i32
+  br label %111
+
+97:                                               ; preds = %87
+  %98 = va_arg ptr %1, i16
+  br label %111
+
+99:                                               ; preds = %82
+  %100 = and i16 %69, 128
+  %101 = icmp eq i16 %100, 0
+  br i1 %101, label %109, label %102
+
+102:                                              ; preds = %99
+  %103 = and i16 %69, 512
+  %104 = icmp eq i16 %103, 0
+  br i1 %104, label %107, label %105
+
+105:                                              ; preds = %102
+  %106 = va_arg ptr %1, i64
+  br label %111
+
+107:                                              ; preds = %102
+  %108 = va_arg ptr %1, i32
+  br label %111
+
+109:                                              ; preds = %99
+  %110 = va_arg ptr %1, i16
+  br label %111
+
+111:                                              ; preds = %109, %97, %107, %105, %95, %93, %83, %85, %80
+  %112 = add nuw nsw i16 %5, 1
+  br label %4
+
+113:                                              ; preds = %7, %66, %9
+  ret void
+}
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) addrspace(1)
+
+; Function Attrs: minsize optsize
+declare i16 @__dtoa_engine(double noundef, ptr noundef, i16 noundef, i1 noundef zeroext, i16 noundef) local_unnamed_addr addrspace(1)
+
+; Function Attrs: minsize mustprogress nofree nounwind optsize willreturn memory(argmem: read)
+declare i16 @strnlen(ptr nocapture noundef, i16 noundef) local_unnamed_addr addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i8 @llvm.umin.i8(i8, i8) addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i16 @llvm.umax.i16(i16, i16) addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i16 @llvm.smax.i16(i16, i16) addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i16 @llvm.umin.i16(i16, i16) addrspace(1)



More information about the llvm-commits mailing list