Skip to content

Instantly share code, notes, and snippets.

@cr1901
Last active February 20, 2018 22:08
Show Gist options
  • Save cr1901/459a5c5d1032aac2d16b9cf62b1c959e to your computer and use it in GitHub Desktop.
Save cr1901/459a5c5d1032aac2d16b9cf62b1c959e to your computer and use it in GitHub Desktop.
AT2XT LLVM IR compare
; ModuleID = 'at2xt0-872cc07d68305d39bbff84ac3dfd15da.rs'
source_filename = "at2xt0-872cc07d68305d39bbff84ac3dfd15da.rs"
target datalayout = "e-m:e-p:16:16-i32:16-i64:16-f32:16-f64:16-a:8-n8:16-S16"
target triple = "msp430-none--elf"
@_ZN5at2xt6keyfsm6keymap11KEYCODE_LUT17hf5fa35200b3b8ae2E = internal unnamed_addr constant [132 x i8] c"\00C\00?=;<X\00DB@>\0F)\00\008*\00\1D\10\02\00\00\00,\1F\1E\11\03\00\00.- \12\05\04\00\009/!\14\13\06\00\0010#\22\15\07\00\00\002$\16\08\09\00\003%\17\18\0B\0A\00\0045&'\19\0C\00\00\00(\00\1A\0D\00\00:6\1C\1B\00+\00\00\00\00\00\00\00\00\0E\00\00O\00KG\00\00\00RSPLMH\01EWNQJ7IF\00\00\00\00A", align 1
@_ZN5at2xt7TIMEOUT17hba6367fa895c65ebE = internal global i8 0, align 1
@_ZN5at2xt9HOST_MODE17he40a9ca556e9d16aE = internal global i8 0, align 1
@_ZN5at2xt10DEVICE_ACK17hab6a8e2159c05eb1E = internal global i8 0, align 1
@_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E = internal unnamed_addr global { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] } { [0 x i8] undef, { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] } { [0 x i8] undef, { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] } { [0 x i8] undef, [16 x i16] zeroinitializer, [0 x i8] undef, i8 0, [0 x i8] undef, i8 0, [0 x i8] undef }, [0 x i8] undef }, [0 x i8] undef }, align 2
@_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.0 = internal unnamed_addr global i16 0, align 2
@_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.1 = internal unnamed_addr global i8 10, align 2
@_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.0 = internal unnamed_addr global i16 0, align 2
@_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.1 = internal unnamed_addr global i8 0, align 2
@INTERRUPTS = constant { {}*, {}*, void ()*, void ()*, {}*, {}*, {}*, {}*, void ()*, void ()*, void ()*, void ()*, {}*, {}*, void ()* } { {}* null, {}* null, void ()* @PORT1, void ()* @PORT2, {}* null, {}* null, {}* null, {}* null, void ()* @TIMERA1, void ()* @TIMERA0, void ()* @WDT, void ()* @COMPARATORA, {}* null, {}* null, void ()* @NMI }, section ".vector_table.interrupts", align 2
@_ZN9msp430_rt13reset_handler12RESET_VECTOR17hd89315e52a7c1185E = internal constant void ()* @_ZN9msp430_rt13reset_handler10trampoline17h919d7c2d7bc2b722E, section ".vector_table.reset_vector", align 2
@_ZN9msp430_rt4KEEP17h4dc86106831e632aE = internal constant void ()* @DEFAULT_HANDLER, align 2
@_sbss = external global i16
@_ebss = external global i16
@_sdata = external global i16
@_edata = external global i16
@_sidata = external local_unnamed_addr global i16
@llvm.used = appending global [3 x i8*] [i8* bitcast ({ {}*, {}*, void ()*, void ()*, {}*, {}*, {}*, {}*, void ()*, void ()*, void ()*, void ()*, {}*, {}*, void ()* }* @INTERRUPTS to i8*), i8* bitcast (void ()** @_ZN9msp430_rt13reset_handler12RESET_VECTOR17hd89315e52a7c1185E to i8*), i8* bitcast (void ()** @_ZN9msp430_rt4KEEP17h4dc86106831e632aE to i8*)], section "llvm.metadata"
; core::result::unwrap_failed
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core6result13unwrap_failed17hece67d574d10e3caE() unnamed_addr #0 {
start:
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17h82d3568bc13c41f0E()
unreachable
}
; at2xt::send_xt_bit
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt11send_xt_bit17h34728a16be919cc9E(i8) unnamed_addr #1 {
start:
%1 = tail call i16 asm sideeffect "mov R2, $0", "=r"() #5, !noalias !0, !srcloc !3
tail call void asm sideeffect "dint { nop", "~{memory}"() #5, !noalias !0, !srcloc !3
%2 = icmp eq i8 %0, 1
%3 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !4
%4 = and i8 %3, -9
%5 = or i8 %3, 8
%.sink.i.i = select i1 %2, i8 %5, i8 %4
store volatile i8 %.sink.i.i, i8* inttoptr (i16 33 to i8*), align 1, !noalias !4
%6 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !7
%7 = and i8 %6, -5
store volatile i8 %7, i8* inttoptr (i16 33 to i8*), align 1, !noalias !7
%8 = and i16 %1, 8
%9 = icmp eq i16 %8, 0
br i1 %9, label %_ZN6msp4309interrupt4free17h1a708e697eb3714dE.exit, label %bb6.i
bb6.i: ; preds = %start
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !noalias !0, !srcloc !3
br label %_ZN6msp4309interrupt4free17h1a708e697eb3714dE.exit
_ZN6msp4309interrupt4free17h1a708e697eb3714dE.exit: ; preds = %start, %bb6.i
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h633819329be4b966E(i16 6)
%10 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%11 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !12
%12 = or i8 %11, 4
store volatile i8 %12, i8* inttoptr (i16 33 to i8*), align 1, !noalias !12
%13 = and i16 %10, 8
%14 = icmp eq i16 %13, 0
br i1 %14, label %_ZN6msp4309interrupt4free17ha471b0bddd92374bE.exit, label %bb6.i5
bb6.i5: ; preds = %_ZN6msp4309interrupt4free17h1a708e697eb3714dE.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17ha471b0bddd92374bE.exit
_ZN6msp4309interrupt4free17ha471b0bddd92374bE.exit: ; preds = %_ZN6msp4309interrupt4free17h1a708e697eb3714dE.exit, %bb6.i5
ret void
}
; at2xt::send_byte_to_pc
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt15send_byte_to_pc17h19d1aaa30e6f50fcE(i8) unnamed_addr #1 {
start:
br label %bb1
bb1: ; preds = %_ZN6msp4309interrupt4free17ha9dd8f11e33d0049E.exit, %start
%1 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%2 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !17
%3 = and i8 %2, 4
%4 = icmp eq i8 %3, 0
br i1 %4, label %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h8824d62ac69e7997E.exit.i", label %bb5.i.i
bb5.i.i: ; preds = %bb1
%5 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !20
%6 = and i8 %5, 8
%7 = icmp eq i8 %6, 0
br label %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h8824d62ac69e7997E.exit.i"
"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h8824d62ac69e7997E.exit.i": ; preds = %bb5.i.i, %bb1
%_0.0.i.i = phi i1 [ true, %bb1 ], [ %7, %bb5.i.i ]
%8 = and i16 %1, 8
%9 = icmp eq i16 %8, 0
br i1 %9, label %_ZN6msp4309interrupt4free17ha9dd8f11e33d0049E.exit, label %bb6.i
bb6.i: ; preds = %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h8824d62ac69e7997E.exit.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17ha9dd8f11e33d0049E.exit
_ZN6msp4309interrupt4free17ha9dd8f11e33d0049E.exit: ; preds = %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h8824d62ac69e7997E.exit.i", %bb6.i
br i1 %_0.0.i.i, label %bb1, label %bb2
bb2: ; preds = %_ZN6msp4309interrupt4free17ha9dd8f11e33d0049E.exit
%10 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%11 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !23
%12 = or i8 %11, 12
store volatile i8 %12, i8* inttoptr (i16 33 to i8*), align 1, !noalias !23
%13 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !28
%14 = or i8 %13, 12
store volatile i8 %14, i8* inttoptr (i16 34 to i8*), align 2, !noalias !28
%15 = and i16 %10, 8
%16 = icmp eq i16 %15, 0
br i1 %16, label %_ZN6msp4309interrupt4free17hcf4163cecf8c36caE.exit, label %bb6.i8
bb6.i8: ; preds = %bb2
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17hcf4163cecf8c36caE.exit
_ZN6msp4309interrupt4free17hcf4163cecf8c36caE.exit: ; preds = %bb2, %bb6.i8
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17h34728a16be919cc9E(i8 0)
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17h34728a16be919cc9E(i8 1)
br label %bb13
bb11: ; preds = %bb13
%17 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%18 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !31
%19 = or i8 %18, 8
store volatile i8 %19, i8* inttoptr (i16 33 to i8*), align 1, !noalias !31
%20 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !36
%21 = and i8 %20, -13
store volatile i8 %21, i8* inttoptr (i16 34 to i8*), align 2, !noalias !36
%22 = and i16 %17, 8
%23 = icmp eq i16 %22, 0
br i1 %23, label %_ZN6msp4309interrupt4free17h7e30f546b08144e6E.exit, label %bb6.i10
bb6.i10: ; preds = %bb11
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h7e30f546b08144e6E.exit
_ZN6msp4309interrupt4free17h7e30f546b08144e6E.exit: ; preds = %bb11, %bb6.i10
ret void
bb13: ; preds = %_ZN6msp4309interrupt4free17hcf4163cecf8c36caE.exit, %bb13
%byte.021 = phi i8 [ %0, %_ZN6msp4309interrupt4free17hcf4163cecf8c36caE.exit ], [ %26, %bb13 ]
%iter.sroa.0.020 = phi i32 [ 0, %_ZN6msp4309interrupt4free17hcf4163cecf8c36caE.exit ], [ %24, %bb13 ]
%24 = add nuw nsw i32 %iter.sroa.0.020, 1
%25 = and i8 %byte.021, 1
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17h34728a16be919cc9E(i8 %25)
%26 = lshr i8 %byte.021, 1
%27 = icmp slt i32 %24, 8
br i1 %27, label %bb13, label %bb11
}
; at2xt::send_byte_to_at_keyboard
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h459b7ac19cfecf8fE(i8) unnamed_addr #1 {
start:
%1 = tail call i16 asm sideeffect "mov R2, $0", "=r"() #5, !noalias !39, !srcloc !3
tail call void asm sideeffect "dint { nop", "~{memory}"() #5, !noalias !39, !srcloc !3
%2 = load i8, i8* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.1, align 2, !alias.scope !42, !noalias !47
%3 = icmp ugt i8 %2, 9
br i1 %3, label %bb9.i.i.i, label %bb3.i.i.i
bb9.i.i.i: ; preds = %start, %bb9.i.i.i
%sout.014.i.i.i = phi i8 [ %7, %bb9.i.i.i ], [ %0, %start ]
%num_ones.013.i.i.i = phi i8 [ %6, %bb9.i.i.i ], [ 0, %start ]
%iter.sroa.0.012.i.i.i = phi i32 [ %4, %bb9.i.i.i ], [ 0, %start ]
%4 = add nuw nsw i32 %iter.sroa.0.012.i.i.i, 1
%5 = and i8 %sout.014.i.i.i, 1
%6 = add i8 %5, %num_ones.013.i.i.i
%7 = shl i8 %sout.014.i.i.i, 1
%8 = icmp slt i32 %4, 8
br i1 %8, label %bb9.i.i.i, label %"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h856f604ba451c659E.exit.i"
bb3.i.i.i: ; preds = %start
; call core::result::unwrap_failed
tail call fastcc void @_ZN4core6result13unwrap_failed17hece67d574d10e3caE() #5, !noalias !47
unreachable
"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h856f604ba451c659E.exit.i": ; preds = %bb9.i.i.i
%fold.i.i.i = add i8 %num_ones.013.i.i.i, %sout.014.i.i.i
%9 = and i8 %fold.i.i.i, 1
%10 = zext i8 %9 to i16
%11 = shl nuw nsw i16 %10, 8
%12 = zext i8 %0 to i16
%13 = or i16 %11, %12
%14 = xor i16 %13, 768
store i16 %14, i16* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.0, align 2, !alias.scope !50, !noalias !47
store i8 0, i8* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.1, align 2, !alias.scope !50, !noalias !47
%15 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !51
%16 = and i8 %15, -2
store volatile i8 %16, i8* inttoptr (i16 37 to i8*), align 1, !noalias !51
%17 = and i16 %1, 8
%18 = icmp eq i16 %17, 0
br i1 %18, label %bb2, label %bb6.i
bb6.i: ; preds = %"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h856f604ba451c659E.exit.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !noalias !39, !srcloc !3
br label %bb2
bb2: ; preds = %bb6.i, %"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h856f604ba451c659E.exit.i", %_ZN6msp4309interrupt4free17he9236f9ccbb8dfaaE.exit
%19 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%20 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !56
%21 = and i8 %20, 1
%22 = icmp eq i8 %21, 0
%23 = and i16 %19, 8
%24 = icmp eq i16 %23, 0
br i1 %24, label %_ZN6msp4309interrupt4free17he9236f9ccbb8dfaaE.exit, label %bb6.i8
bb6.i8: ; preds = %bb2
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17he9236f9ccbb8dfaaE.exit
_ZN6msp4309interrupt4free17he9236f9ccbb8dfaaE.exit: ; preds = %bb2, %bb6.i8
br i1 %22, label %bb2, label %bb3
bb3: ; preds = %_ZN6msp4309interrupt4free17he9236f9ccbb8dfaaE.exit
%25 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%26 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !59
%27 = and i8 %26, -2
store volatile i8 %27, i8* inttoptr (i16 33 to i8*), align 1, !noalias !59
%28 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !64
%29 = or i8 %28, 16
store volatile i8 %29, i8* inttoptr (i16 33 to i8*), align 1, !noalias !64
%30 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !69
%31 = or i8 %30, 17
store volatile i8 %31, i8* inttoptr (i16 34 to i8*), align 2, !noalias !69
%32 = and i16 %25, 8
%33 = icmp eq i16 %32, 0
br i1 %33, label %_ZN6msp4309interrupt4free17h1969168be3ca75d9E.exit, label %bb6.i10
bb6.i10: ; preds = %bb3
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h1969168be3ca75d9E.exit
_ZN6msp4309interrupt4free17h1969168be3ca75d9E.exit: ; preds = %bb3, %bb6.i10
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h633819329be4b966E(i16 11)
%34 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%35 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !72
%36 = and i8 %35, -17
store volatile i8 %36, i8* inttoptr (i16 33 to i8*), align 1, !noalias !72
%37 = and i16 %34, 8
%38 = icmp eq i16 %37, 0
br i1 %38, label %_ZN6msp4309interrupt4free17h251c5652e0fddc33E.exit, label %bb6.i12
bb6.i12: ; preds = %_ZN6msp4309interrupt4free17h1969168be3ca75d9E.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h251c5652e0fddc33E.exit
_ZN6msp4309interrupt4free17h251c5652e0fddc33E.exit: ; preds = %_ZN6msp4309interrupt4free17h1969168be3ca75d9E.exit, %bb6.i12
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h633819329be4b966E(i16 4)
%39 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%40 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !77
%41 = or i8 %40, 1
store volatile i8 %41, i8* inttoptr (i16 33 to i8*), align 1, !noalias !77
%42 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !82
%43 = and i8 %42, -2
store volatile i8 %43, i8* inttoptr (i16 34 to i8*), align 2, !noalias !82
%44 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !87
%45 = and i8 %44, -2
store volatile i8 %45, i8* inttoptr (i16 35 to i8*), align 1, !noalias !87
%46 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !92
%47 = or i8 %46, 1
store volatile i8 %47, i8* inttoptr (i16 37 to i8*), align 1, !noalias !92
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt9HOST_MODE17he40a9ca556e9d16aE, i8 1) #5, !srcloc !3
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hab6a8e2159c05eb1E, i8 0) #5, !srcloc !3
%48 = and i16 %39, 8
%49 = icmp eq i16 %48, 0
br i1 %49, label %bb13, label %bb6.i14
bb6.i14: ; preds = %_ZN6msp4309interrupt4free17h251c5652e0fddc33E.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %bb13
bb13: ; preds = %bb6.i14, %_ZN6msp4309interrupt4free17h251c5652e0fddc33E.exit, %bb13
%50 = call i8 asm sideeffect "mov.b $1, $0", "=r,*m,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hab6a8e2159c05eb1E) #5, !srcloc !3
%51 = icmp eq i8 %50, 0
br i1 %51, label %bb13, label %bb14
bb14: ; preds = %bb13
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt9HOST_MODE17he40a9ca556e9d16aE, i8 0) #5, !srcloc !3
ret void
}
; at2xt::delay
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt5delay17h633819329be4b966E(i16 %time) unnamed_addr #1 {
start:
%0 = tail call i16 asm sideeffect "mov R2, $0", "=r"() #5, !noalias !97, !srcloc !3
tail call void asm sideeffect "dint { nop", "~{memory}"() #5, !noalias !97, !srcloc !3
tail call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt7TIMEOUT17hba6367fa895c65ebE, i8 0) #5, !noalias !100, !srcloc !3
store volatile i16 %time, i16* inttoptr (i16 370 to i16*), align 2, !noalias !103
%1 = and i16 %0, 8
%2 = icmp eq i16 %1, 0
br i1 %2, label %bb2, label %bb6.i.i
bb6.i.i: ; preds = %start
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !noalias !97, !srcloc !3
br label %bb2
bb2: ; preds = %bb6.i.i, %start, %bb2
%3 = call i8 asm sideeffect "mov.b $1, $0", "=r,*m,~{memory}"(i8* nonnull @_ZN5at2xt7TIMEOUT17hba6367fa895c65ebE) #5, !srcloc !3
%4 = icmp eq i8 %3, 0
br i1 %4, label %bb2, label %bb3
bb3: ; preds = %bb2
ret void
}
; Function Attrs: nounwind optsize
define msp430_intrcc void @TIMERA0() unnamed_addr #1 {
start:
tail call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt7TIMEOUT17hba6367fa895c65ebE, i8 1) #5, !srcloc !3
store volatile i16 0, i16* inttoptr (i16 370 to i16*), align 2
ret void
}
; Function Attrs: nounwind optsize
define msp430_intrcc void @PORT1() unnamed_addr #1 {
start:
%0 = tail call i8 asm sideeffect "mov.b $1, $0", "=r,*m,~{memory}"(i8* nonnull @_ZN5at2xt9HOST_MODE17he40a9ca556e9d16aE) #5, !noalias !106, !srcloc !3
%1 = icmp eq i8 %0, 0
br i1 %1, label %bb3.i, label %bb2.i
bb2.i: ; preds = %start
%2 = load i8, i8* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.1, align 2, !alias.scope !109, !noalias !106
%3 = icmp ugt i8 %2, 9
br i1 %3, label %bb7.i, label %bb6.i
bb3.i: ; preds = %start
%4 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !112
%5 = lshr i8 %4, 4
%.lobit = and i8 %5, 1
%6 = zext i8 %.lobit to i16
%7 = load i16, i16* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.0, align 2, !alias.scope !115, !noalias !106
%8 = shl i16 %7, 1
%9 = or i16 %6, %8
store i16 %9, i16* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.0, align 2, !alias.scope !115, !noalias !106
%10 = load i8, i8* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.1, align 2, !alias.scope !115, !noalias !106
%11 = add i8 %10, 1
store i8 %11, i8* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.1, align 2, !alias.scope !115, !noalias !106
%12 = icmp ugt i8 %11, 10
br i1 %12, label %bb41.i, label %_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E.exit
bb6.i: ; preds = %bb2.i
%13 = load i16, i16* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.0, align 2, !alias.scope !118, !noalias !106
%14 = and i16 %13, 1
%15 = icmp ne i16 %14, 0
%16 = lshr i16 %13, 1
store i16 %16, i16* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.0, align 2, !alias.scope !118, !noalias !106
%17 = add i8 %2, 1
store i8 %17, i8* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.1, align 2, !alias.scope !118, !noalias !106
%18 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !106
%19 = and i8 %18, -17
%20 = or i8 %18, 16
%.sink.i = select i1 %15, i8 %20, i8 %19
store volatile i8 %.sink.i, i8* inttoptr (i16 33 to i8*), align 1, !noalias !106
%21 = load i8, i8* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.1, align 2, !alias.scope !121, !noalias !106
%22 = icmp ugt i8 %21, 9
br i1 %22, label %bb19.i, label %_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E.exit
bb7.i: ; preds = %bb2.i
%23 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !124
%24 = and i8 %23, 16
%25 = icmp eq i8 %24, 0
br i1 %25, label %bb26.i, label %_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E.exit
bb19.i: ; preds = %bb6.i
%26 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !127
%27 = or i8 %26, 1
store volatile i8 %27, i8* inttoptr (i16 33 to i8*), align 1, !noalias !127
%28 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !132
%29 = or i8 %28, 16
store volatile i8 %29, i8* inttoptr (i16 33 to i8*), align 1, !noalias !132
%30 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !137
%31 = and i8 %30, -18
store volatile i8 %31, i8* inttoptr (i16 34 to i8*), align 2, !noalias !137
br label %_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E.exit
bb26.i: ; preds = %bb7.i
tail call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hab6a8e2159c05eb1E, i8 1) #5, !noalias !106, !srcloc !3
store i8 10, i8* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.1, align 2, !alias.scope !140, !noalias !106
store i16 0, i16* @_ZN5at2xt7KEY_OUT17h5335232bc71752d3E.0, align 2, !alias.scope !140, !noalias !106
br label %_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E.exit
bb41.i: ; preds = %bb3.i
%32 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !143
%33 = and i8 %32, -2
store volatile i8 %33, i8* inttoptr (i16 33 to i8*), align 1, !noalias !143
%34 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !148
%35 = or i8 %34, 16
store volatile i8 %35, i8* inttoptr (i16 33 to i8*), align 1, !noalias !148
%36 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !153
%37 = or i8 %36, 17
store volatile i8 %37, i8* inttoptr (i16 34 to i8*), align 2, !noalias !153
%38 = load i8, i8* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.1, align 2, !alias.scope !156, !noalias !161
%39 = icmp ugt i8 %38, 10
br i1 %39, label %bb49.i, label %bb50.i
bb49.i: ; preds = %bb41.i
store i8 0, i8* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.1, align 2, !alias.scope !163, !noalias !161
%40 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !164, !noalias !106
%41 = zext i8 %40 to i16
%42 = icmp ult i8 %40, 16
br i1 %42, label %_ZN5at2xt9keybuffer13KeycodeBuffer3put17h75008d7ed377663fE.exit.i, label %panic.i.i, !prof !167
panic.i.i: ; preds = %bb49.i
; call core::panicking::panic_bounds_check
tail call fastcc void @_ZN4core9panicking18panic_bounds_check17h4114071298e9f774E(i16 %41, i16 16) #5
unreachable
_ZN5at2xt9keybuffer13KeycodeBuffer3put17h75008d7ed377663fE.exit.i: ; preds = %bb49.i
%43 = load i16, i16* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.0, align 2, !alias.scope !163, !noalias !161
%44 = getelementptr inbounds [16 x i16], [16 x i16]* bitcast ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E to [16 x i16]*), i16 0, i16 %41
store i16 %43, i16* %44, align 2, !alias.scope !164, !noalias !106
%45 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !164, !noalias !106
%46 = add i8 %45, 1
%47 = and i8 %46, 15
store i8 %47, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !164, !noalias !106
br label %bb50.i
bb50.i: ; preds = %_ZN5at2xt9keybuffer13KeycodeBuffer3put17h75008d7ed377663fE.exit.i, %bb41.i
store i8 0, i8* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.1, align 2, !alias.scope !168, !noalias !106
store i16 0, i16* @_ZN5at2xt6KEY_IN17h7267a0a6095307cdE.0, align 2, !alias.scope !168, !noalias !106
%48 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !171
%49 = or i8 %48, 1
store volatile i8 %49, i8* inttoptr (i16 33 to i8*), align 1, !noalias !171
%50 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !176
%51 = or i8 %50, 16
store volatile i8 %51, i8* inttoptr (i16 33 to i8*), align 1, !noalias !176
%52 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !181
%53 = and i8 %52, -18
store volatile i8 %53, i8* inttoptr (i16 34 to i8*), align 2, !noalias !181
br label %_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E.exit
_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E.exit: ; preds = %bb3.i, %bb6.i, %bb7.i, %bb19.i, %bb26.i, %bb50.i
%54 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !106
%55 = and i8 %54, -2
store volatile i8 %55, i8* inttoptr (i16 35 to i8*), align 1, !noalias !106
ret void
}
; Function Attrs: noreturn nounwind optsize
define i16 @main(i16, i8** nocapture readnone) unnamed_addr #2 {
top:
store volatile i16 23168, i16* inttoptr (i16 288 to i16*), align 32, !noalias !184
store volatile i8 0, i8* inttoptr (i16 34 to i8*), align 2, !noalias !188
%2 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !191
%3 = and i8 %2, -2
store volatile i8 %3, i8* inttoptr (i16 35 to i8*), align 1, !noalias !191
%4 = load volatile i8, i8* inttoptr (i16 36 to i8*), align 4, !noalias !194
%5 = or i8 %4, 1
store volatile i8 %5, i8* inttoptr (i16 36 to i8*), align 4, !noalias !194
%6 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !197
%7 = or i8 %6, 1
store volatile i8 %7, i8* inttoptr (i16 37 to i8*), align 1, !noalias !197
store volatile i8 -120, i8* inttoptr (i16 87 to i8*), align 1, !noalias !184
store volatile i8 4, i8* inttoptr (i16 88 to i8*), align 8, !noalias !184
store volatile i16 0, i16* inttoptr (i16 370 to i16*), align 2, !noalias !184
store volatile i16 656, i16* inttoptr (i16 352 to i16*), align 32, !noalias !184
store volatile i16 16, i16* inttoptr (i16 354 to i16*), align 2, !noalias !184
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h459b7ac19cfecf8fE(i8 -1) #5
br label %bb3.outer.i.i
bb3.outer.i.i: ; preds = %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i", %bb10.i.i, %bb9.i.i, %top
%fsm_driver.sroa.14.0.ph.i.i = phi i8 [ 0, %top ], [ %fsm_driver.sroa.14.1.i.i, %bb9.i.i ], [ %fsm_driver.sroa.14.1.i.i, %bb10.i.i ], [ %fsm_driver.sroa.14.1.i.i, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i" ]
%fsm_driver.sroa.10.0.ph.i.i = phi i8 [ 0, %top ], [ %fsm_driver.sroa.10.1.i.i, %bb9.i.i ], [ %fsm_driver.sroa.10.1.i.i, %bb10.i.i ], [ %fsm_driver.sroa.10.1.i.i, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i" ]
%fsm_driver.sroa.8.0.ph.i.i = phi i8 [ undef, %top ], [ %_0.sroa.22.0.i.i.i.i, %bb9.i.i ], [ %_0.sroa.22.0.i.i.i.i, %bb10.i.i ], [ %_0.sroa.22.0.i.i.i.i, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i" ]
%fsm_driver.sroa.0.0.ph.i.i = phi i8 [ 0, %top ], [ %abi_cast.sroa.0.0.extract.trunc.i.i.i, %bb9.i.i ], [ %abi_cast.sroa.0.0.extract.trunc.i.i.i, %bb10.i.i ], [ %abi_cast.sroa.0.0.extract.trunc.i.i.i, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i" ]
%loop_reply.sroa.4.0.ph.i.i = phi i8 [ 0, %top ], [ %20, %bb9.i.i ], [ %next_cmd.sroa.14.0.i.ph.i.ph.i, %bb10.i.i ], [ %55, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i" ]
%loop_reply.sroa.0.0.ph.i.i = phi i3 [ 0, %top ], [ -4, %bb9.i.i ], [ 2, %bb10.i.i ], [ 1, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i" ]
%_14.sroa.8.0.ph.i.i = phi i8 [ undef, %top ], [ %20, %bb9.i.i ], [ %next_cmd.sroa.14.0.i.ph.i.ph.i, %bb10.i.i ], [ %55, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i" ]
br label %bb3.i.i
bb3.i.i: ; preds = %bb20.i.i, %bb6.i.i, %bb6.i18.i.i, %bb3.outer.i.i
%fsm_driver.sroa.14.0.i.i = phi i8 [ %fsm_driver.sroa.14.0.ph.i.i, %bb3.outer.i.i ], [ %fsm_driver.sroa.14.1.i.i, %bb6.i18.i.i ], [ %fsm_driver.sroa.14.1.i.i, %bb6.i.i ], [ %fsm_driver.sroa.14.1.i.i, %bb20.i.i ]
%fsm_driver.sroa.10.0.i.i = phi i8 [ %fsm_driver.sroa.10.0.ph.i.i, %bb3.outer.i.i ], [ %fsm_driver.sroa.10.1.i.i, %bb6.i18.i.i ], [ %fsm_driver.sroa.10.1.i.i, %bb6.i.i ], [ %fsm_driver.sroa.10.1.i.i, %bb20.i.i ]
%fsm_driver.sroa.8.0.i.i = phi i8 [ %fsm_driver.sroa.8.0.ph.i.i, %bb3.outer.i.i ], [ %_0.sroa.22.0.i.i.i.i, %bb6.i18.i.i ], [ %_0.sroa.22.0.i.i.i.i, %bb6.i.i ], [ %_0.sroa.22.0.i.i.i.i, %bb20.i.i ]
%fsm_driver.sroa.0.0.i.i = phi i8 [ %fsm_driver.sroa.0.0.ph.i.i, %bb3.outer.i.i ], [ %abi_cast.sroa.0.0.extract.trunc.i.i.i, %bb6.i18.i.i ], [ %abi_cast.sroa.0.0.extract.trunc.i.i.i, %bb6.i.i ], [ %abi_cast.sroa.0.0.extract.trunc.i.i.i, %bb20.i.i ]
%loop_reply.sroa.4.0.i.i = phi i8 [ %loop_reply.sroa.4.0.ph.i.i, %bb3.outer.i.i ], [ %_14.sroa.8.0.ph.i.i, %bb6.i18.i.i ], [ %_14.sroa.8.0.ph.i.i, %bb6.i.i ], [ %_14.sroa.8.0.ph.i.i, %bb20.i.i ]
%loop_reply.sroa.0.0.i.i = phi i3 [ %loop_reply.sroa.0.0.ph.i.i, %bb3.outer.i.i ], [ 3, %bb6.i18.i.i ], [ 3, %bb6.i.i ], [ -3, %bb20.i.i ]
switch i3 %loop_reply.sroa.0.0.i.i, label %bb16.i.i.i.i [
i3 0, label %bb11.i.i.i.i
i3 1, label %bb12.i.i.i.i
i3 2, label %bb13.i.i.i.i
i3 3, label %bb14.i.i.i.i
i3 -4, label %bb15.i.i.i.i
i3 -3, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
]
bb3.i.i.i.i: ; preds = %bb12.i.i.i.i
switch i8 %loop_reply.sroa.4.0.i.i, label %bb25.i.i.i.i [
i8 -86, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
i8 -6, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
i8 -2, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
i8 -18, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
i8 -16, label %bb22.i.i.i.i
i8 -32, label %bb23.i.i.i.i
i8 -31, label %bb24.i.i.i.i
]
bb5.i.i.i.i: ; preds = %bb12.i.i.i.i
switch i8 %loop_reply.sroa.4.0.i.i, label %bb29.i.i.i.i [
i8 126, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
i8 119, label %bb27.i.i.i.i
i8 88, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
]
bb10.i.i.i.i: ; preds = %bb15.i.i.i.i, %bb14.i.i.i.i, %bb13.i.i.i.i, %bb12.i.i.i.i, %bb11.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
bb11.i.i.i.i: ; preds = %bb3.i.i
%cond2.i.i.i.i = icmp eq i8 %fsm_driver.sroa.0.0.i.i, 0
br i1 %cond2.i.i.i.i, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i, label %bb10.i.i.i.i
bb12.i.i.i.i: ; preds = %bb3.i.i
%trunc14.i.i.i.i = trunc i8 %fsm_driver.sroa.0.0.i.i to i3
switch i3 %trunc14.i.i.i.i, label %bb10.i.i.i.i [
i3 0, label %bb3.i.i.i.i
i3 2, label %bb5.i.i.i.i
]
bb13.i.i.i.i: ; preds = %bb3.i.i
%trunc13.i.i.i.i = trunc i8 %fsm_driver.sroa.0.0.i.i to i3
switch i3 %trunc13.i.i.i.i, label %bb10.i.i.i.i [
i3 1, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
i3 3, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
i3 -4, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
]
bb14.i.i.i.i: ; preds = %bb3.i.i
%cond1.i.i.i.i = icmp eq i8 %fsm_driver.sroa.0.0.i.i, 7
br i1 %cond1.i.i.i.i, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i, label %bb10.i.i.i.i
bb15.i.i.i.i: ; preds = %bb3.i.i
%cond.i.i.i.i = icmp eq i8 %fsm_driver.sroa.0.0.i.i, 5
br i1 %cond.i.i.i.i, label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i, label %bb10.i.i.i.i
bb16.i.i.i.i: ; preds = %bb3.i.i
unreachable
bb22.i.i.i.i: ; preds = %bb3.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
bb23.i.i.i.i: ; preds = %bb3.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
bb24.i.i.i.i: ; preds = %bb3.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
bb25.i.i.i.i: ; preds = %bb3.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
bb27.i.i.i.i: ; preds = %bb5.i.i.i.i
%8 = icmp eq i8 %fsm_driver.sroa.10.0.i.i, 0
%..i.i = select i1 %8, i16 5, i16 3
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
bb29.i.i.i.i: ; preds = %bb5.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i: ; preds = %bb29.i.i.i.i, %bb27.i.i.i.i, %bb25.i.i.i.i, %bb24.i.i.i.i, %bb23.i.i.i.i, %bb22.i.i.i.i, %bb15.i.i.i.i, %bb14.i.i.i.i, %bb13.i.i.i.i, %bb13.i.i.i.i, %bb13.i.i.i.i, %bb11.i.i.i.i, %bb10.i.i.i.i, %bb5.i.i.i.i, %bb5.i.i.i.i, %bb3.i.i.i.i, %bb3.i.i.i.i, %bb3.i.i.i.i, %bb3.i.i.i.i, %bb3.i.i
%fsm_driver.sroa.14.1.i.i = phi i8 [ %fsm_driver.sroa.14.0.i.i, %bb3.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb10.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb14.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb13.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb13.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb13.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb29.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb5.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb5.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb25.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb24.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb23.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb22.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb11.i.i.i.i ], [ %loop_reply.sroa.4.0.i.i, %bb15.i.i.i.i ], [ %fsm_driver.sroa.14.0.i.i, %bb27.i.i.i.i ]
%fsm_driver.sroa.10.1.i.i = phi i8 [ %fsm_driver.sroa.10.0.i.i, %bb3.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb10.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb14.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb13.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb13.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb13.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb29.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb5.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb5.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb25.i.i.i.i ], [ 1, %bb24.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb23.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb22.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb3.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb11.i.i.i.i ], [ %fsm_driver.sroa.10.0.i.i, %bb15.i.i.i.i ], [ 0, %bb27.i.i.i.i ]
%_0.sroa.22.0.i.i.i.i = phi i8 [ undef, %bb3.i.i ], [ undef, %bb10.i.i.i.i ], [ undef, %bb14.i.i.i.i ], [ undef, %bb13.i.i.i.i ], [ undef, %bb13.i.i.i.i ], [ undef, %bb13.i.i.i.i ], [ %loop_reply.sroa.4.0.i.i, %bb29.i.i.i.i ], [ %loop_reply.sroa.4.0.i.i, %bb5.i.i.i.i ], [ %loop_reply.sroa.4.0.i.i, %bb5.i.i.i.i ], [ %loop_reply.sroa.4.0.i.i, %bb25.i.i.i.i ], [ %loop_reply.sroa.4.0.i.i, %bb24.i.i.i.i ], [ %loop_reply.sroa.4.0.i.i, %bb23.i.i.i.i ], [ undef, %bb22.i.i.i.i ], [ undef, %bb3.i.i.i.i ], [ undef, %bb3.i.i.i.i ], [ undef, %bb3.i.i.i.i ], [ undef, %bb3.i.i.i.i ], [ undef, %bb11.i.i.i.i ], [ %fsm_driver.sroa.8.0.i.i, %bb15.i.i.i.i ], [ 119, %bb27.i.i.i.i ]
%_0.sroa.0.0.i.i.i.i = phi i16 [ 7, %bb3.i.i ], [ 6, %bb10.i.i.i.i ], [ 0, %bb14.i.i.i.i ], [ 0, %bb13.i.i.i.i ], [ 0, %bb13.i.i.i.i ], [ 0, %bb13.i.i.i.i ], [ 3, %bb29.i.i.i.i ], [ 5, %bb5.i.i.i.i ], [ 5, %bb5.i.i.i.i ], [ 1, %bb25.i.i.i.i ], [ 4, %bb24.i.i.i.i ], [ 4, %bb23.i.i.i.i ], [ 2, %bb22.i.i.i.i ], [ 0, %bb3.i.i.i.i ], [ 0, %bb3.i.i.i.i ], [ 0, %bb3.i.i.i.i ], [ 0, %bb3.i.i.i.i ], [ 0, %bb11.i.i.i.i ], [ 3, %bb15.i.i.i.i ], [ %..i.i, %bb27.i.i.i.i ]
%abi_cast.sroa.0.0.extract.trunc.i.i.i = trunc i16 %_0.sroa.0.0.i.i.i.i to i8
%trunc.i.i.i = trunc i16 %_0.sroa.0.0.i.i.i.i to i3
switch i3 %trunc.i.i.i, label %bb6.i15.i.i [
i3 0, label %bb15.i.i
i3 1, label %bb7.i.i.i
i3 2, label %bb15.i.i
i3 3, label %bb8.i.i.i
i3 -4, label %bb10.i.i
i3 -3, label %bb10.i.i.i
i3 -2, label %bb3.i.i.i
i3 -1, label %bb6.i.i
]
bb6.i15.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
unreachable
bb7.i.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
%9 = icmp ult i8 %_0.sroa.22.0.i.i.i.i, -124
br i1 %9, label %bb2.i43.i.i.i, label %bb10.i.i
bb2.i43.i.i.i: ; preds = %bb7.i.i.i
%10 = zext i8 %_0.sroa.22.0.i.i.i.i to i16
%11 = getelementptr inbounds [132 x i8], [132 x i8]* @_ZN5at2xt6keyfsm6keymap11KEYCODE_LUT17hf5fa35200b3b8ae2E, i16 0, i16 %10
%12 = load i8, i8* %11, align 1, !noalias !200
br label %bb10.i.i
bb8.i.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
%13 = icmp ult i8 %_0.sroa.22.0.i.i.i.i, -124
br i1 %13, label %bb2.i.i.i.i, label %bb10.i.i
bb2.i.i.i.i: ; preds = %bb8.i.i.i
%14 = zext i8 %_0.sroa.22.0.i.i.i.i to i16
%15 = getelementptr inbounds [132 x i8], [132 x i8]* @_ZN5at2xt6keyfsm6keymap11KEYCODE_LUT17hf5fa35200b3b8ae2E, i16 0, i16 %14
%16 = load i8, i8* %15, align 1, !noalias !200
%phitmp.i.i.i = or i8 %16, -128
br label %bb10.i.i
bb10.i.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
switch i8 %_0.sroa.22.0.i.i.i.i, label %bb3.i.i.i [
i8 126, label %bb14.i.i.i
i8 119, label %bb9.i.i
i8 88, label %bb16.i.i.i
]
bb14.i.i.i: ; preds = %bb10.i.i.i
br label %bb9.i.i
bb16.i.i.i: ; preds = %bb10.i.i.i
br label %bb9.i.i
bb3.i.i.i: ; preds = %bb10.i.i.i, %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
; call core::result::unwrap_failed
call fastcc void @_ZN4core6result13unwrap_failed17hece67d574d10e3caE() #5
unreachable
bb6.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i
%17 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
store i8 0, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !204
store i8 0, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !204
%18 = and i16 %17, 8
%19 = icmp eq i16 %18, 0
br i1 %19, label %bb3.i.i, label %bb6.i18.i.i
bb6.i18.i.i: ; preds = %bb6.i.i
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %bb3.i.i
bb9.i.i: ; preds = %bb16.i.i.i, %bb14.i.i.i, %bb10.i.i.i
%.sink.i = phi i8 [ 1, %bb14.i.i.i ], [ 4, %bb16.i.i.i ], [ 2, %bb10.i.i.i ]
%20 = xor i8 %.sink.i, %fsm_driver.sroa.14.1.i.i
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h459b7ac19cfecf8fE(i8 -19) #5
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h633819329be4b966E(i16 301) #5
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h459b7ac19cfecf8fE(i8 %20) #5
br label %bb3.outer.i.i
bb10.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i, %bb2.i.i.i.i, %bb8.i.i.i, %bb2.i43.i.i.i, %bb7.i.i.i
%next_cmd.sroa.14.0.i.ph.i.ph.i = phi i8 [ 0, %bb7.i.i.i ], [ %12, %bb2.i43.i.i.i ], [ -128, %bb8.i.i.i ], [ %phitmp.i.i.i, %bb2.i.i.i.i ], [ %_0.sroa.22.0.i.i.i.i, %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i ]
; call at2xt::send_byte_to_pc
call fastcc void @_ZN5at2xt15send_byte_to_pc17h19d1aaa30e6f50fcE(i8 %next_cmd.sroa.14.0.i.ph.i.ph.i) #5
br label %bb3.outer.i.i
bb15.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i, %_ZN5at2xt6keyfsm3Fsm10next_state17h8460ffec6e1eaee2E.exit.i.i.i, %_ZN6msp4309interrupt4free17h68546b20a7fe0f51E.exit.i.i
%21 = call i16 asm sideeffect "mov R2, $0", "=r"() #5, !srcloc !3
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
%22 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !207
%23 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !207
%24 = icmp eq i8 %22, %23
%25 = and i16 %21, 8
%26 = icmp eq i16 %25, 0
br i1 %26, label %_ZN6msp4309interrupt4free17h91c3ba435af9b8faE.exit.i.i, label %bb6.i21.i.i
bb6.i21.i.i: ; preds = %bb15.i.i
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h91c3ba435af9b8faE.exit.i.i
_ZN6msp4309interrupt4free17h91c3ba435af9b8faE.exit.i.i: ; preds = %bb15.i.i, %bb6.i21.i.i
%27 = call i16 asm sideeffect "mov R2, $0", "=r"() #5
call void asm sideeffect "dint { nop", "~{memory}"() #5
br i1 %24, label %bb18.i.i, label %bb25.i.i
bb18.i.i: ; preds = %_ZN6msp4309interrupt4free17h91c3ba435af9b8faE.exit.i.i
%28 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !210
%29 = and i8 %28, 2
%30 = icmp eq i8 %29, 0
%31 = and i16 %27, 8
%32 = icmp eq i16 %31, 0
br i1 %32, label %_ZN6msp4309interrupt4free17h68546b20a7fe0f51E.exit.i.i, label %bb6.i24.i.i
bb6.i24.i.i: ; preds = %bb18.i.i
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h68546b20a7fe0f51E.exit.i.i
_ZN6msp4309interrupt4free17h68546b20a7fe0f51E.exit.i.i: ; preds = %bb18.i.i, %bb6.i24.i.i
br i1 %30, label %bb20.i.i, label %bb15.i.i
bb20.i.i: ; preds = %_ZN6msp4309interrupt4free17h68546b20a7fe0f51E.exit.i.i
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h459b7ac19cfecf8fE(i8 -1) #5
; call at2xt::send_byte_to_pc
call fastcc void @_ZN5at2xt15send_byte_to_pc17h19d1aaa30e6f50fcE(i8 -86) #5
br label %bb3.i.i
bb25.i.i: ; preds = %_ZN6msp4309interrupt4free17h91c3ba435af9b8faE.exit.i.i
%33 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !213, !noalias !218
%34 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !213, !noalias !218
%35 = icmp eq i8 %33, %34
br i1 %35, label %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h78073186484097f5E.exit.i.i.i", label %bb3.i.i.i.i.i
bb3.i.i.i.i.i: ; preds = %bb25.i.i
%36 = zext i8 %33 to i16
%37 = icmp ult i8 %33, 16
br i1 %37, label %bb4.i.i.i.i.i, label %panic.i.i.i.i.i, !prof !167
bb4.i.i.i.i.i: ; preds = %bb3.i.i.i.i.i
%38 = getelementptr inbounds [16 x i16], [16 x i16]* bitcast ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E to [16 x i16]*), i16 0, i16 %36
%39 = load i16, i16* %38, align 2, !alias.scope !220, !noalias !218
%40 = add i8 %33, 1
%41 = and i8 %40, 15
store i8 %41, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17hec6921f8a5936870E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !220, !noalias !218
br label %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h78073186484097f5E.exit.i.i.i"
panic.i.i.i.i.i: ; preds = %bb3.i.i.i.i.i
; call core::panicking::panic_bounds_check
call fastcc void @_ZN4core9panicking18panic_bounds_check17h4114071298e9f774E(i16 %36, i16 16) #5
unreachable
"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h78073186484097f5E.exit.i.i.i": ; preds = %bb4.i.i.i.i.i, %bb25.i.i
%_3.sroa.0.0.i.i.i.i = phi i16 [ %39, %bb4.i.i.i.i.i ], [ 0, %bb25.i.i ]
%42 = and i16 %27, 8
%43 = icmp eq i16 %42, 0
br i1 %43, label %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i, label %bb6.i.i.i
bb6.i.i.i: ; preds = %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h78073186484097f5E.exit.i.i.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i
_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i: ; preds = %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h78073186484097f5E.exit.i.i.i", %bb6.i.i.i
%44 = lshr i16 %_3.sroa.0.0.i.i.i.i, 2
%45 = trunc i16 %44 to i8
%v.07.i34.i.i = lshr i16 %_3.sroa.0.0.i.i.i.i, 3
%46 = trunc i16 %v.07.i34.i.i to i8
%v.07.i.i.i = and i8 %46, 127
%47 = icmp eq i8 %v.07.i.i.i, 0
br i1 %47, label %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i", label %bb4.i.i.i
bb4.i.i.i: ; preds = %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i, %bb4.i.i.i
%v.010.i.i.i = phi i8 [ %v.0.i.i.i, %bb4.i.i.i ], [ %v.07.i.i.i, %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i ]
%r.09.i.i.i = phi i8 [ %50, %bb4.i.i.i ], [ %45, %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i ]
%s.08.i.i.i = phi i16 [ %51, %bb4.i.i.i ], [ 7, %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i ]
%48 = shl i8 %r.09.i.i.i, 1
%49 = and i8 %v.010.i.i.i, 1
%50 = or i8 %48, %49
%51 = add nsw i16 %s.08.i.i.i, -1
%v.0.i.i.i = lshr i8 %v.010.i.i.i, 1
%52 = icmp eq i8 %v.0.i.i.i, 0
br i1 %52, label %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i", label %bb4.i.i.i
"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc5ff5f2443319117E.exit.i.i": ; preds = %bb4.i.i.i, %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i
%s.0.lcssa.i.i.i = phi i16 [ 7, %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i ], [ %51, %bb4.i.i.i ]
%r.0.lcssa.i.i.i = phi i8 [ %45, %_ZN6msp4309interrupt4free17hbd422bc4667f6f02E.exit.i.i ], [ %50, %bb4.i.i.i ]
%53 = trunc i16 %s.0.lcssa.i.i.i to i8
%54 = and i8 %53, 7
%55 = shl i8 %r.0.lcssa.i.i.i, %54
br label %bb3.outer.i.i
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @PORT2() unnamed_addr #3 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #5, !srcloc !221
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @TIMERA1() unnamed_addr #3 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #5, !srcloc !222
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @WDT() unnamed_addr #3 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #5, !srcloc !223
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @COMPARATORA() unnamed_addr #3 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #5, !srcloc !224
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @NMI() unnamed_addr #3 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #5, !srcloc !225
unreachable
}
; Function Attrs: nounwind optsize
define weak msp430_intrcc void @DEFAULT_HANDLER() unnamed_addr #1 {
br label %1
; <label>:1: ; preds = %1, %0
tail call void asm sideeffect "", "~{memory}"() #5, !srcloc !3
br label %1
}
; msp430_rt::reset_handler::trampoline
; Function Attrs: naked noreturn nounwind optsize
define internal msp430_intrcc void @_ZN9msp430_rt13reset_handler10trampoline17h919d7c2d7bc2b722E() unnamed_addr #4 section ".vector_table.reset_handler" {
tail call void asm sideeffect "mov #_stack_start, r1\0A br $0", "i"(void ()* nonnull @_ZN9msp430_rt13reset_handler17h3b3f14d30758a185E) #5, !srcloc !226
unreachable
}
; msp430_rt::reset_handler
; Function Attrs: noreturn nounwind optsize
define internal void @_ZN9msp430_rt13reset_handler17h3b3f14d30758a185E() unnamed_addr #2 {
br i1 icmp ult (i16* @_sbss, i16* @_ebss), label %.preheader1, label %.loopexit2
.preheader1: ; preds = %0, %.preheader1
%1 = phi i16* [ %2, %.preheader1 ], [ @_sbss, %0 ]
store volatile i16 0, i16* %1, align 2
%2 = getelementptr inbounds i16, i16* %1, i16 1
%3 = icmp ult i16* %2, @_ebss
br i1 %3, label %.preheader1, label %.loopexit2
.loopexit2: ; preds = %.preheader1, %0
br i1 icmp ult (i16* @_sdata, i16* @_edata), label %.preheader, label %.loopexit
.preheader: ; preds = %.loopexit2, %.preheader
%4 = phi i16* [ %7, %.preheader ], [ @_sdata, %.loopexit2 ]
%5 = phi i16* [ %8, %.preheader ], [ @_sidata, %.loopexit2 ]
%6 = load i16, i16* %5, align 2
store i16 %6, i16* %4, align 2
%7 = getelementptr inbounds i16, i16* %4, i16 1
%8 = getelementptr inbounds i16, i16* %5, i16 1
%9 = icmp ult i16* %7, @_edata
br i1 %9, label %.preheader, label %.loopexit
.loopexit: ; preds = %.preheader, %.loopexit2
%10 = tail call i16 @main(i16 undef, i8** undef)
unreachable
}
; core::panicking::panic_bounds_check
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core9panicking18panic_bounds_check17h4114071298e9f774E(i16, i16) unnamed_addr #0 {
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17h82d3568bc13c41f0E()
unreachable
}
; core::panicking::panic_fmt
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core9panicking9panic_fmt17h82d3568bc13c41f0E() unnamed_addr #0 {
call void asm sideeffect "dint { nop", "~{memory}"() #5, !srcloc !3
br label %1
; <label>:1: ; preds = %1, %0
call void asm sideeffect "", "~{memory}"() #5, !srcloc !3
br label %1
}
attributes #0 = { cold noinline noreturn nounwind optsize }
attributes #1 = { nounwind optsize }
attributes #2 = { noreturn nounwind optsize }
attributes #3 = { naked nounwind optsize }
attributes #4 = { naked noreturn nounwind optsize }
attributes #5 = { nounwind }
!0 = !{!1}
!1 = distinct !{!1, !2, !"_ZN6msp4309interrupt4free17h1a708e697eb3714dE: %f.1"}
!2 = distinct !{!2, !"_ZN6msp4309interrupt4free17h1a708e697eb3714dE"}
!3 = !{i32 0}
!4 = !{!5, !1}
!5 = distinct !{!5, !6, !"_ZN5at2xt11send_xt_bit28_$u7b$$u7b$closure$u7d$$u7d$17h87b22ab4408c2f0bE: %arg0.1"}
!6 = distinct !{!6, !"_ZN5at2xt11send_xt_bit28_$u7b$$u7b$closure$u7d$$u7d$17h87b22ab4408c2f0bE"}
!7 = !{!8, !10, !5, !1}
!8 = distinct !{!8, !9, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E: %f"}
!9 = distinct !{!9, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E"}
!10 = distinct !{!10, !11, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E: argument 0"}
!11 = distinct !{!11, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E"}
!12 = !{!13, !15}
!13 = distinct !{!13, !14, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!14 = distinct !{!14, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!15 = distinct !{!15, !16, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!16 = distinct !{!16, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!17 = !{!18}
!18 = distinct !{!18, !19, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E: %self"}
!19 = distinct !{!19, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E"}
!20 = !{!21}
!21 = distinct !{!21, !22, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E: %self"}
!22 = distinct !{!22, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E"}
!23 = !{!24, !26}
!24 = distinct !{!24, !25, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hf2e7ce4554e3e3e9E: %f"}
!25 = distinct !{!25, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hf2e7ce4554e3e3e9E"}
!26 = distinct !{!26, !27, !"_ZN5at2xt6driver12KeyboardPins6xt_out17h6a74440cc3368a6fE: %self"}
!27 = distinct !{!27, !"_ZN5at2xt6driver12KeyboardPins6xt_out17h6a74440cc3368a6fE"}
!28 = !{!29, !26}
!29 = distinct !{!29, !30, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h308c90e8ced83887E: %f"}
!30 = distinct !{!30, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h308c90e8ced83887E"}
!31 = !{!32, !34}
!32 = distinct !{!32, !33, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hf08d428838581fc3E: %f"}
!33 = distinct !{!33, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hf08d428838581fc3E"}
!34 = distinct !{!34, !35, !"_ZN5at2xt6driver12KeyboardPins5xt_in17ha2fc9a8b905ab22fE: argument 0"}
!35 = distinct !{!35, !"_ZN5at2xt6driver12KeyboardPins5xt_in17ha2fc9a8b905ab22fE"}
!36 = !{!37, !34}
!37 = distinct !{!37, !38, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hd0de1ba3a1370e46E: %f"}
!38 = distinct !{!38, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hd0de1ba3a1370e46E"}
!39 = !{!40}
!40 = distinct !{!40, !41, !"_ZN6msp4309interrupt4free17h9a835609e5aec4b9E: %f.1"}
!41 = distinct !{!41, !"_ZN6msp4309interrupt4free17h9a835609e5aec4b9E"}
!42 = !{!43, !45}
!43 = distinct !{!43, !44, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf8ba1d7c3131156fE: %self"}
!44 = distinct !{!44, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf8ba1d7c3131156fE"}
!45 = distinct !{!45, !46, !"_ZN5at2xt9keybuffer6KeyOut3put17h22a5c9609cbab387E: %self"}
!46 = distinct !{!46, !"_ZN5at2xt9keybuffer6KeyOut3put17h22a5c9609cbab387E"}
!47 = !{!48, !40}
!48 = distinct !{!48, !49, !"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h856f604ba451c659E: %arg0.1"}
!49 = distinct !{!49, !"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h856f604ba451c659E"}
!50 = !{!45}
!51 = !{!52, !54, !48, !40}
!52 = distinct !{!52, !53, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17he96f06529043d566E: %f"}
!53 = distinct !{!53, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17he96f06529043d566E"}
!54 = distinct !{!54, !55, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int17h9f1378b862138268E: argument 0"}
!55 = distinct !{!55, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int17h9f1378b862138268E"}
!56 = !{!57}
!57 = distinct !{!57, !58, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E: %self"}
!58 = distinct !{!58, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E"}
!59 = !{!60, !62}
!60 = distinct !{!60, !61, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E: %f"}
!61 = distinct !{!61, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E"}
!62 = distinct !{!62, !63, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E: argument 0"}
!63 = distinct !{!63, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E"}
!64 = !{!65, !67}
!65 = distinct !{!65, !66, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!66 = distinct !{!66, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!67 = distinct !{!67, !68, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!68 = distinct !{!68, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!69 = !{!70}
!70 = distinct !{!70, !71, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hd3451b2cb2c20675E: %f"}
!71 = distinct !{!71, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hd3451b2cb2c20675E"}
!72 = !{!73, !75}
!73 = distinct !{!73, !74, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E: %f"}
!74 = distinct !{!74, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E"}
!75 = distinct !{!75, !76, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E: argument 0"}
!76 = distinct !{!76, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E"}
!77 = !{!78, !80}
!78 = distinct !{!78, !79, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!79 = distinct !{!79, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!80 = distinct !{!80, !81, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!81 = distinct !{!81, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!82 = !{!83, !85}
!83 = distinct !{!83, !84, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hadf42ca0a575354eE: %f"}
!84 = distinct !{!84, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hadf42ca0a575354eE"}
!85 = distinct !{!85, !86, !"_ZN5at2xt6driver3Pin5mk_in17h57eedb63f7806745E: argument 0"}
!86 = distinct !{!86, !"_ZN5at2xt6driver3Pin5mk_in17h57eedb63f7806745E"}
!87 = !{!88, !90}
!88 = distinct !{!88, !89, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h8f90a95fc0d15828E: %f"}
!89 = distinct !{!89, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h8f90a95fc0d15828E"}
!90 = distinct !{!90, !91, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17hee39c6ad9d8dc401E: argument 0"}
!91 = distinct !{!91, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17hee39c6ad9d8dc401E"}
!92 = !{!93, !95}
!93 = distinct !{!93, !94, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h51dbc140d2cea061E: %f"}
!94 = distinct !{!94, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h51dbc140d2cea061E"}
!95 = distinct !{!95, !96, !"_ZN5at2xt6driver12KeyboardPins17enable_at_clk_int17h7ab0cb9b7f12f70aE: argument 0"}
!96 = distinct !{!96, !"_ZN5at2xt6driver12KeyboardPins17enable_at_clk_int17h7ab0cb9b7f12f70aE"}
!97 = !{!98}
!98 = distinct !{!98, !99, !"_ZN6msp4309interrupt4free17hf161e3699fdcfde1E: %f.1"}
!99 = distinct !{!99, !"_ZN6msp4309interrupt4free17hf161e3699fdcfde1E"}
!100 = !{!101, !98}
!101 = distinct !{!101, !102, !"_ZN5at2xt11start_timer28_$u7b$$u7b$closure$u7d$$u7d$17h0c59564d762992a9E: %arg0.1"}
!102 = distinct !{!102, !"_ZN5at2xt11start_timer28_$u7b$$u7b$closure$u7d$$u7d$17h0c59564d762992a9E"}
!103 = !{!104, !101, !98}
!104 = distinct !{!104, !105, !"_ZN11msp430g22118timer_a26taccr047_$LT$impl$u20$msp430g2211..timer_a2..TACCR0$GT$5write17h156a8e418900a53aE: %f"}
!105 = distinct !{!105, !"_ZN11msp430g22118timer_a26taccr047_$LT$impl$u20$msp430g2211..timer_a2..TACCR0$GT$5write17h156a8e418900a53aE"}
!106 = !{!107}
!107 = distinct !{!107, !108, !"_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E: %r"}
!108 = distinct !{!108, !"_ZN5at2xt13porta_handler17hb3fdbb79c7fa5106E"}
!109 = !{!110}
!110 = distinct !{!110, !111, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf8ba1d7c3131156fE: %self"}
!111 = distinct !{!111, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf8ba1d7c3131156fE"}
!112 = !{!113, !107}
!113 = distinct !{!113, !114, !"_ZN5at2xt6driver3Pin6is_set17hb97bb1b1bac18208E: %self"}
!114 = distinct !{!114, !"_ZN5at2xt6driver3Pin6is_set17hb97bb1b1bac18208E"}
!115 = !{!116}
!116 = distinct !{!116, !117, !"_ZN5at2xt9keybuffer5KeyIn8shift_in17h0c53970a3592b665E: %self"}
!117 = distinct !{!117, !"_ZN5at2xt9keybuffer5KeyIn8shift_in17h0c53970a3592b665E"}
!118 = !{!119}
!119 = distinct !{!119, !120, !"_ZN5at2xt9keybuffer6KeyOut9shift_out17h94c95983ef850b98E: %self"}
!120 = distinct !{!120, !"_ZN5at2xt9keybuffer6KeyOut9shift_out17h94c95983ef850b98E"}
!121 = !{!122}
!122 = distinct !{!122, !123, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf8ba1d7c3131156fE: %self"}
!123 = distinct !{!123, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf8ba1d7c3131156fE"}
!124 = !{!125, !107}
!125 = distinct !{!125, !126, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E: %self"}
!126 = distinct !{!126, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E"}
!127 = !{!128, !130}
!128 = distinct !{!128, !129, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!129 = distinct !{!129, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!130 = distinct !{!130, !131, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!131 = distinct !{!131, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!132 = !{!133, !135}
!133 = distinct !{!133, !134, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!134 = distinct !{!134, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!135 = distinct !{!135, !136, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!136 = distinct !{!136, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!137 = !{!138}
!138 = distinct !{!138, !139, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17heb10f4be7496aa53E: %f"}
!139 = distinct !{!139, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17heb10f4be7496aa53E"}
!140 = !{!141}
!141 = distinct !{!141, !142, !"_ZN5at2xt9keybuffer6KeyOut5clear17h909da2b06b1b55e3E: %self"}
!142 = distinct !{!142, !"_ZN5at2xt9keybuffer6KeyOut5clear17h909da2b06b1b55e3E"}
!143 = !{!144, !146}
!144 = distinct !{!144, !145, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E: %f"}
!145 = distinct !{!145, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hef4bdffaa7dc9b21E"}
!146 = distinct !{!146, !147, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E: argument 0"}
!147 = distinct !{!147, !"_ZN5at2xt6driver3Pin5unset17h0f91ec36c923f000E"}
!148 = !{!149, !151}
!149 = distinct !{!149, !150, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!150 = distinct !{!150, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!151 = distinct !{!151, !152, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!152 = distinct !{!152, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!153 = !{!154}
!154 = distinct !{!154, !155, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hd3451b2cb2c20675E: %f"}
!155 = distinct !{!155, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hd3451b2cb2c20675E"}
!156 = !{!157, !159}
!157 = distinct !{!157, !158, !"_ZN5at2xt9keybuffer5KeyIn7is_full17h757d02d13f46359dE: %self"}
!158 = distinct !{!158, !"_ZN5at2xt9keybuffer5KeyIn7is_full17h757d02d13f46359dE"}
!159 = distinct !{!159, !160, !"_ZN5at2xt9keybuffer5KeyIn4take17hc3f707ce6bb5df72E: %self"}
!160 = distinct !{!160, !"_ZN5at2xt9keybuffer5KeyIn4take17hc3f707ce6bb5df72E"}
!161 = !{!162, !107}
!162 = distinct !{!162, !160, !"_ZN5at2xt9keybuffer5KeyIn4take17hc3f707ce6bb5df72E: argument 0"}
!163 = !{!159}
!164 = !{!165}
!165 = distinct !{!165, !166, !"_ZN5at2xt9keybuffer13KeycodeBuffer3put17h75008d7ed377663fE: %self"}
!166 = distinct !{!166, !"_ZN5at2xt9keybuffer13KeycodeBuffer3put17h75008d7ed377663fE"}
!167 = !{!"branch_weights", i32 2000, i32 1}
!168 = !{!169}
!169 = distinct !{!169, !170, !"_ZN5at2xt9keybuffer5KeyIn5clear17hd6306982273c160dE: %self"}
!170 = distinct !{!170, !"_ZN5at2xt9keybuffer5KeyIn5clear17hd6306982273c160dE"}
!171 = !{!172, !174}
!172 = distinct !{!172, !173, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!173 = distinct !{!173, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!174 = distinct !{!174, !175, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!175 = distinct !{!175, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!176 = !{!177, !179}
!177 = distinct !{!177, !178, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE: %f"}
!178 = distinct !{!178, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h1d660d712ba0efddE"}
!179 = distinct !{!179, !180, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E: argument 0"}
!180 = distinct !{!180, !"_ZN5at2xt6driver3Pin3set17h79f53515d92aa9c4E"}
!181 = !{!182}
!182 = distinct !{!182, !183, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17heb10f4be7496aa53E: %f"}
!183 = distinct !{!183, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17heb10f4be7496aa53E"}
!184 = !{!185, !187}
!185 = distinct !{!185, !186, !"_ZN5at2xt4init17h8bc2a11aa2dadb01E: %p"}
!186 = distinct !{!186, !"_ZN5at2xt4init17h8bc2a11aa2dadb01E"}
!187 = distinct !{!187, !186, !"_ZN5at2xt4init17h8bc2a11aa2dadb01E: %r"}
!188 = !{!189, !185, !187}
!189 = distinct !{!189, !190, !"_ZN5at2xt6driver12KeyboardPins4idle17h83c5daa78f254ad7E: argument 0"}
!190 = distinct !{!190, !"_ZN5at2xt6driver12KeyboardPins4idle17h83c5daa78f254ad7E"}
!191 = !{!192, !189, !185, !187}
!192 = distinct !{!192, !193, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17hc408da19872446beE: %f"}
!193 = distinct !{!193, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17hc408da19872446beE"}
!194 = !{!195, !189, !185, !187}
!195 = distinct !{!195, !196, !"_ZN11msp430g22118port_1_25p1ies46_$LT$impl$u20$msp430g2211..port_1_2..P1IES$GT$6modify17h24ad5a660c9ec0b4E: %f"}
!196 = distinct !{!196, !"_ZN11msp430g22118port_1_25p1ies46_$LT$impl$u20$msp430g2211..port_1_2..P1IES$GT$6modify17h24ad5a660c9ec0b4E"}
!197 = !{!198, !189, !185, !187}
!198 = distinct !{!198, !199, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h45d24d00bcabf1d2E: %f"}
!199 = distinct !{!199, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h45d24d00bcabf1d2E"}
!200 = !{!201, !203}
!201 = distinct !{!201, !202, !"_ZN5at2xt6keyfsm3Fsm3run17hfe2d07343f80d783E: %self"}
!202 = distinct !{!202, !"_ZN5at2xt6keyfsm3Fsm3run17hfe2d07343f80d783E"}
!203 = distinct !{!203, !202, !"_ZN5at2xt6keyfsm3Fsm3run17hfe2d07343f80d783E: %curr_reply"}
!204 = !{!205}
!205 = distinct !{!205, !206, !"_ZN5at2xt9keybuffer13KeycodeBuffer5flush17hb85bd620167bbd0bE: %self"}
!206 = distinct !{!206, !"_ZN5at2xt9keybuffer13KeycodeBuffer5flush17hb85bd620167bbd0bE"}
!207 = !{!208}
!208 = distinct !{!208, !209, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17h744de7a72ed770b1E: %self"}
!209 = distinct !{!209, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17h744de7a72ed770b1E"}
!210 = !{!211}
!211 = distinct !{!211, !212, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E: %self"}
!212 = distinct !{!212, !"_ZN5at2xt6driver3Pin8is_unset17h236171e93de038d9E"}
!213 = !{!214, !216}
!214 = distinct !{!214, !215, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17h744de7a72ed770b1E: %self"}
!215 = distinct !{!215, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17h744de7a72ed770b1E"}
!216 = distinct !{!216, !217, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hf130d909b8da9401E: %self"}
!217 = distinct !{!217, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hf130d909b8da9401E"}
!218 = !{!219}
!219 = distinct !{!219, !217, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hf130d909b8da9401E: argument 0"}
!220 = !{!216}
!221 = !{i32 3}
!222 = !{i32 4}
!223 = !{i32 6}
!224 = !{i32 7}
!225 = !{i32 8}
!226 = !{i32 2}
; ModuleID = 'at2xt0-647076b93390d68df3f10d3366a44522.rs'
source_filename = "at2xt0-647076b93390d68df3f10d3366a44522.rs"
target datalayout = "e-m:e-p:16:16-i32:16-i64:16-f32:16-f64:16-a:8-n8:16-S16"
target triple = "msp430-none--elf"
%"msp430g2211::Peripherals" = type { [0 x i16], %"msp430g2211::SPECIAL_FUNCTION"*, [0 x i16], %"msp430g2211::COMPARATOR_A"*, [0 x i16], %"msp430g2211::PORT_1_2"*, [0 x i16], %"msp430g2211::FLASH"*, [0 x i16], %"msp430g2211::WATCHDOG_TIMER"*, [0 x i16], %"msp430g2211::SYSTEM_CLOCK"*, [0 x i16], %"msp430g2211::TIMER_A2"*, [0 x i16], { i8, i8 }*, [0 x i16] }
%"msp430g2211::SPECIAL_FUNCTION" = type { [0 x i8], %"msp430g2211::special_function::RegisterBlock", [0 x i8] }
%"msp430g2211::special_function::RegisterBlock" = type { [0 x i8], i8, [0 x i8], [1 x i8], [0 x i8], i8, [0 x i8] }
%"msp430g2211::COMPARATOR_A" = type { [0 x i8], %"msp430g2211::comparator_a::RegisterBlock", [0 x i8] }
%"msp430g2211::comparator_a::RegisterBlock" = type { [0 x i8], [1 x i8], [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }
%"msp430g2211::PORT_1_2" = type { [0 x i8], %"msp430g2211::port_1_2::RegisterBlock", [0 x i8] }
%"msp430g2211::port_1_2::RegisterBlock" = type { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }
%"msp430g2211::FLASH" = type { [0 x i16], %"msp430g2211::flash::RegisterBlock", [0 x i16] }
%"msp430g2211::flash::RegisterBlock" = type { [0 x i16], i16, [0 x i16], i16, [0 x i16], i16, [0 x i16] }
%"msp430g2211::WATCHDOG_TIMER" = type { [0 x i16], %"msp430g2211::watchdog_timer::RegisterBlock", [0 x i16] }
%"msp430g2211::watchdog_timer::RegisterBlock" = type { [0 x i16], i16, [0 x i16] }
%"msp430g2211::SYSTEM_CLOCK" = type { [0 x i8], %"msp430g2211::system_clock::RegisterBlock", [0 x i8] }
%"msp430g2211::system_clock::RegisterBlock" = type { [0 x i8], [1 x i8], [0 x i8], i8, [0 x i8], [2 x i8], [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }
%"msp430g2211::TIMER_A2" = type { [0 x i16], %"msp430g2211::timer_a2::RegisterBlock", [0 x i16] }
%"msp430g2211::timer_a2::RegisterBlock" = type { [0 x i16], i16, [0 x i8], [48 x i8], [0 x i8], i16, [0 x i16], i16, [0 x i16], i16, [0 x i8], [10 x i8], [0 x i8], i16, [0 x i16], i16, [0 x i16], i16, [0 x i16] }
%_initResources = type { [0 x i16], %"static_ref::Static<driver::KeyboardPins>"*, [0 x i16], %"static_ref::Static<keybuffer::KeycodeBuffer>"*, [0 x i16], { i16, i8 }*, [0 x i16], { i16, i8 }*, [0 x i16] }
%"static_ref::Static<driver::KeyboardPins>" = type { [0 x i8], %"driver::KeyboardPins", [0 x i8] }
%"driver::KeyboardPins" = type { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }
%"static_ref::Static<keybuffer::KeycodeBuffer>" = type { [0 x i16], %"keybuffer::KeycodeBuffer", [0 x i16] }
%"keybuffer::KeycodeBuffer" = type { [0 x i16], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }
@_ZN5at2xt6keyfsm6keymap11KEYCODE_LUT17hd2a2e89289bf8e5bE = internal unnamed_addr constant [132 x i8] c"\00C\00?=;<X\00DB@>\0F)\00\008*\00\1D\10\02\00\00\00,\1F\1E\11\03\00\00.- \12\05\04\00\009/!\14\13\06\00\0010#\22\15\07\00\00\002$\16\08\09\00\003%\17\18\0B\0A\00\0045&'\19\0C\00\00\00(\00\1A\0D\00\00:6\1C\1B\00+\00\00\00\00\00\00\00\00\0E\00\00O\00KG\00\00\00RSPLMH\01EWNQJ7IF\00\00\00\00A", align 1
@_ZN5at2xt7TIMEOUT17h83cd8770e29451d6E = internal global i8 0, align 1
@_ZN5at2xt9HOST_MODE17hce70b3616da68440E = internal global i8 0, align 1
@_ZN5at2xt10DEVICE_ACK17hdae858d936b7fb26E = internal global i8 0, align 1
@_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E = internal global { i16, i8 } zeroinitializer, align 2
@_ZN5at2xt7KEY_OUT17h32046a878965574fE = internal global { i16, i8 } { i16 0, i8 10 }, align 2
@_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E = internal global { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] } { [0 x i8] undef, { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] } { [0 x i8] undef, { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] } { [0 x i8] undef, [16 x i16] zeroinitializer, [0 x i8] undef, i8 0, [0 x i8] undef, i8 0, [0 x i8] undef }, [0 x i8] undef }, [0 x i8] undef }, align 2
@_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E = internal global { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] } { [0 x i8] undef, { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] } { [0 x i8] undef, { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] } { [0 x i8] undef, i8 0, [0 x i8] undef, i8 4, [0 x i8] undef, i8 2, [0 x i8] undef, i8 3, [0 x i8] undef, i8 1, [0 x i8] undef }, [0 x i8] undef }, [0 x i8] undef }, align 1
@INTERRUPTS = constant { {}*, {}*, void ()*, void ()*, {}*, {}*, {}*, {}*, void ()*, void ()*, void ()*, void ()*, {}*, {}*, void ()* } { {}* null, {}* null, void ()* @PORT1, void ()* @PORT2, {}* null, {}* null, {}* null, {}* null, void ()* @TIMERA1, void ()* @TIMERA0, void ()* @WDT, void ()* @COMPARATORA, {}* null, {}* null, void ()* @NMI }, section ".vector_table.interrupts", align 2
@_ZN9msp430_rt13reset_handler12RESET_VECTOR17hde3e5103417d5752E = internal constant void ()* @_ZN9msp430_rt13reset_handler10trampoline17h4fb15eb8d7985f9dE, section ".vector_table.reset_vector", align 2
@_ZN9msp430_rt4KEEP17h98f7f5159dd9a21eE = internal constant void ()* @DEFAULT_HANDLER, align 2
@_sbss = external global i16
@_ebss = external global i16
@_sdata = external global i16
@_edata = external global i16
@_sidata = external local_unnamed_addr global i16
@llvm.used = appending global [3 x i8*] [i8* bitcast ({ {}*, {}*, void ()*, void ()*, {}*, {}*, {}*, {}*, void ()*, void ()*, void ()*, void ()*, {}*, {}*, void ()* }* @INTERRUPTS to i8*), i8* bitcast (void ()** @_ZN9msp430_rt13reset_handler12RESET_VECTOR17hde3e5103417d5752E to i8*), i8* bitcast (void ()** @_ZN9msp430_rt4KEEP17h98f7f5159dd9a21eE to i8*)], section "llvm.metadata"
; core::result::unwrap_failed
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core6result13unwrap_failed17hc9b5851d08fd968eE() unnamed_addr #0 {
start:
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17h13cf1b86bcd276a6E()
unreachable
}
; at2xt::init
; Function Attrs: norecurse nounwind optsize
define internal fastcc void @_ZN5at2xt4init17h4ecbfb266b542af1E(%"msp430g2211::Peripherals"* noalias nocapture readonly dereferenceable(16) %p, %_initResources* noalias nocapture readonly dereferenceable(8) %r) unnamed_addr #1 {
start:
%0 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %p, i16 0, i32 9
%1 = bitcast %"msp430g2211::WATCHDOG_TIMER"** %0 to %"msp430g2211::watchdog_timer::RegisterBlock"**
%2 = load %"msp430g2211::watchdog_timer::RegisterBlock"*, %"msp430g2211::watchdog_timer::RegisterBlock"** %1, align 2, !nonnull !0
%3 = getelementptr inbounds %"msp430g2211::watchdog_timer::RegisterBlock", %"msp430g2211::watchdog_timer::RegisterBlock"* %2, i16 0, i32 0, i16 0
store volatile i16 23168, i16* %3, align 2
%4 = bitcast %_initResources* %r to %"driver::KeyboardPins"**
%5 = load %"driver::KeyboardPins"*, %"driver::KeyboardPins"** %4, align 2, !nonnull !0
%6 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %p, i16 0, i32 5
%7 = load %"msp430g2211::PORT_1_2"*, %"msp430g2211::PORT_1_2"** %6, align 2, !nonnull !0
%8 = getelementptr inbounds %"msp430g2211::PORT_1_2", %"msp430g2211::PORT_1_2"* %7, i16 0, i32 1, i32 5
store volatile i8 0, i8* %8, align 1, !noalias !1
%9 = getelementptr inbounds %"msp430g2211::PORT_1_2", %"msp430g2211::PORT_1_2"* %7, i16 0, i32 1, i32 7
%10 = load volatile i8, i8* %9, align 1, !noalias !4
%11 = getelementptr inbounds %"driver::KeyboardPins", %"driver::KeyboardPins"* %5, i16 0, i32 0, i16 0
%12 = load i8, i8* %11, align 1, !alias.scope !7, !noalias !10
%13 = and i8 %12, 7
%14 = shl i8 1, %13
%15 = xor i8 %14, -1
%16 = and i8 %10, %15
store volatile i8 %16, i8* %9, align 1, !noalias !4
%17 = getelementptr inbounds %"msp430g2211::PORT_1_2", %"msp430g2211::PORT_1_2"* %7, i16 0, i32 1, i32 9
%18 = load volatile i8, i8* %17, align 1, !noalias !15
%19 = or i8 %18, %14
store volatile i8 %19, i8* %17, align 1, !noalias !15
%20 = getelementptr inbounds %"msp430g2211::PORT_1_2", %"msp430g2211::PORT_1_2"* %7, i16 0, i32 1, i32 11
%21 = load volatile i8, i8* %20, align 1, !noalias !18
%22 = or i8 %21, %14
store volatile i8 %22, i8* %20, align 1, !noalias !18
%23 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %p, i16 0, i32 11
%24 = load %"msp430g2211::SYSTEM_CLOCK"*, %"msp430g2211::SYSTEM_CLOCK"** %23, align 2, !nonnull !0
%25 = getelementptr inbounds %"msp430g2211::SYSTEM_CLOCK", %"msp430g2211::SYSTEM_CLOCK"* %24, i16 0, i32 1, i32 9
store volatile i8 -120, i8* %25, align 1
%26 = getelementptr inbounds %"msp430g2211::SYSTEM_CLOCK", %"msp430g2211::SYSTEM_CLOCK"* %24, i16 0, i32 1, i32 11
store volatile i8 4, i8* %26, align 1
%27 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %p, i16 0, i32 13
%28 = load %"msp430g2211::TIMER_A2"*, %"msp430g2211::TIMER_A2"** %27, align 2, !nonnull !0
%29 = getelementptr inbounds %"msp430g2211::TIMER_A2", %"msp430g2211::TIMER_A2"* %28, i16 0, i32 1, i32 15
store volatile i16 0, i16* %29, align 2
%30 = getelementptr inbounds %"msp430g2211::TIMER_A2", %"msp430g2211::TIMER_A2"* %28, i16 0, i32 1, i32 5
store volatile i16 656, i16* %30, align 2
%31 = getelementptr inbounds %"msp430g2211::TIMER_A2", %"msp430g2211::TIMER_A2"* %28, i16 0, i32 1, i32 7
store volatile i16 16, i16* %31, align 2
ret void
}
; at2xt::idle
; Function Attrs: noreturn nounwind optsize
define internal fastcc void @_ZN5at2xt4idle17hf375741b8480bb02E() unnamed_addr #2 {
start:
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h4b442f1bfb7caa2aE(i8 -1)
br label %bb3.outer
bb3.outer: ; preds = %bb3.outer.backedge, %start
%fsm_driver.sroa.14.0.ph = phi i8 [ 0, %start ], [ %fsm_driver.sroa.14.1, %bb3.outer.backedge ]
%fsm_driver.sroa.10.0.ph = phi i8 [ 0, %start ], [ %fsm_driver.sroa.10.1, %bb3.outer.backedge ]
%fsm_driver.sroa.8.0.ph = phi i8 [ undef, %start ], [ %_0.sroa.22.0.i.i, %bb3.outer.backedge ]
%fsm_driver.sroa.0.0.ph = phi i8 [ 0, %start ], [ %next_state.sroa.0.0.extract.trunc.i, %bb3.outer.backedge ]
%loop_reply.sroa.4.0.ph = phi i8 [ 0, %start ], [ %loop_reply.sroa.4.0.ph.be, %bb3.outer.backedge ]
%loop_reply.sroa.0.0.ph = phi i3 [ 0, %start ], [ %loop_reply.sroa.0.0.ph.be, %bb3.outer.backedge ]
%_14.sroa.8.0.ph = phi i8 [ undef, %start ], [ %loop_reply.sroa.4.0.ph.be, %bb3.outer.backedge ]
br label %bb3
bb3: ; preds = %bb3.backedge, %bb3.outer
%fsm_driver.sroa.14.0 = phi i8 [ %fsm_driver.sroa.14.0.ph, %bb3.outer ], [ %fsm_driver.sroa.14.1, %bb3.backedge ]
%fsm_driver.sroa.10.0 = phi i8 [ %fsm_driver.sroa.10.0.ph, %bb3.outer ], [ %fsm_driver.sroa.10.1, %bb3.backedge ]
%fsm_driver.sroa.8.0 = phi i8 [ %fsm_driver.sroa.8.0.ph, %bb3.outer ], [ %_0.sroa.22.0.i.i, %bb3.backedge ]
%fsm_driver.sroa.0.0 = phi i8 [ %fsm_driver.sroa.0.0.ph, %bb3.outer ], [ %next_state.sroa.0.0.extract.trunc.i, %bb3.backedge ]
%loop_reply.sroa.4.0 = phi i8 [ %loop_reply.sroa.4.0.ph, %bb3.outer ], [ %_14.sroa.8.0.ph, %bb3.backedge ]
%loop_reply.sroa.0.0 = phi i3 [ %loop_reply.sroa.0.0.ph, %bb3.outer ], [ %loop_reply.sroa.0.0.be, %bb3.backedge ]
switch i3 %loop_reply.sroa.0.0, label %bb16.i.i [
i3 0, label %bb11.i.i
i3 1, label %bb12.i.i
i3 2, label %bb13.i.i
i3 3, label %bb14.i.i
i3 -4, label %bb15.i.i
i3 -3, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
]
bb3.i.i: ; preds = %bb12.i.i
switch i8 %loop_reply.sroa.4.0, label %bb25.i.i [
i8 -86, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
i8 -6, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
i8 -2, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
i8 -18, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
i8 -16, label %bb22.i.i
i8 -32, label %bb23.i.i
i8 -31, label %bb24.i.i
]
bb5.i.i: ; preds = %bb12.i.i
switch i8 %loop_reply.sroa.4.0, label %bb29.i.i [
i8 126, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
i8 119, label %bb27.i.i
i8 88, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
]
bb10.i.i: ; preds = %bb15.i.i, %bb14.i.i, %bb13.i.i, %bb12.i.i, %bb11.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
bb11.i.i: ; preds = %bb3
%cond3.i.i = icmp eq i8 %fsm_driver.sroa.0.0, 0
br i1 %cond3.i.i, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i, label %bb10.i.i
bb12.i.i: ; preds = %bb3
%trunc23.i.i = trunc i8 %fsm_driver.sroa.0.0 to i3
switch i3 %trunc23.i.i, label %bb10.i.i [
i3 0, label %bb3.i.i
i3 2, label %bb5.i.i
]
bb13.i.i: ; preds = %bb3
%trunc22.i.i = trunc i8 %fsm_driver.sroa.0.0 to i3
switch i3 %trunc22.i.i, label %bb10.i.i [
i3 1, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
i3 3, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
i3 -4, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
]
bb14.i.i: ; preds = %bb3
%cond2.i.i = icmp eq i8 %fsm_driver.sroa.0.0, 7
br i1 %cond2.i.i, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i, label %bb10.i.i
bb15.i.i: ; preds = %bb3
%cond.i.i = icmp eq i8 %fsm_driver.sroa.0.0, 5
br i1 %cond.i.i, label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i, label %bb10.i.i
bb16.i.i: ; preds = %bb3
unreachable
bb22.i.i: ; preds = %bb3.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
bb23.i.i: ; preds = %bb3.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
bb24.i.i: ; preds = %bb3.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
bb25.i.i: ; preds = %bb3.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
bb27.i.i: ; preds = %bb5.i.i
%0 = icmp eq i8 %fsm_driver.sroa.10.0, 0
%spec.select = select i1 %0, i16 5, i16 3
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
bb29.i.i: ; preds = %bb5.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i: ; preds = %bb27.i.i, %bb15.i.i, %bb29.i.i, %bb25.i.i, %bb24.i.i, %bb23.i.i, %bb22.i.i, %bb14.i.i, %bb13.i.i, %bb13.i.i, %bb13.i.i, %bb11.i.i, %bb10.i.i, %bb5.i.i, %bb5.i.i, %bb3.i.i, %bb3.i.i, %bb3.i.i, %bb3.i.i, %bb3
%fsm_driver.sroa.14.1 = phi i8 [ %fsm_driver.sroa.14.0, %bb3 ], [ %fsm_driver.sroa.14.0, %bb10.i.i ], [ %fsm_driver.sroa.14.0, %bb14.i.i ], [ %fsm_driver.sroa.14.0, %bb13.i.i ], [ %fsm_driver.sroa.14.0, %bb13.i.i ], [ %fsm_driver.sroa.14.0, %bb13.i.i ], [ %fsm_driver.sroa.14.0, %bb29.i.i ], [ %fsm_driver.sroa.14.0, %bb5.i.i ], [ %fsm_driver.sroa.14.0, %bb5.i.i ], [ %fsm_driver.sroa.14.0, %bb25.i.i ], [ %fsm_driver.sroa.14.0, %bb24.i.i ], [ %fsm_driver.sroa.14.0, %bb23.i.i ], [ %fsm_driver.sroa.14.0, %bb22.i.i ], [ %fsm_driver.sroa.14.0, %bb3.i.i ], [ %fsm_driver.sroa.14.0, %bb3.i.i ], [ %fsm_driver.sroa.14.0, %bb3.i.i ], [ %fsm_driver.sroa.14.0, %bb3.i.i ], [ %fsm_driver.sroa.14.0, %bb11.i.i ], [ %loop_reply.sroa.4.0, %bb15.i.i ], [ %fsm_driver.sroa.14.0, %bb27.i.i ]
%fsm_driver.sroa.10.1 = phi i8 [ %fsm_driver.sroa.10.0, %bb3 ], [ %fsm_driver.sroa.10.0, %bb10.i.i ], [ %fsm_driver.sroa.10.0, %bb14.i.i ], [ %fsm_driver.sroa.10.0, %bb13.i.i ], [ %fsm_driver.sroa.10.0, %bb13.i.i ], [ %fsm_driver.sroa.10.0, %bb13.i.i ], [ %fsm_driver.sroa.10.0, %bb29.i.i ], [ %fsm_driver.sroa.10.0, %bb5.i.i ], [ %fsm_driver.sroa.10.0, %bb5.i.i ], [ %fsm_driver.sroa.10.0, %bb25.i.i ], [ 1, %bb24.i.i ], [ %fsm_driver.sroa.10.0, %bb23.i.i ], [ %fsm_driver.sroa.10.0, %bb22.i.i ], [ %fsm_driver.sroa.10.0, %bb3.i.i ], [ %fsm_driver.sroa.10.0, %bb3.i.i ], [ %fsm_driver.sroa.10.0, %bb3.i.i ], [ %fsm_driver.sroa.10.0, %bb3.i.i ], [ %fsm_driver.sroa.10.0, %bb11.i.i ], [ %fsm_driver.sroa.10.0, %bb15.i.i ], [ 0, %bb27.i.i ]
%_0.sroa.22.0.i.i = phi i8 [ undef, %bb3 ], [ undef, %bb10.i.i ], [ undef, %bb14.i.i ], [ undef, %bb13.i.i ], [ undef, %bb13.i.i ], [ undef, %bb13.i.i ], [ %loop_reply.sroa.4.0, %bb29.i.i ], [ %loop_reply.sroa.4.0, %bb5.i.i ], [ %loop_reply.sroa.4.0, %bb5.i.i ], [ %loop_reply.sroa.4.0, %bb25.i.i ], [ -31, %bb24.i.i ], [ -32, %bb23.i.i ], [ undef, %bb22.i.i ], [ undef, %bb3.i.i ], [ undef, %bb3.i.i ], [ undef, %bb3.i.i ], [ undef, %bb3.i.i ], [ undef, %bb11.i.i ], [ %fsm_driver.sroa.8.0, %bb15.i.i ], [ 119, %bb27.i.i ]
%_0.sroa.0.0.i.i = phi i16 [ 7, %bb3 ], [ 6, %bb10.i.i ], [ 0, %bb14.i.i ], [ 0, %bb13.i.i ], [ 0, %bb13.i.i ], [ 0, %bb13.i.i ], [ 3, %bb29.i.i ], [ 5, %bb5.i.i ], [ 5, %bb5.i.i ], [ 1, %bb25.i.i ], [ 4, %bb24.i.i ], [ 4, %bb23.i.i ], [ 2, %bb22.i.i ], [ 0, %bb3.i.i ], [ 0, %bb3.i.i ], [ 0, %bb3.i.i ], [ 0, %bb3.i.i ], [ 0, %bb11.i.i ], [ 3, %bb15.i.i ], [ %spec.select, %bb27.i.i ]
%next_state.sroa.0.0.extract.trunc.i = trunc i16 %_0.sroa.0.0.i.i to i8
%trunc.i = trunc i16 %_0.sroa.0.0.i.i to i3
switch i3 %trunc.i, label %bb6.i16 [
i3 0, label %bb15.preheader
i3 1, label %bb7.i
i3 2, label %bb15.preheader
i3 3, label %bb8.i
i3 -4, label %bb10
i3 -3, label %bb10.i
i3 -2, label %bb3.i
i3 -1, label %bb6
]
bb6.i16: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
unreachable
bb7.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
%1 = icmp ult i8 %_0.sroa.22.0.i.i, -124
br i1 %1, label %bb2.i48.i, label %bb10
bb2.i48.i: ; preds = %bb7.i
%2 = zext i8 %_0.sroa.22.0.i.i to i16
%3 = getelementptr inbounds [132 x i8], [132 x i8]* @_ZN5at2xt6keyfsm6keymap11KEYCODE_LUT17hd2a2e89289bf8e5bE, i16 0, i16 %2
%4 = load i8, i8* %3, align 1, !noalias !21
br label %bb10
bb8.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
%5 = icmp ult i8 %_0.sroa.22.0.i.i, -124
br i1 %5, label %bb2.i.i, label %bb10
bb2.i.i: ; preds = %bb8.i
%6 = zext i8 %_0.sroa.22.0.i.i to i16
%7 = getelementptr inbounds [132 x i8], [132 x i8]* @_ZN5at2xt6keyfsm6keymap11KEYCODE_LUT17hd2a2e89289bf8e5bE, i16 0, i16 %6
%8 = load i8, i8* %7, align 1, !noalias !21
%phitmp.i17 = or i8 %8, -128
br label %bb10
bb10.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
switch i8 %_0.sroa.22.0.i.i, label %bb3.i [
i8 126, label %bb14.i
i8 119, label %bb15.i
i8 88, label %bb16.i
]
bb14.i: ; preds = %bb10.i
%9 = xor i8 %fsm_driver.sroa.14.1, 1
br label %bb9
bb15.i: ; preds = %bb10.i
%10 = xor i8 %fsm_driver.sroa.14.1, 2
br label %bb9
bb16.i: ; preds = %bb10.i
%11 = xor i8 %fsm_driver.sroa.14.1, 4
br label %bb9
bb3.i: ; preds = %bb10.i, %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
; call core::result::unwrap_failed
call fastcc void @_ZN4core6result13unwrap_failed17hc9b5851d08fd968eE() #7
unreachable
bb15.preheader: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i, %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
br label %bb15
bb6: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i
%12 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
store i8 0, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !26
store i8 0, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !26
%13 = and i16 %12, 8
%14 = icmp eq i16 %13, 0
br i1 %14, label %bb3.backedge, label %bb6.i19
bb6.i19: ; preds = %bb6
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %bb3.backedge
bb9: ; preds = %bb14.i, %bb15.i, %bb16.i
%next_cmd.sroa.14.0.i.ph.ph78 = phi i8 [ %11, %bb16.i ], [ %10, %bb15.i ], [ %9, %bb14.i ]
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h4b442f1bfb7caa2aE(i8 -19) #7
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h2b8f3f7d4ae21a2cE(i16 301) #7
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h4b442f1bfb7caa2aE(i8 %next_cmd.sroa.14.0.i.ph.ph78) #7
br label %bb3.outer.backedge
bb10: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i, %bb2.i.i, %bb8.i, %bb2.i48.i, %bb7.i
%next_cmd.sroa.14.0.i.ph.ph = phi i8 [ 0, %bb7.i ], [ %4, %bb2.i48.i ], [ -128, %bb8.i ], [ %phitmp.i17, %bb2.i.i ], [ %_0.sroa.22.0.i.i, %_ZN5at2xt6keyfsm3Fsm10next_state17h93120ed1d52e9fd8E.exit.i ]
; call at2xt::send_byte_to_pc
call fastcc void @_ZN5at2xt15send_byte_to_pc17haa7b2bcafbfe1a80E(i8 %next_cmd.sroa.14.0.i.ph.ph)
br label %bb3.outer.backedge
bb15: ; preds = %bb15.preheader, %_ZN6msp4309interrupt4free17he6e6e3076bf510a9E.exit
%15 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%16 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !29
%17 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !29
%18 = icmp eq i8 %16, %17
%19 = and i16 %15, 8
%20 = icmp eq i16 %19, 0
br i1 %20, label %_ZN6msp4309interrupt4free17hfa6a2dd20499556fE.exit, label %bb6.i22
bb6.i22: ; preds = %bb15
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17hfa6a2dd20499556fE.exit
_ZN6msp4309interrupt4free17hfa6a2dd20499556fE.exit: ; preds = %bb15, %bb6.i22
%21 = call i16 asm sideeffect "mov R2, $0", "=r"() #7
call void asm sideeffect "dint { nop", "~{memory}"() #7
br i1 %18, label %bb18, label %bb25
bb18: ; preds = %_ZN6msp4309interrupt4free17hfa6a2dd20499556fE.exit
%22 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !32
%23 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 9), align 1, !alias.scope !35
%24 = and i8 %23, 7
%25 = shl i8 1, %24
%26 = and i8 %25, %22
%27 = icmp eq i8 %26, 0
%28 = and i16 %21, 8
%29 = icmp eq i16 %28, 0
br i1 %29, label %_ZN6msp4309interrupt4free17he6e6e3076bf510a9E.exit, label %bb6.i25
bb6.i25: ; preds = %bb18
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17he6e6e3076bf510a9E.exit
_ZN6msp4309interrupt4free17he6e6e3076bf510a9E.exit: ; preds = %bb18, %bb6.i25
br i1 %27, label %bb20, label %bb15
bb20: ; preds = %_ZN6msp4309interrupt4free17he6e6e3076bf510a9E.exit
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h4b442f1bfb7caa2aE(i8 -1)
; call at2xt::send_byte_to_pc
call fastcc void @_ZN5at2xt15send_byte_to_pc17haa7b2bcafbfe1a80E(i8 -86)
br label %bb3.backedge
bb3.backedge: ; preds = %bb6.i19, %bb6, %bb20
%loop_reply.sroa.0.0.be = phi i3 [ -3, %bb20 ], [ 3, %bb6 ], [ 3, %bb6.i19 ]
br label %bb3
bb25: ; preds = %_ZN6msp4309interrupt4free17hfa6a2dd20499556fE.exit
%30 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !38, !noalias !43
%31 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !38, !noalias !43
%32 = icmp eq i8 %30, %31
br i1 %32, label %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h654679e063eed051E.exit.i", label %bb3.i.i.i
bb3.i.i.i: ; preds = %bb25
%33 = icmp ult i8 %30, 16
%34 = zext i8 %30 to i16
br i1 %33, label %35, label %panic.i.i.i, !prof !45
panic.i.i.i: ; preds = %bb3.i.i.i
; call core::panicking::panic_bounds_check
call fastcc void @_ZN4core9panicking18panic_bounds_check17h477ddb5b7522dfeeE(i16 %34, i16 16) #7
unreachable
; <label>:35: ; preds = %bb3.i.i.i
%36 = getelementptr inbounds [16 x i16], [16 x i16]* bitcast ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E to [16 x i16]*), i16 0, i16 %34
%37 = load i16, i16* %36, align 2, !alias.scope !46, !noalias !43
%38 = add i8 %30, 1
%39 = and i8 %38, 15
store i8 %39, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !46, !noalias !43
br label %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h654679e063eed051E.exit.i"
"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h654679e063eed051E.exit.i": ; preds = %35, %bb25
%40 = phi i16 [ %37, %35 ], [ 0, %bb25 ]
%41 = and i16 %21, 8
%42 = icmp eq i16 %41, 0
br i1 %42, label %_ZN6msp4309interrupt4free17h209677cccb06f3a7E.exit, label %bb6.i
bb6.i: ; preds = %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h654679e063eed051E.exit.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h209677cccb06f3a7E.exit
_ZN6msp4309interrupt4free17h209677cccb06f3a7E.exit: ; preds = %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17h654679e063eed051E.exit.i", %bb6.i
%43 = lshr i16 %40, 2
%44 = trunc i16 %43 to i8
%v.07.i35 = lshr i16 %40, 3
%45 = trunc i16 %v.07.i35 to i8
%v.07.i = and i8 %45, 127
%46 = icmp eq i8 %v.07.i, 0
br i1 %46, label %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17h5701bd66efa23263E.exit", label %bb4.i.preheader
bb4.i.preheader: ; preds = %_ZN6msp4309interrupt4free17h209677cccb06f3a7E.exit
br label %bb4.i
bb3.loopexit.i: ; preds = %bb4.i
%phitmp.i = trunc i16 %50 to i8
%phitmp13.i = and i8 %phitmp.i, 7
br label %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17h5701bd66efa23263E.exit"
bb4.i: ; preds = %bb4.i.preheader, %bb4.i
%v.010.i = phi i8 [ %v.0.i, %bb4.i ], [ %v.07.i, %bb4.i.preheader ]
%r.09.i = phi i8 [ %49, %bb4.i ], [ %44, %bb4.i.preheader ]
%s.08.i = phi i16 [ %50, %bb4.i ], [ 7, %bb4.i.preheader ]
%47 = shl i8 %r.09.i, 1
%48 = and i8 %v.010.i, 1
%49 = or i8 %47, %48
%50 = add nsw i16 %s.08.i, -1
%v.0.i = lshr i8 %v.010.i, 1
%51 = icmp eq i8 %v.0.i, 0
br i1 %51, label %bb3.loopexit.i, label %bb4.i
"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17h5701bd66efa23263E.exit": ; preds = %_ZN6msp4309interrupt4free17h209677cccb06f3a7E.exit, %bb3.loopexit.i
%s.0.lcssa.i = phi i8 [ 7, %_ZN6msp4309interrupt4free17h209677cccb06f3a7E.exit ], [ %phitmp13.i, %bb3.loopexit.i ]
%r.0.lcssa.i = phi i8 [ %44, %_ZN6msp4309interrupt4free17h209677cccb06f3a7E.exit ], [ %49, %bb3.loopexit.i ]
%52 = shl i8 %r.0.lcssa.i, %s.0.lcssa.i
br label %bb3.outer.backedge
bb3.outer.backedge: ; preds = %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17h5701bd66efa23263E.exit", %bb9, %bb10
%loop_reply.sroa.4.0.ph.be = phi i8 [ %next_cmd.sroa.14.0.i.ph.ph, %bb10 ], [ %next_cmd.sroa.14.0.i.ph.ph78, %bb9 ], [ %52, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17h5701bd66efa23263E.exit" ]
%loop_reply.sroa.0.0.ph.be = phi i3 [ 2, %bb10 ], [ -4, %bb9 ], [ 1, %"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17h5701bd66efa23263E.exit" ]
br label %bb3.outer
}
; at2xt::send_xt_bit
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt11send_xt_bit17hf22eb525dcc8e3acE(i8) unnamed_addr #3 {
start:
%1 = tail call i16 asm sideeffect "mov R2, $0", "=r"() #7, !noalias !47, !srcloc !25
tail call void asm sideeffect "dint { nop", "~{memory}"() #7, !noalias !47, !srcloc !25
%2 = icmp eq i8 %0, 1
%3 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !50
%4 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 7), align 1, !noalias !50
%5 = and i8 %4, 7
%6 = shl i8 1, %5
%7 = xor i8 %6, -1
%8 = and i8 %3, %7
%9 = or i8 %6, %3
%.sink = select i1 %2, i8 %9, i8 %8
store volatile i8 %.sink, i8* inttoptr (i16 33 to i8*), align 1, !noalias !50
%10 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !53
%11 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !58, !noalias !61
%12 = and i8 %11, 7
%13 = shl i8 1, %12
%14 = xor i8 %13, -1
%15 = and i8 %10, %14
store volatile i8 %15, i8* inttoptr (i16 33 to i8*), align 1, !noalias !53
%16 = and i16 %1, 8
%17 = icmp eq i16 %16, 0
br i1 %17, label %_ZN6msp4309interrupt4free17h034ed1154a4cd22bE.exit, label %bb6.i
bb6.i: ; preds = %start
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !noalias !47, !srcloc !25
br label %_ZN6msp4309interrupt4free17h034ed1154a4cd22bE.exit
_ZN6msp4309interrupt4free17h034ed1154a4cd22bE.exit: ; preds = %start, %bb6.i
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h2b8f3f7d4ae21a2cE(i16 6)
%18 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%19 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !66
%20 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !71, !noalias !74
%21 = and i8 %20, 7
%22 = shl i8 1, %21
%23 = or i8 %22, %19
store volatile i8 %23, i8* inttoptr (i16 33 to i8*), align 1, !noalias !66
%24 = and i16 %18, 8
%25 = icmp eq i16 %24, 0
br i1 %25, label %_ZN6msp4309interrupt4free17h4273b4157ef35ea7E.exit, label %bb6.i5
bb6.i5: ; preds = %_ZN6msp4309interrupt4free17h034ed1154a4cd22bE.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h4273b4157ef35ea7E.exit
_ZN6msp4309interrupt4free17h4273b4157ef35ea7E.exit: ; preds = %_ZN6msp4309interrupt4free17h034ed1154a4cd22bE.exit, %bb6.i5
ret void
}
; at2xt::send_byte_to_pc
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt15send_byte_to_pc17haa7b2bcafbfe1a80E(i8) unnamed_addr #3 {
start:
br label %bb1
bb1: ; preds = %_ZN6msp4309interrupt4free17h431ed534c07bbb2eE.exit, %start
%1 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%2 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !79
%3 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !82
%4 = and i8 %3, 7
%5 = shl i8 1, %4
%6 = and i8 %5, %2
%7 = icmp eq i8 %6, 0
br i1 %7, label %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h66691687b5f3c436E.exit.i", label %bb5.i.i
bb5.i.i: ; preds = %bb1
%8 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !85
%9 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 7), align 1, !alias.scope !88
%10 = and i8 %9, 7
%11 = shl i8 1, %10
%12 = and i8 %11, %8
%13 = icmp eq i8 %12, 0
br label %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h66691687b5f3c436E.exit.i"
"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h66691687b5f3c436E.exit.i": ; preds = %bb5.i.i, %bb1
%_0.0.i.i = phi i1 [ true, %bb1 ], [ %13, %bb5.i.i ]
%14 = and i16 %1, 8
%15 = icmp eq i16 %14, 0
br i1 %15, label %_ZN6msp4309interrupt4free17h431ed534c07bbb2eE.exit, label %bb6.i
bb6.i: ; preds = %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h66691687b5f3c436E.exit.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h431ed534c07bbb2eE.exit
_ZN6msp4309interrupt4free17h431ed534c07bbb2eE.exit: ; preds = %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h66691687b5f3c436E.exit.i", %bb6.i
br i1 %_0.0.i.i, label %bb1, label %bb2
bb2: ; preds = %_ZN6msp4309interrupt4free17h431ed534c07bbb2eE.exit
%16 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%17 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !91
%18 = and i8 %17, 7
%19 = shl i8 1, %18
%20 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 7), align 1, !alias.scope !96
%21 = and i8 %20, 7
%22 = shl i8 1, %21
%23 = or i8 %22, %19
%24 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !99
%25 = or i8 %23, %24
store volatile i8 %25, i8* inttoptr (i16 33 to i8*), align 1, !noalias !99
%26 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !102
%27 = or i8 %26, %23
store volatile i8 %27, i8* inttoptr (i16 34 to i8*), align 2, !noalias !102
%28 = and i16 %16, 8
%29 = icmp eq i16 %28, 0
br i1 %29, label %_ZN6msp4309interrupt4free17h98de7be603599cbaE.exit, label %bb6.i10
bb6.i10: ; preds = %bb2
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h98de7be603599cbaE.exit
_ZN6msp4309interrupt4free17h98de7be603599cbaE.exit: ; preds = %bb2, %bb6.i10
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17hf22eb525dcc8e3acE(i8 0)
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17hf22eb525dcc8e3acE(i8 1)
br label %bb13
bb11: ; preds = %bb13
%30 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%31 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !105
%32 = and i8 %31, 7
%33 = shl i8 1, %32
%34 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 7), align 1, !alias.scope !110
%35 = and i8 %34, 7
%36 = shl i8 1, %35
%37 = or i8 %36, %33
%38 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !113
%39 = or i8 %36, %38
store volatile i8 %39, i8* inttoptr (i16 33 to i8*), align 1, !noalias !113
%40 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !116
%41 = xor i8 %37, -1
%42 = and i8 %40, %41
store volatile i8 %42, i8* inttoptr (i16 34 to i8*), align 2, !noalias !116
%43 = and i16 %30, 8
%44 = icmp eq i16 %43, 0
br i1 %44, label %_ZN6msp4309interrupt4free17h58c4ac9b9e4754ebE.exit, label %bb6.i12
bb6.i12: ; preds = %bb11
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h58c4ac9b9e4754ebE.exit
_ZN6msp4309interrupt4free17h58c4ac9b9e4754ebE.exit: ; preds = %bb11, %bb6.i12
ret void
bb13: ; preds = %_ZN6msp4309interrupt4free17h98de7be603599cbaE.exit, %bb13
%byte.023 = phi i8 [ %0, %_ZN6msp4309interrupt4free17h98de7be603599cbaE.exit ], [ %47, %bb13 ]
%iter.sroa.0.022 = phi i32 [ 0, %_ZN6msp4309interrupt4free17h98de7be603599cbaE.exit ], [ %45, %bb13 ]
%45 = add nuw nsw i32 %iter.sroa.0.022, 1
%46 = and i8 %byte.023, 1
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17hf22eb525dcc8e3acE(i8 %46)
%47 = lshr i8 %byte.023, 1
%48 = icmp ult i32 %45, 8
br i1 %48, label %bb13, label %bb11
}
; at2xt::send_byte_to_at_keyboard
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17h4b442f1bfb7caa2aE(i8) unnamed_addr #3 {
start:
%1 = tail call i16 asm sideeffect "mov R2, $0", "=r"() #7, !noalias !119, !srcloc !25
tail call void asm sideeffect "dint { nop", "~{memory}"() #7, !noalias !119, !srcloc !25
%2 = load i8, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 1), align 2, !alias.scope !122, !noalias !127
%3 = icmp ugt i8 %2, 9
br i1 %3, label %bb9.i.i.i.preheader, label %bb3.i.i.i
bb9.i.i.i.preheader: ; preds = %start
br label %bb9.i.i.i
bb9.i.i.i: ; preds = %bb9.i.i.i.preheader, %bb9.i.i.i
%sout.016.i.i.i = phi i8 [ %7, %bb9.i.i.i ], [ %0, %bb9.i.i.i.preheader ]
%num_ones.015.i.i.i = phi i8 [ %6, %bb9.i.i.i ], [ 0, %bb9.i.i.i.preheader ]
%iter.sroa.0.014.i.i.i = phi i32 [ %4, %bb9.i.i.i ], [ 0, %bb9.i.i.i.preheader ]
%4 = add nuw nsw i32 %iter.sroa.0.014.i.i.i, 1
%5 = and i8 %sout.016.i.i.i, 1
%6 = add i8 %5, %num_ones.015.i.i.i
%7 = shl i8 %sout.016.i.i.i, 1
%8 = icmp ult i32 %4, 8
br i1 %8, label %bb9.i.i.i, label %"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h5d6fe945931af021E.exit.i"
bb3.i.i.i: ; preds = %start
; call core::result::unwrap_failed
tail call fastcc void @_ZN4core6result13unwrap_failed17hc9b5851d08fd968eE() #7, !noalias !127
unreachable
"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h5d6fe945931af021E.exit.i": ; preds = %bb9.i.i.i
%9 = and i8 %6, 1
%10 = zext i8 %9 to i16
%11 = shl nuw nsw i16 %10, 8
%12 = zext i8 %0 to i16
%13 = or i16 %11, %12
%14 = xor i16 %13, 768
store i16 %14, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 0), align 2, !alias.scope !130, !noalias !127
store i8 0, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 1), align 2, !alias.scope !130, !noalias !127
%15 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !131
%16 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !136, !noalias !139
%17 = and i8 %16, 7
%18 = shl i8 1, %17
%19 = xor i8 %18, -1
%20 = and i8 %15, %19
store volatile i8 %20, i8* inttoptr (i16 37 to i8*), align 1, !noalias !131
%21 = and i16 %1, 8
%22 = icmp eq i16 %21, 0
br i1 %22, label %_ZN6msp4309interrupt4free17h09eb1823799d787bE.exit, label %bb6.i
bb6.i: ; preds = %"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h5d6fe945931af021E.exit.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !noalias !119, !srcloc !25
br label %_ZN6msp4309interrupt4free17h09eb1823799d787bE.exit
_ZN6msp4309interrupt4free17h09eb1823799d787bE.exit: ; preds = %"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h5d6fe945931af021E.exit.i", %bb6.i
br label %bb2
bb2: ; preds = %_ZN6msp4309interrupt4free17h3ac2df6fdbc9e0a8E.exit, %_ZN6msp4309interrupt4free17h09eb1823799d787bE.exit
%23 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%24 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !144
%25 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !147
%26 = and i8 %25, 7
%27 = shl i8 1, %26
%28 = and i8 %27, %24
%29 = icmp eq i8 %28, 0
%30 = and i16 %23, 8
%31 = icmp eq i16 %30, 0
br i1 %31, label %_ZN6msp4309interrupt4free17h3ac2df6fdbc9e0a8E.exit, label %bb6.i8
bb6.i8: ; preds = %bb2
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h3ac2df6fdbc9e0a8E.exit
_ZN6msp4309interrupt4free17h3ac2df6fdbc9e0a8E.exit: ; preds = %bb2, %bb6.i8
br i1 %29, label %bb2, label %bb3
bb3: ; preds = %_ZN6msp4309interrupt4free17h3ac2df6fdbc9e0a8E.exit
%32 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%33 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !150
%34 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !155, !noalias !158
%35 = and i8 %34, 7
%36 = shl i8 1, %35
%37 = xor i8 %36, -1
%38 = and i8 %33, %37
store volatile i8 %38, i8* inttoptr (i16 33 to i8*), align 1, !noalias !150
%39 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !163
%40 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !alias.scope !168, !noalias !171
%41 = and i8 %40, 7
%42 = shl i8 1, %41
%43 = or i8 %42, %39
store volatile i8 %43, i8* inttoptr (i16 33 to i8*), align 1, !noalias !163
%44 = or i8 %42, %36
%45 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !176
%46 = or i8 %44, %45
store volatile i8 %46, i8* inttoptr (i16 34 to i8*), align 2, !noalias !176
%47 = and i16 %32, 8
%48 = icmp eq i16 %47, 0
br i1 %48, label %_ZN6msp4309interrupt4free17h15bcf9e74bc670dcE.exit, label %bb6.i10
bb6.i10: ; preds = %bb3
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h15bcf9e74bc670dcE.exit
_ZN6msp4309interrupt4free17h15bcf9e74bc670dcE.exit: ; preds = %bb3, %bb6.i10
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h2b8f3f7d4ae21a2cE(i16 11)
%49 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%50 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !179
%51 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !alias.scope !184, !noalias !187
%52 = and i8 %51, 7
%53 = shl i8 1, %52
%54 = xor i8 %53, -1
%55 = and i8 %50, %54
store volatile i8 %55, i8* inttoptr (i16 33 to i8*), align 1, !noalias !179
%56 = and i16 %49, 8
%57 = icmp eq i16 %56, 0
br i1 %57, label %_ZN6msp4309interrupt4free17h795b2981c78e6592E.exit, label %bb6.i12
bb6.i12: ; preds = %_ZN6msp4309interrupt4free17h15bcf9e74bc670dcE.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h795b2981c78e6592E.exit
_ZN6msp4309interrupt4free17h795b2981c78e6592E.exit: ; preds = %_ZN6msp4309interrupt4free17h15bcf9e74bc670dcE.exit, %bb6.i12
; call at2xt::delay
call fastcc void @_ZN5at2xt5delay17h2b8f3f7d4ae21a2cE(i16 4)
%58 = call i16 asm sideeffect "mov R2, $0", "=r"() #7, !srcloc !25
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
%59 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !192
%60 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !197, !noalias !200
%61 = and i8 %60, 7
%62 = shl i8 1, %61
%63 = or i8 %62, %59
store volatile i8 %63, i8* inttoptr (i16 33 to i8*), align 1, !noalias !192
%64 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !205
%65 = xor i8 %62, -1
%66 = and i8 %64, %65
store volatile i8 %66, i8* inttoptr (i16 34 to i8*), align 2, !noalias !205
%67 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !210
%68 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !215, !noalias !218
%69 = and i8 %68, 7
%70 = shl i8 1, %69
%71 = xor i8 %70, -1
%72 = and i8 %67, %71
store volatile i8 %72, i8* inttoptr (i16 35 to i8*), align 1, !noalias !210
%73 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !223
%74 = or i8 %73, %70
store volatile i8 %74, i8* inttoptr (i16 37 to i8*), align 1, !noalias !223
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt9HOST_MODE17hce70b3616da68440E, i8 1) #7, !srcloc !25
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hdae858d936b7fb26E, i8 0) #7, !srcloc !25
%75 = and i16 %58, 8
%76 = icmp eq i16 %75, 0
br i1 %76, label %_ZN6msp4309interrupt4free17h5b21682d275e2ee4E.exit, label %bb6.i14
bb6.i14: ; preds = %_ZN6msp4309interrupt4free17h795b2981c78e6592E.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
br label %_ZN6msp4309interrupt4free17h5b21682d275e2ee4E.exit
_ZN6msp4309interrupt4free17h5b21682d275e2ee4E.exit: ; preds = %_ZN6msp4309interrupt4free17h795b2981c78e6592E.exit, %bb6.i14
br label %bb13
bb13: ; preds = %bb13, %_ZN6msp4309interrupt4free17h5b21682d275e2ee4E.exit
%77 = call i8 asm sideeffect "mov.b $1, $0", "=r,*m,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hdae858d936b7fb26E) #7, !srcloc !25
%78 = icmp eq i8 %77, 0
br i1 %78, label %bb13, label %bb14
bb14: ; preds = %bb13
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt9HOST_MODE17hce70b3616da68440E, i8 0) #7, !srcloc !25
ret void
}
; at2xt::delay
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt5delay17h2b8f3f7d4ae21a2cE(i16 %time) unnamed_addr #3 {
start:
%0 = tail call i16 asm sideeffect "mov R2, $0", "=r"() #7, !noalias !228, !srcloc !25
tail call void asm sideeffect "dint { nop", "~{memory}"() #7, !noalias !228, !srcloc !25
tail call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt7TIMEOUT17h83cd8770e29451d6E, i8 0) #7, !noalias !231, !srcloc !25
store volatile i16 %time, i16* inttoptr (i16 370 to i16*), align 2, !noalias !234
%1 = and i16 %0, 8
%2 = icmp eq i16 %1, 0
br i1 %2, label %_ZN5at2xt11start_timer17h18798abdf22f0c11E.exit, label %bb6.i.i
bb6.i.i: ; preds = %start
call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !noalias !228, !srcloc !25
br label %_ZN5at2xt11start_timer17h18798abdf22f0c11E.exit
_ZN5at2xt11start_timer17h18798abdf22f0c11E.exit: ; preds = %start, %bb6.i.i
br label %bb2
bb2: ; preds = %bb2, %_ZN5at2xt11start_timer17h18798abdf22f0c11E.exit
%3 = call i8 asm sideeffect "mov.b $1, $0", "=r,*m,~{memory}"(i8* nonnull @_ZN5at2xt7TIMEOUT17h83cd8770e29451d6E) #7, !srcloc !25
%4 = icmp eq i8 %3, 0
br i1 %4, label %bb2, label %bb3
bb3: ; preds = %bb2
ret void
}
; Function Attrs: nounwind optsize
define msp430_intrcc void @TIMERA0() unnamed_addr #3 {
start:
tail call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt7TIMEOUT17h83cd8770e29451d6E, i8 1) #7, !srcloc !25
store volatile i16 0, i16* inttoptr (i16 370 to i16*), align 2
ret void
}
; Function Attrs: nounwind optsize
define msp430_intrcc void @PORT1() unnamed_addr #3 {
start:
%0 = tail call i8 asm sideeffect "mov.b $1, $0", "=r,*m,~{memory}"(i8* nonnull @_ZN5at2xt9HOST_MODE17hce70b3616da68440E) #7, !noalias !237, !srcloc !25
%1 = icmp eq i8 %0, 0
br i1 %1, label %bb3.i, label %bb2.i
bb2.i: ; preds = %start
%2 = load i8, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 1), align 2, !alias.scope !240, !noalias !237
%3 = icmp ugt i8 %2, 9
br i1 %3, label %bb7.i, label %bb6.i
bb3.i: ; preds = %start
%4 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !243
%5 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !alias.scope !246, !noalias !237
%6 = and i8 %5, 7
%7 = shl i8 1, %6
%8 = and i8 %7, %4
%9 = icmp ne i8 %8, 0
%..i.i = zext i1 %9 to i16
%10 = load i16, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 0), align 2, !alias.scope !249, !noalias !237
%11 = shl i16 %10, 1
%12 = or i16 %11, %..i.i
store i16 %12, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 0), align 2, !alias.scope !249, !noalias !237
%13 = load i8, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 1), align 2, !alias.scope !249, !noalias !237
%14 = add i8 %13, 1
store i8 %14, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 1), align 2, !alias.scope !249, !noalias !237
%15 = icmp ugt i8 %14, 10
br i1 %15, label %bb41.i, label %_ZN5at2xt13porta_handler17h1047ba2e141b8e56E.exit
bb6.i: ; preds = %bb2.i
%16 = load i16, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 0), align 2, !alias.scope !252, !noalias !237
%17 = and i16 %16, 1
%18 = icmp eq i16 %17, 0
%19 = lshr i16 %16, 1
store i16 %19, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 0), align 2, !alias.scope !252, !noalias !237
%20 = add i8 %2, 1
store i8 %20, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 1), align 2, !alias.scope !252, !noalias !237
%21 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !237
%22 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !noalias !237
%23 = and i8 %22, 7
%24 = shl i8 1, %23
%25 = xor i8 %24, -1
%26 = and i8 %21, %25
%27 = or i8 %24, %21
%.sink = select i1 %18, i8 %26, i8 %27
store volatile i8 %.sink, i8* inttoptr (i16 33 to i8*), align 1, !noalias !237
%28 = load i8, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 1), align 2, !alias.scope !255, !noalias !237
%29 = icmp ugt i8 %28, 9
br i1 %29, label %bb19.i, label %_ZN5at2xt13porta_handler17h1047ba2e141b8e56E.exit
bb7.i: ; preds = %bb2.i
%30 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !258
%31 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !alias.scope !261, !noalias !237
%32 = and i8 %31, 7
%33 = shl i8 1, %32
%34 = and i8 %33, %30
%35 = icmp eq i8 %34, 0
br i1 %35, label %bb26.i, label %_ZN5at2xt13porta_handler17h1047ba2e141b8e56E.exit
bb19.i: ; preds = %bb6.i
%36 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !264
%37 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !269, !noalias !272
%38 = and i8 %37, 7
%39 = shl i8 1, %38
%40 = or i8 %39, %36
store volatile i8 %40, i8* inttoptr (i16 33 to i8*), align 1, !noalias !264
%41 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !277
%42 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !alias.scope !282, !noalias !285
%43 = and i8 %42, 7
%44 = shl i8 1, %43
%45 = or i8 %44, %41
store volatile i8 %45, i8* inttoptr (i16 33 to i8*), align 1, !noalias !277
%46 = or i8 %44, %39
%47 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !290
%48 = xor i8 %46, -1
%49 = and i8 %47, %48
store volatile i8 %49, i8* inttoptr (i16 34 to i8*), align 2, !noalias !290
br label %_ZN5at2xt13porta_handler17h1047ba2e141b8e56E.exit
bb26.i: ; preds = %bb7.i
tail call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hdae858d936b7fb26E, i8 1) #7, !noalias !237, !srcloc !25
store i8 10, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 1), align 2, !alias.scope !293, !noalias !237
store i16 0, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, i16 0, i32 0), align 2, !alias.scope !293, !noalias !237
br label %_ZN5at2xt13porta_handler17h1047ba2e141b8e56E.exit
bb41.i: ; preds = %bb3.i
%50 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !296
%51 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !301, !noalias !304
%52 = and i8 %51, 7
%53 = shl i8 1, %52
%54 = xor i8 %53, -1
%55 = and i8 %50, %54
store volatile i8 %55, i8* inttoptr (i16 33 to i8*), align 1, !noalias !296
%56 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !309
%57 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !alias.scope !314, !noalias !317
%58 = and i8 %57, 7
%59 = shl i8 1, %58
%60 = or i8 %59, %56
store volatile i8 %60, i8* inttoptr (i16 33 to i8*), align 1, !noalias !309
%61 = or i8 %59, %53
%62 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !322
%63 = or i8 %61, %62
store volatile i8 %63, i8* inttoptr (i16 34 to i8*), align 2, !noalias !322
%64 = load i8, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 1), align 2, !alias.scope !325, !noalias !330
%65 = icmp ugt i8 %64, 10
br i1 %65, label %bb49.i, label %bb50.i
bb49.i: ; preds = %bb41.i
store i8 0, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 1), align 2, !alias.scope !332, !noalias !330
%66 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !333, !noalias !237
%67 = zext i8 %66 to i16
%68 = icmp ult i8 %66, 16
br i1 %68, label %_ZN5at2xt9keybuffer13KeycodeBuffer3put17he2bb79bc220ff24cE.exit.i, label %panic.i.i, !prof !45
panic.i.i: ; preds = %bb49.i
; call core::panicking::panic_bounds_check
tail call fastcc void @_ZN4core9panicking18panic_bounds_check17h477ddb5b7522dfeeE(i16 %67, i16 16) #7
unreachable
_ZN5at2xt9keybuffer13KeycodeBuffer3put17he2bb79bc220ff24cE.exit.i: ; preds = %bb49.i
%69 = load i16, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 0), align 2, !alias.scope !332, !noalias !330
%70 = getelementptr inbounds [16 x i16], [16 x i16]* bitcast ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E to [16 x i16]*), i16 0, i16 %67
store i16 %69, i16* %70, align 2, !alias.scope !333, !noalias !237
%71 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !333, !noalias !237
%72 = add i8 %71, 1
%73 = and i8 %72, 15
store i8 %73, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !333, !noalias !237
br label %bb50.i
bb50.i: ; preds = %_ZN5at2xt9keybuffer13KeycodeBuffer3put17he2bb79bc220ff24cE.exit.i, %bb41.i
store i8 0, i8* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 1), align 2, !alias.scope !336, !noalias !237
store i16 0, i16* getelementptr inbounds ({ i16, i8 }, { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, i16 0, i32 0), align 2, !alias.scope !336, !noalias !237
%74 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !339
%75 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !344, !noalias !347
%76 = and i8 %75, 7
%77 = shl i8 1, %76
%78 = or i8 %77, %74
store volatile i8 %78, i8* inttoptr (i16 33 to i8*), align 1, !noalias !339
%79 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !352
%80 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 3), align 1, !alias.scope !357, !noalias !360
%81 = and i8 %80, 7
%82 = shl i8 1, %81
%83 = or i8 %82, %79
store volatile i8 %83, i8* inttoptr (i16 33 to i8*), align 1, !noalias !352
%84 = or i8 %82, %77
%85 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !365
%86 = xor i8 %84, -1
%87 = and i8 %85, %86
store volatile i8 %87, i8* inttoptr (i16 34 to i8*), align 2, !noalias !365
br label %_ZN5at2xt13porta_handler17h1047ba2e141b8e56E.exit
_ZN5at2xt13porta_handler17h1047ba2e141b8e56E.exit: ; preds = %bb3.i, %bb50.i, %bb7.i, %bb6.i, %bb19.i, %bb26.i
%88 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !237
%89 = load i8, i8* getelementptr inbounds ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }, { [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E, i16 0, i32 1, i32 1, i32 1), align 1, !alias.scope !368, !noalias !237
%90 = and i8 %89, 7
%91 = shl i8 1, %90
%92 = xor i8 %91, -1
%93 = and i8 %88, %92
store volatile i8 %93, i8* inttoptr (i16 35 to i8*), align 1, !noalias !237
ret void
}
; Function Attrs: noreturn nounwind optsize
define i16 @main(i16, i8** nocapture readnone) unnamed_addr #2 {
top:
%_7.i = alloca %_initResources, align 2
%_6.i = alloca %"msp430g2211::Peripherals", align 2
%2 = bitcast %"msp430g2211::Peripherals"* %_6.i to i8*
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %2) #7
%3 = bitcast %"msp430g2211::Peripherals"* %_6.i to %"msp430g2211::SPECIAL_FUNCTION"**
store %"msp430g2211::SPECIAL_FUNCTION"* null, %"msp430g2211::SPECIAL_FUNCTION"** %3, align 2, !alias.scope !377
%4 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %_6.i, i16 0, i32 3
store %"msp430g2211::COMPARATOR_A"* inttoptr (i16 88 to %"msp430g2211::COMPARATOR_A"*), %"msp430g2211::COMPARATOR_A"** %4, align 2, !alias.scope !377
%5 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %_6.i, i16 0, i32 5
store %"msp430g2211::PORT_1_2"* inttoptr (i16 32 to %"msp430g2211::PORT_1_2"*), %"msp430g2211::PORT_1_2"** %5, align 2, !alias.scope !377
%6 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %_6.i, i16 0, i32 7
store %"msp430g2211::FLASH"* inttoptr (i16 296 to %"msp430g2211::FLASH"*), %"msp430g2211::FLASH"** %6, align 2, !alias.scope !377
%7 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %_6.i, i16 0, i32 9
store %"msp430g2211::WATCHDOG_TIMER"* inttoptr (i16 288 to %"msp430g2211::WATCHDOG_TIMER"*), %"msp430g2211::WATCHDOG_TIMER"** %7, align 2, !alias.scope !377
%8 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %_6.i, i16 0, i32 11
store %"msp430g2211::SYSTEM_CLOCK"* inttoptr (i16 82 to %"msp430g2211::SYSTEM_CLOCK"*), %"msp430g2211::SYSTEM_CLOCK"** %8, align 2, !alias.scope !377
%9 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %_6.i, i16 0, i32 13
store %"msp430g2211::TIMER_A2"* inttoptr (i16 302 to %"msp430g2211::TIMER_A2"*), %"msp430g2211::TIMER_A2"** %9, align 2, !alias.scope !377
%10 = getelementptr inbounds %"msp430g2211::Peripherals", %"msp430g2211::Peripherals"* %_6.i, i16 0, i32 15
store { i8, i8 }* inttoptr (i16 4350 to { i8, i8 }*), { i8, i8 }** %10, align 2, !alias.scope !377
%11 = bitcast %_initResources* %_7.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %11) #7
%12 = bitcast %_initResources* %_7.i to %"static_ref::Static<driver::KeyboardPins>"**
store %"static_ref::Static<driver::KeyboardPins>"* bitcast ({ [0 x i8], { [0 x i8], { [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt13KEYBOARD_PINS17hc6c27849599d0e68E to %"static_ref::Static<driver::KeyboardPins>"*), %"static_ref::Static<driver::KeyboardPins>"** %12, align 2, !alias.scope !380
%13 = getelementptr inbounds %_initResources, %_initResources* %_7.i, i16 0, i32 3
store %"static_ref::Static<keybuffer::KeycodeBuffer>"* bitcast ({ [0 x i8], { [0 x i8], { [0 x i8], [16 x i16], [0 x i8], i8, [0 x i8], i8, [0 x i8] }, [0 x i8] }, [0 x i8] }* @_ZN5at2xt9IN_BUFFER17h3ce96c3c43c3e6d6E to %"static_ref::Static<keybuffer::KeycodeBuffer>"*), %"static_ref::Static<keybuffer::KeycodeBuffer>"** %13, align 2, !alias.scope !380
%14 = getelementptr inbounds %_initResources, %_initResources* %_7.i, i16 0, i32 5
store { i16, i8 }* @_ZN5at2xt6KEY_IN17h46ade8497e4a27c6E, { i16, i8 }** %14, align 2, !alias.scope !380
%15 = getelementptr inbounds %_initResources, %_initResources* %_7.i, i16 0, i32 7
store { i16, i8 }* @_ZN5at2xt7KEY_OUT17h32046a878965574fE, { i16, i8 }** %15, align 2, !alias.scope !380
; call at2xt::init
call fastcc void @_ZN5at2xt4init17h4ecbfb266b542af1E(%"msp430g2211::Peripherals"* noalias nocapture nonnull dereferenceable(16) %_6.i, %_initResources* noalias nocapture nonnull dereferenceable(8) %_7.i) #7
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11) #7
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %2) #7
tail call void asm sideeffect "nop { eint { nop", "~{memory}"() #7, !srcloc !25
; call at2xt::idle
tail call fastcc void @_ZN5at2xt4idle17hf375741b8480bb02E() #7
unreachable
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #4
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #4
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @PORT2() unnamed_addr #5 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #7, !srcloc !383
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @TIMERA1() unnamed_addr #5 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #7, !srcloc !384
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @WDT() unnamed_addr #5 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #7, !srcloc !385
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @COMPARATORA() unnamed_addr #5 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #7, !srcloc !386
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @NMI() unnamed_addr #5 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #7, !srcloc !387
unreachable
}
; Function Attrs: nounwind optsize
define weak msp430_intrcc void @DEFAULT_HANDLER() unnamed_addr #3 {
br label %1
; <label>:1: ; preds = %1, %0
tail call void asm sideeffect "", "~{memory}"() #7, !srcloc !25
br label %1
}
; msp430_rt::reset_handler::trampoline
; Function Attrs: naked noreturn nounwind optsize
define internal msp430_intrcc void @_ZN9msp430_rt13reset_handler10trampoline17h4fb15eb8d7985f9dE() unnamed_addr #6 section ".vector_table.reset_handler" {
tail call void asm sideeffect "mov #_stack_start, r1\0A br $0", "i"(void ()* nonnull @_ZN9msp430_rt13reset_handler17hf7a5efd84544a0aaE) #7, !srcloc !388
unreachable
}
; msp430_rt::reset_handler
; Function Attrs: noreturn nounwind optsize
define internal void @_ZN9msp430_rt13reset_handler17hf7a5efd84544a0aaE() unnamed_addr #2 {
br i1 icmp ult (i16* @_sbss, i16* @_ebss), label %1, label %.loopexit1
; <label>:1: ; preds = %0
br label %2
; <label>:2: ; preds = %2, %1
%3 = phi i16* [ %4, %2 ], [ @_sbss, %1 ]
store volatile i16 0, i16* %3, align 2
%4 = getelementptr inbounds i16, i16* %3, i16 1
%5 = icmp ult i16* %4, @_ebss
br i1 %5, label %2, label %.loopexit1
.loopexit1: ; preds = %2, %0
br i1 icmp ult (i16* @_sdata, i16* @_edata), label %6, label %.loopexit
; <label>:6: ; preds = %.loopexit1
br label %7
; <label>:7: ; preds = %7, %6
%8 = phi i16* [ %11, %7 ], [ @_sdata, %6 ]
%9 = phi i16* [ %12, %7 ], [ @_sidata, %6 ]
%10 = load i16, i16* %9, align 2
store i16 %10, i16* %8, align 2
%11 = getelementptr inbounds i16, i16* %8, i16 1
%12 = getelementptr inbounds i16, i16* %9, i16 1
%13 = icmp ult i16* %11, @_edata
br i1 %13, label %7, label %.loopexit
.loopexit: ; preds = %7, %.loopexit1
%14 = tail call i16 @main(i16 undef, i8** undef)
unreachable
}
; core::panicking::panic_bounds_check
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core9panicking18panic_bounds_check17h477ddb5b7522dfeeE(i16, i16) unnamed_addr #0 {
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17h13cf1b86bcd276a6E()
unreachable
}
; core::panicking::panic_fmt
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core9panicking9panic_fmt17h13cf1b86bcd276a6E() unnamed_addr #0 {
call void asm sideeffect "dint { nop", "~{memory}"() #7, !srcloc !25
br label %1
; <label>:1: ; preds = %1, %0
call void asm sideeffect "", "~{memory}"() #7, !srcloc !25
br label %1
}
attributes #0 = { cold noinline noreturn nounwind optsize }
attributes #1 = { norecurse nounwind optsize }
attributes #2 = { noreturn nounwind optsize }
attributes #3 = { nounwind optsize }
attributes #4 = { argmemonly nounwind }
attributes #5 = { naked nounwind optsize }
attributes #6 = { naked noreturn nounwind optsize }
attributes #7 = { nounwind }
!0 = !{}
!1 = !{!2}
!2 = distinct !{!2, !3, !"_ZN5at2xt6driver12KeyboardPins4idle17hfcff433e9df16146E: argument 0"}
!3 = distinct !{!3, !"_ZN5at2xt6driver12KeyboardPins4idle17hfcff433e9df16146E"}
!4 = !{!5, !2}
!5 = distinct !{!5, !6, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h8a0c89415111d582E: %f"}
!6 = distinct !{!6, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h8a0c89415111d582E"}
!7 = !{!8, !2}
!8 = distinct !{!8, !9, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!9 = distinct !{!9, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!10 = !{!11, !13, !14, !5}
!11 = distinct !{!11, !12, !"_ZN5at2xt6driver12KeyboardPins4idle28_$u7b$$u7b$closure$u7d$$u7d$17ha7c71a9bd48fbb90E: %arg0"}
!12 = distinct !{!12, !"_ZN5at2xt6driver12KeyboardPins4idle28_$u7b$$u7b$closure$u7d$$u7d$17ha7c71a9bd48fbb90E"}
!13 = distinct !{!13, !12, !"_ZN5at2xt6driver12KeyboardPins4idle28_$u7b$$u7b$closure$u7d$$u7d$17ha7c71a9bd48fbb90E: %r"}
!14 = distinct !{!14, !12, !"_ZN5at2xt6driver12KeyboardPins4idle28_$u7b$$u7b$closure$u7d$$u7d$17ha7c71a9bd48fbb90E: %w"}
!15 = !{!16, !2}
!16 = distinct !{!16, !17, !"_ZN11msp430g22118port_1_25p1ies46_$LT$impl$u20$msp430g2211..port_1_2..P1IES$GT$6modify17h259d660e531d32f5E: %f"}
!17 = distinct !{!17, !"_ZN11msp430g22118port_1_25p1ies46_$LT$impl$u20$msp430g2211..port_1_2..P1IES$GT$6modify17h259d660e531d32f5E"}
!18 = !{!19, !2}
!19 = distinct !{!19, !20, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h07f7c5368af05fb8E: %f"}
!20 = distinct !{!20, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h07f7c5368af05fb8E"}
!21 = !{!22, !24}
!22 = distinct !{!22, !23, !"_ZN5at2xt6keyfsm3Fsm3run17h2e750bdfc4ab486dE: %self"}
!23 = distinct !{!23, !"_ZN5at2xt6keyfsm3Fsm3run17h2e750bdfc4ab486dE"}
!24 = distinct !{!24, !23, !"_ZN5at2xt6keyfsm3Fsm3run17h2e750bdfc4ab486dE: %curr_reply"}
!25 = !{i32 0}
!26 = !{!27}
!27 = distinct !{!27, !28, !"_ZN5at2xt9keybuffer13KeycodeBuffer5flush17he3c92ddbca8d76c9E: %self"}
!28 = distinct !{!28, !"_ZN5at2xt9keybuffer13KeycodeBuffer5flush17he3c92ddbca8d76c9E"}
!29 = !{!30}
!30 = distinct !{!30, !31, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hf92f46dbb3f0fc87E: %self"}
!31 = distinct !{!31, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hf92f46dbb3f0fc87E"}
!32 = !{!33}
!33 = distinct !{!33, !34, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E: %self"}
!34 = distinct !{!34, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E"}
!35 = !{!36, !33}
!36 = distinct !{!36, !37, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!37 = distinct !{!37, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!38 = !{!39, !41}
!39 = distinct !{!39, !40, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hf92f46dbb3f0fc87E: %self"}
!40 = distinct !{!40, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hf92f46dbb3f0fc87E"}
!41 = distinct !{!41, !42, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hd1d0c045c6deef87E: %self"}
!42 = distinct !{!42, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hd1d0c045c6deef87E"}
!43 = !{!44}
!44 = distinct !{!44, !42, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hd1d0c045c6deef87E: argument 0"}
!45 = !{!"branch_weights", i32 2000, i32 1}
!46 = !{!41}
!47 = !{!48}
!48 = distinct !{!48, !49, !"_ZN6msp4309interrupt4free17h034ed1154a4cd22bE: %f.1"}
!49 = distinct !{!49, !"_ZN6msp4309interrupt4free17h034ed1154a4cd22bE"}
!50 = !{!51, !48}
!51 = distinct !{!51, !52, !"_ZN5at2xt11send_xt_bit28_$u7b$$u7b$closure$u7d$$u7d$17he3088b634c869fe3E: %arg0.1"}
!52 = distinct !{!52, !"_ZN5at2xt11send_xt_bit28_$u7b$$u7b$closure$u7d$$u7d$17he3088b634c869fe3E"}
!53 = !{!54, !56, !51, !48}
!54 = distinct !{!54, !55, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE: %f"}
!55 = distinct !{!55, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE"}
!56 = distinct !{!56, !57, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E: argument 0"}
!57 = distinct !{!57, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E"}
!58 = !{!59, !56}
!59 = distinct !{!59, !60, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!60 = distinct !{!60, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!61 = !{!62, !64, !65, !54, !51, !48}
!62 = distinct !{!62, !63, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %arg0"}
!63 = distinct !{!63, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E"}
!64 = distinct !{!64, !63, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %r"}
!65 = distinct !{!65, !63, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %w"}
!66 = !{!67, !69}
!67 = distinct !{!67, !68, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!68 = distinct !{!68, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!69 = distinct !{!69, !70, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!70 = distinct !{!70, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!71 = !{!72, !69}
!72 = distinct !{!72, !73, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!73 = distinct !{!73, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!74 = !{!75, !77, !78, !67}
!75 = distinct !{!75, !76, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!76 = distinct !{!76, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!77 = distinct !{!77, !76, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!78 = distinct !{!78, !76, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!79 = !{!80}
!80 = distinct !{!80, !81, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E: %self"}
!81 = distinct !{!81, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E"}
!82 = !{!83, !80}
!83 = distinct !{!83, !84, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!84 = distinct !{!84, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!85 = !{!86}
!86 = distinct !{!86, !87, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E: %self"}
!87 = distinct !{!87, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E"}
!88 = !{!89, !86}
!89 = distinct !{!89, !90, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!90 = distinct !{!90, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!91 = !{!92, !94}
!92 = distinct !{!92, !93, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!93 = distinct !{!93, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!94 = distinct !{!94, !95, !"_ZN5at2xt6driver12KeyboardPins6xt_out17h4d8e5a3f2f21df8bE: %self"}
!95 = distinct !{!95, !"_ZN5at2xt6driver12KeyboardPins6xt_out17h4d8e5a3f2f21df8bE"}
!96 = !{!97, !94}
!97 = distinct !{!97, !98, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!98 = distinct !{!98, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!99 = !{!100, !94}
!100 = distinct !{!100, !101, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17haec0ebf1445c772cE: %f"}
!101 = distinct !{!101, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17haec0ebf1445c772cE"}
!102 = !{!103, !94}
!103 = distinct !{!103, !104, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17he2279475926e5e95E: %f"}
!104 = distinct !{!104, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17he2279475926e5e95E"}
!105 = !{!106, !108}
!106 = distinct !{!106, !107, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!107 = distinct !{!107, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!108 = distinct !{!108, !109, !"_ZN5at2xt6driver12KeyboardPins5xt_in17h6b26a765c13518f2E: argument 0"}
!109 = distinct !{!109, !"_ZN5at2xt6driver12KeyboardPins5xt_in17h6b26a765c13518f2E"}
!110 = !{!111, !108}
!111 = distinct !{!111, !112, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!112 = distinct !{!112, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!113 = !{!114, !108}
!114 = distinct !{!114, !115, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hf463fbf90f638966E: %f"}
!115 = distinct !{!115, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hf463fbf90f638966E"}
!116 = !{!117, !108}
!117 = distinct !{!117, !118, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h27453d6c93bd4442E: %f"}
!118 = distinct !{!118, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h27453d6c93bd4442E"}
!119 = !{!120}
!120 = distinct !{!120, !121, !"_ZN6msp4309interrupt4free17h09eb1823799d787bE: %f.1"}
!121 = distinct !{!121, !"_ZN6msp4309interrupt4free17h09eb1823799d787bE"}
!122 = !{!123, !125}
!123 = distinct !{!123, !124, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hbafb9874f0f4aba2E: %self"}
!124 = distinct !{!124, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hbafb9874f0f4aba2E"}
!125 = distinct !{!125, !126, !"_ZN5at2xt9keybuffer6KeyOut3put17ha34c1088054ca973E: %self"}
!126 = distinct !{!126, !"_ZN5at2xt9keybuffer6KeyOut3put17ha34c1088054ca973E"}
!127 = !{!128, !120}
!128 = distinct !{!128, !129, !"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h5d6fe945931af021E: %arg0.1"}
!129 = distinct !{!129, !"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17h5d6fe945931af021E"}
!130 = !{!125}
!131 = !{!132, !134, !128, !120}
!132 = distinct !{!132, !133, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17hae7e05f7c89d60a8E: %f"}
!133 = distinct !{!133, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17hae7e05f7c89d60a8E"}
!134 = distinct !{!134, !135, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int17h893abde48ef093b4E: argument 0"}
!135 = distinct !{!135, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int17h893abde48ef093b4E"}
!136 = !{!137, !134}
!137 = distinct !{!137, !138, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!138 = distinct !{!138, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!139 = !{!140, !142, !143, !132, !128, !120}
!140 = distinct !{!140, !141, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17he5133cef47365e81E: %arg0"}
!141 = distinct !{!141, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17he5133cef47365e81E"}
!142 = distinct !{!142, !141, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17he5133cef47365e81E: %r"}
!143 = distinct !{!143, !141, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17he5133cef47365e81E: %w"}
!144 = !{!145}
!145 = distinct !{!145, !146, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E: %self"}
!146 = distinct !{!146, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E"}
!147 = !{!148, !145}
!148 = distinct !{!148, !149, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!149 = distinct !{!149, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!150 = !{!151, !153}
!151 = distinct !{!151, !152, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE: %f"}
!152 = distinct !{!152, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE"}
!153 = distinct !{!153, !154, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E: argument 0"}
!154 = distinct !{!154, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E"}
!155 = !{!156, !153}
!156 = distinct !{!156, !157, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!157 = distinct !{!157, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!158 = !{!159, !161, !162, !151}
!159 = distinct !{!159, !160, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %arg0"}
!160 = distinct !{!160, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E"}
!161 = distinct !{!161, !160, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %r"}
!162 = distinct !{!162, !160, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %w"}
!163 = !{!164, !166}
!164 = distinct !{!164, !165, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!165 = distinct !{!165, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!166 = distinct !{!166, !167, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!167 = distinct !{!167, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!168 = !{!169, !166}
!169 = distinct !{!169, !170, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!170 = distinct !{!170, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!171 = !{!172, !174, !175, !164}
!172 = distinct !{!172, !173, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!173 = distinct !{!173, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!174 = distinct !{!174, !173, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!175 = distinct !{!175, !173, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!176 = !{!177}
!177 = distinct !{!177, !178, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h2049a74c19f92ca4E: %f"}
!178 = distinct !{!178, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h2049a74c19f92ca4E"}
!179 = !{!180, !182}
!180 = distinct !{!180, !181, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE: %f"}
!181 = distinct !{!181, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE"}
!182 = distinct !{!182, !183, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E: argument 0"}
!183 = distinct !{!183, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E"}
!184 = !{!185, !182}
!185 = distinct !{!185, !186, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!186 = distinct !{!186, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!187 = !{!188, !190, !191, !180}
!188 = distinct !{!188, !189, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %arg0"}
!189 = distinct !{!189, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E"}
!190 = distinct !{!190, !189, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %r"}
!191 = distinct !{!191, !189, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %w"}
!192 = !{!193, !195}
!193 = distinct !{!193, !194, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!194 = distinct !{!194, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!195 = distinct !{!195, !196, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!196 = distinct !{!196, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!197 = !{!198, !195}
!198 = distinct !{!198, !199, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!199 = distinct !{!199, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!200 = !{!201, !203, !204, !193}
!201 = distinct !{!201, !202, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!202 = distinct !{!202, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!203 = distinct !{!203, !202, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!204 = distinct !{!204, !202, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!205 = !{!206, !208}
!206 = distinct !{!206, !207, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h1fe9193371ef6616E: %f"}
!207 = distinct !{!207, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h1fe9193371ef6616E"}
!208 = distinct !{!208, !209, !"_ZN5at2xt6driver3Pin5mk_in17h0962a2b99daf42ecE: argument 0"}
!209 = distinct !{!209, !"_ZN5at2xt6driver3Pin5mk_in17h0962a2b99daf42ecE"}
!210 = !{!211, !213}
!211 = distinct !{!211, !212, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17heff1182437cccabeE: %f"}
!212 = distinct !{!212, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17heff1182437cccabeE"}
!213 = distinct !{!213, !214, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h597b68e88c5b78beE: argument 0"}
!214 = distinct !{!214, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h597b68e88c5b78beE"}
!215 = !{!216, !213}
!216 = distinct !{!216, !217, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!217 = distinct !{!217, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!218 = !{!219, !221, !222, !211}
!219 = distinct !{!219, !220, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17h4e20138e45595c18E: %arg0"}
!220 = distinct !{!220, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17h4e20138e45595c18E"}
!221 = distinct !{!221, !220, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17h4e20138e45595c18E: %r"}
!222 = distinct !{!222, !220, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int28_$u7b$$u7b$closure$u7d$$u7d$17h4e20138e45595c18E: %w"}
!223 = !{!224, !226}
!224 = distinct !{!224, !225, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h70ec04a16b43aa91E: %f"}
!225 = distinct !{!225, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h70ec04a16b43aa91E"}
!226 = distinct !{!226, !227, !"_ZN5at2xt6driver12KeyboardPins17enable_at_clk_int17h9a7763ec713d99c7E: argument 0"}
!227 = distinct !{!227, !"_ZN5at2xt6driver12KeyboardPins17enable_at_clk_int17h9a7763ec713d99c7E"}
!228 = !{!229}
!229 = distinct !{!229, !230, !"_ZN6msp4309interrupt4free17h3d56ecc2dab25995E: %f.1"}
!230 = distinct !{!230, !"_ZN6msp4309interrupt4free17h3d56ecc2dab25995E"}
!231 = !{!232, !229}
!232 = distinct !{!232, !233, !"_ZN5at2xt11start_timer28_$u7b$$u7b$closure$u7d$$u7d$17hf03c1d5a56ece52cE: %arg0.1"}
!233 = distinct !{!233, !"_ZN5at2xt11start_timer28_$u7b$$u7b$closure$u7d$$u7d$17hf03c1d5a56ece52cE"}
!234 = !{!235, !232, !229}
!235 = distinct !{!235, !236, !"_ZN11msp430g22118timer_a26taccr047_$LT$impl$u20$msp430g2211..timer_a2..TACCR0$GT$5write17hc3ba64c067bb78daE: %f"}
!236 = distinct !{!236, !"_ZN11msp430g22118timer_a26taccr047_$LT$impl$u20$msp430g2211..timer_a2..TACCR0$GT$5write17hc3ba64c067bb78daE"}
!237 = !{!238}
!238 = distinct !{!238, !239, !"_ZN5at2xt13porta_handler17h1047ba2e141b8e56E: %r"}
!239 = distinct !{!239, !"_ZN5at2xt13porta_handler17h1047ba2e141b8e56E"}
!240 = !{!241}
!241 = distinct !{!241, !242, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hbafb9874f0f4aba2E: %self"}
!242 = distinct !{!242, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hbafb9874f0f4aba2E"}
!243 = !{!244, !238}
!244 = distinct !{!244, !245, !"_ZN5at2xt6driver3Pin6is_set17h986f9bbafe364b7fE: %self"}
!245 = distinct !{!245, !"_ZN5at2xt6driver3Pin6is_set17h986f9bbafe364b7fE"}
!246 = !{!247, !244}
!247 = distinct !{!247, !248, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!248 = distinct !{!248, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!249 = !{!250}
!250 = distinct !{!250, !251, !"_ZN5at2xt9keybuffer5KeyIn8shift_in17ha1ea3df779b4bf64E: %self"}
!251 = distinct !{!251, !"_ZN5at2xt9keybuffer5KeyIn8shift_in17ha1ea3df779b4bf64E"}
!252 = !{!253}
!253 = distinct !{!253, !254, !"_ZN5at2xt9keybuffer6KeyOut9shift_out17h07ffc0f2b5254c8fE: %self"}
!254 = distinct !{!254, !"_ZN5at2xt9keybuffer6KeyOut9shift_out17h07ffc0f2b5254c8fE"}
!255 = !{!256}
!256 = distinct !{!256, !257, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hbafb9874f0f4aba2E: %self"}
!257 = distinct !{!257, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hbafb9874f0f4aba2E"}
!258 = !{!259, !238}
!259 = distinct !{!259, !260, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E: %self"}
!260 = distinct !{!260, !"_ZN5at2xt6driver3Pin8is_unset17he6c45d43a342f1f3E"}
!261 = !{!262, !259}
!262 = distinct !{!262, !263, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!263 = distinct !{!263, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!264 = !{!265, !267}
!265 = distinct !{!265, !266, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!266 = distinct !{!266, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!267 = distinct !{!267, !268, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!268 = distinct !{!268, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!269 = !{!270, !267}
!270 = distinct !{!270, !271, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!271 = distinct !{!271, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!272 = !{!273, !275, !276, !265}
!273 = distinct !{!273, !274, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!274 = distinct !{!274, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!275 = distinct !{!275, !274, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!276 = distinct !{!276, !274, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!277 = !{!278, !280}
!278 = distinct !{!278, !279, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!279 = distinct !{!279, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!280 = distinct !{!280, !281, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!281 = distinct !{!281, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!282 = !{!283, !280}
!283 = distinct !{!283, !284, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!284 = distinct !{!284, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!285 = !{!286, !288, !289, !278}
!286 = distinct !{!286, !287, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!287 = distinct !{!287, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!288 = distinct !{!288, !287, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!289 = distinct !{!289, !287, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!290 = !{!291}
!291 = distinct !{!291, !292, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h4db4007e9e7744feE: %f"}
!292 = distinct !{!292, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h4db4007e9e7744feE"}
!293 = !{!294}
!294 = distinct !{!294, !295, !"_ZN5at2xt9keybuffer6KeyOut5clear17h83a524ad420e8c70E: %self"}
!295 = distinct !{!295, !"_ZN5at2xt9keybuffer6KeyOut5clear17h83a524ad420e8c70E"}
!296 = !{!297, !299}
!297 = distinct !{!297, !298, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE: %f"}
!298 = distinct !{!298, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17hb72b90cf52c20a6fE"}
!299 = distinct !{!299, !300, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E: argument 0"}
!300 = distinct !{!300, !"_ZN5at2xt6driver3Pin5unset17h4b916aee81ef33b6E"}
!301 = !{!302, !299}
!302 = distinct !{!302, !303, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!303 = distinct !{!303, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!304 = !{!305, !307, !308, !297}
!305 = distinct !{!305, !306, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %arg0"}
!306 = distinct !{!306, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E"}
!307 = distinct !{!307, !306, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %r"}
!308 = distinct !{!308, !306, !"_ZN5at2xt6driver3Pin5unset28_$u7b$$u7b$closure$u7d$$u7d$17h41399a37ee5be0e6E: %w"}
!309 = !{!310, !312}
!310 = distinct !{!310, !311, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!311 = distinct !{!311, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!312 = distinct !{!312, !313, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!313 = distinct !{!313, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!314 = !{!315, !312}
!315 = distinct !{!315, !316, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!316 = distinct !{!316, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!317 = !{!318, !320, !321, !310}
!318 = distinct !{!318, !319, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!319 = distinct !{!319, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!320 = distinct !{!320, !319, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!321 = distinct !{!321, !319, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!322 = !{!323}
!323 = distinct !{!323, !324, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h2049a74c19f92ca4E: %f"}
!324 = distinct !{!324, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h2049a74c19f92ca4E"}
!325 = !{!326, !328}
!326 = distinct !{!326, !327, !"_ZN5at2xt9keybuffer5KeyIn7is_full17h28e771e06a252b71E: %self"}
!327 = distinct !{!327, !"_ZN5at2xt9keybuffer5KeyIn7is_full17h28e771e06a252b71E"}
!328 = distinct !{!328, !329, !"_ZN5at2xt9keybuffer5KeyIn4take17h03a2b0ffe2ac68a3E: %self"}
!329 = distinct !{!329, !"_ZN5at2xt9keybuffer5KeyIn4take17h03a2b0ffe2ac68a3E"}
!330 = !{!331, !238}
!331 = distinct !{!331, !329, !"_ZN5at2xt9keybuffer5KeyIn4take17h03a2b0ffe2ac68a3E: argument 0"}
!332 = !{!328}
!333 = !{!334}
!334 = distinct !{!334, !335, !"_ZN5at2xt9keybuffer13KeycodeBuffer3put17he2bb79bc220ff24cE: %self"}
!335 = distinct !{!335, !"_ZN5at2xt9keybuffer13KeycodeBuffer3put17he2bb79bc220ff24cE"}
!336 = !{!337}
!337 = distinct !{!337, !338, !"_ZN5at2xt9keybuffer5KeyIn5clear17h3783286743035f4dE: %self"}
!338 = distinct !{!338, !"_ZN5at2xt9keybuffer5KeyIn5clear17h3783286743035f4dE"}
!339 = !{!340, !342}
!340 = distinct !{!340, !341, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!341 = distinct !{!341, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!342 = distinct !{!342, !343, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!343 = distinct !{!343, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!344 = !{!345, !342}
!345 = distinct !{!345, !346, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!346 = distinct !{!346, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!347 = !{!348, !350, !351, !340}
!348 = distinct !{!348, !349, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!349 = distinct !{!349, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!350 = distinct !{!350, !349, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!351 = distinct !{!351, !349, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!352 = !{!353, !355}
!353 = distinct !{!353, !354, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E: %f"}
!354 = distinct !{!354, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h742b98bdbeaa87d2E"}
!355 = distinct !{!355, !356, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E: argument 0"}
!356 = distinct !{!356, !"_ZN5at2xt6driver3Pin3set17h21676b0a49d0df06E"}
!357 = !{!358, !355}
!358 = distinct !{!358, !359, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!359 = distinct !{!359, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!360 = !{!361, !363, !364, !353}
!361 = distinct !{!361, !362, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %arg0"}
!362 = distinct !{!362, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E"}
!363 = distinct !{!363, !362, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %r"}
!364 = distinct !{!364, !362, !"_ZN5at2xt6driver3Pin3set28_$u7b$$u7b$closure$u7d$$u7d$17h7c7548b30638f263E: %w"}
!365 = !{!366}
!366 = distinct !{!366, !367, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h4db4007e9e7744feE: %f"}
!367 = distinct !{!367, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h4db4007e9e7744feE"}
!368 = !{!369, !371, !373, !375}
!369 = distinct !{!369, !370, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!370 = distinct !{!370, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!371 = distinct !{!371, !372, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h597b68e88c5b78beE: argument 0"}
!372 = distinct !{!372, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h597b68e88c5b78beE"}
!373 = distinct !{!373, !374, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E: %self"}
!374 = distinct !{!374, !"_ZN5at2xt6driver3Pin7bitmask17h212d2be0f81ba7a0E"}
!375 = distinct !{!375, !376, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h597b68e88c5b78beE: argument 0"}
!376 = distinct !{!376, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h597b68e88c5b78beE"}
!377 = !{!378}
!378 = distinct !{!378, !379, !"_ZN11msp430g221111Peripherals3all17h345d31e7960c8698E: argument 0"}
!379 = distinct !{!379, !"_ZN11msp430g221111Peripherals3all17h345d31e7960c8698E"}
!380 = !{!381}
!381 = distinct !{!381, !382, !"_ZN5at2xt4init53_$LT$impl$u20$at2xt.._initResources$LT$$u27$a$GT$$GT$3new17h5e550d7d78062c79E: argument 0"}
!382 = distinct !{!382, !"_ZN5at2xt4init53_$LT$impl$u20$at2xt.._initResources$LT$$u27$a$GT$$GT$3new17h5e550d7d78062c79E"}
!383 = !{i32 3}
!384 = !{i32 4}
!385 = !{i32 6}
!386 = !{i32 7}
!387 = !{i32 8}
!388 = !{i32 2}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment