# (u64, u64) [id: 1616073121; size: 16] type :type.3 = align 8 { l 1, l 1 } type :tags.2 = { { :type.3 1 } } # ((u64, u64) | void) [id: 3892503732; size: 24] type :type.1 = align 8 { w 1, :tags.2 1 } type :tags.9 = { { w 1 } } # (int | void) [id: 2945140412; size: 8] type :type.8 = align 4 { w 1, :tags.9 1 } section ".text.func" "ax" function :type.1 $func() { @start.0 %object.5 =l alloc8 24 %object.7 =l alloc4 8 %binding.21 =l alloc8 16 %object.23 =l alloc8 24 @body.4 # idk why this is necessary %.10 =l add %object.7, 4 jnz 1, @matches.13, @next.14 @matches.13 # binding.21 gets fused with object.23, so this storel 1, %binding.21 %value.22 =l add %binding.21, 8 # overwrites this storel 2, %value.22 %.24 =l add %object.23, 8 # before it's copied in this blit blit %binding.21, %.24, 16 ret %object.23 @next.14 # also don't know why this is necessary storew 2543892678, %object.5 ret %object.5 } section ".text.main" "ax" export function w $main() { @start.27 %object.43 =l alloc8 24 %object.49 =l alloc8 24 @body.28 %returns.34 =:type.1 call $func() %value.47 =l add %returns.34, 16 %load.48 =l loadl %value.47 %.33 =w ceql %load.48, 2 jnz %.33, @passed.32, @failed.31 @failed.31 call $abort() @passed.32 ret 0 }