I decompiled both hex files. Both are weird.
first code:
   0:   cf 93           push    r28
   2:   df 93           push    r29
   4:   0f 92           push    r0
   6:   cd b7           in      r28, 0x3d       ; 61
   8:   de b7           in      r29, 0x3e       ; 62
   a:   dc 01           movw    r26, r24
   c:   fb 01           movw    r30, r22
   e:   49 83           std     Y+1, r20        ; 0x01
  10:   89 81           ldd     r24, Y+1        ; 0x01
  12:   8c 93           st      X, r24
  14:   89 81           ldd     r24, Y+1        ; 0x01
  16:   80 83           st      Z, r24
  18:   0f 90           pop     r0
  1a:   df 91           pop     r29
  1c:   cf 91           pop     r28
  1e:   08 95           ret
  20:   80 e1           ldi     r24, 0x10       ; 16
  22:   84 b9           out     0x04, r24       ; 4
  24:   85 b9           out     0x05, r24       ; 5
  26:   80 e0           ldi     r24, 0x00       ; 0
  28:   90 e0           ldi     r25, 0x00       ; 0
  2a:   08 95           ret
This code cannot work. I think it is only compiled module not linked to finish code.
Second code:
   0:   80 e1           ldi     r24, 0x10       ; 16
   2:   84 b9           out     0x04, r24       ; 4
   4:   85 b9           out     0x05, r24       ; 5
   6:   2f ef           ldi     r18, 0xFF       ; 255
   8:   33 ed           ldi     r19, 0xD3       ; 211
   a:   90 e3           ldi     r25, 0x30       ; 48
   c:   21 50           subi    r18, 0x01       ; 1
   e:   30 40           sbci    r19, 0x00       ; 0
  10:   90 40           sbci    r25, 0x00       ; 0
  12:   e1 f7           brne    .-8             ;  0xc
  14:   00 c0           rjmp    .+0             ;  0x16
  16:   00 00           nop
  18:   15 b8           out     0x05, r1        ; 5
  1a:   2f ef           ldi     r18, 0xFF       ; 255
  1c:   33 ed           ldi     r19, 0xD3       ; 211
  1e:   90 e3           ldi     r25, 0x30       ; 48
  20:   21 50           subi    r18, 0x01       ; 1
  22:   30 40           sbci    r19, 0x00       ; 0
  24:   90 40           sbci    r25, 0x00       ; 0
  26:   e1 f7           brne    .-8             ;  0x20
  28:   00 c0           rjmp    .+0             ;  0x2a
  2a:   00 00           nop
  2c:   eb cf           rjmp    .-42            ;  0x4
This code can work if R1 register is 0. But it is not initialized. Missing init section ?? I don't know maybe the linker need to be called
My result of first code assembled by AVR studio with avr-gcc 5.4.0 on windows:
Disassembly of section .text:
00000000 <__vectors>:
   0:   0c 94 34 00     jmp 0x68    ; 0x68 <__ctors_end>
   4:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
   8:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
   c:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  10:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  14:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  18:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  1c:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  20:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  24:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  28:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  2c:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  30:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  34:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  38:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  3c:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  40:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  44:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  48:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  4c:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  50:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  54:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  58:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  5c:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  60:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
  64:   0c 94 3e 00     jmp 0x7c    ; 0x7c <__bad_interrupt>
00000068 <__ctors_end>:
  68:   11 24           eor r1, r1
  6a:   1f be           out 0x3f, r1    ; 63
  6c:   cf ef           ldi r28, 0xFF   ; 255
  6e:   d8 e0           ldi r29, 0x08   ; 8
  70:   de bf           out 0x3e, r29   ; 62
  72:   cd bf           out 0x3d, r28   ; 61
  74:   0e 94 40 00     call    0x80    ; 0x80 <main>
  78:   0c 94 57 00     jmp 0xae    ; 0xae <_exit>
0000007c <__bad_interrupt>:
  7c:   0c 94 00 00     jmp 0   ; 0x0 <__vectors>
00000080 <main>:
  80:   80 e1           ldi r24, 0x10   ; 16
  82:   84 b9           out 0x04, r24   ; 4
  84:   85 b9           out 0x05, r24   ; 5
  86:   2f e3           ldi r18, 0x3F   ; 63
  88:   3d e0           ldi r19, 0x0D   ; 13
  8a:   93 e0           ldi r25, 0x03   ; 3
  8c:   21 50           subi    r18, 0x01   ; 1
  8e:   30 40           sbci    r19, 0x00   ; 0
  90:   90 40           sbci    r25, 0x00   ; 0
  92:   e1 f7           brne    .-8         ; 0x8c <main+0xc>
  94:   00 c0           rjmp    .+0         ; 0x96 <main+0x16>
  96:   00 00           nop
  98:   15 b8           out 0x05, r1    ; 5
  9a:   2f e3           ldi r18, 0x3F   ; 63
  9c:   3d e0           ldi r19, 0x0D   ; 13
  9e:   93 e0           ldi r25, 0x03   ; 3
  a0:   21 50           subi    r18, 0x01   ; 1
  a2:   30 40           sbci    r19, 0x00   ; 0
  a4:   90 40           sbci    r25, 0x00   ; 0
  a6:   e1 f7           brne    .-8         ; 0xa0 <main+0x20>
  a8:   00 c0           rjmp    .+0         ; 0xaa <main+0x2a>
  aa:   00 00           nop
  ac:   eb cf           rjmp    .-42        ; 0x84 <main+0x4>
000000ae <_exit>:
  ae:   f8 94           cli
000000b0 <__stop_program>:
  b0:   ff cf           rjmp    .-2         ; 0xb0 <__stop_program>
This code will work correctly. Of course interrupt vector table can be omitted. Also stack pointer initialization can be omitted. But instruction on address 0x68 must stay because clear register R1 then used in main.
Invoked commands:
        "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe"  -x c -funsigned-char -funsigned-bitfields -DNDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\include"  -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "main.d" -MT"main.d" -MT"main.o"   -o "main.o" ".././main.c" 
        Finished building: .././main.c
        Building target: GccApplication1.elf
        Invoking: AVR/GNU Linker : 5.4.0
        "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -o GccApplication1.elf  main.o   -Wl,-Map="GccApplication1.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group -Wl,--gc-sections -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\gcc\dev\atmega328p"  
        Finished building target: GccApplication1.elf
        "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures  "GccApplication1.elf" "GccApplication1.hex"
        "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom  --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0  --no-change-warnings -O ihex "GccApplication1.elf" "GccApplication1.eep" || exit 0
        "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "GccApplication1.elf" > "GccApplication1.lss"
        "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "GccApplication1.elf" "GccApplication1.srec"