Skip to content

Instantly share code, notes, and snippets.

@cr1901
Created January 29, 2018 00:57
Show Gist options
  • Save cr1901/fb53515a50397d890f11ec126036793f to your computer and use it in GitHub Desktop.
Save cr1901/fb53515a50397d890f11ec126036793f to your computer and use it in GitHub Desktop.
AT2XT Bad LLVM
; ModuleID = 'at2xt0-77d68ea1ad8be81bc97a6e8a934656bf.rs'
source_filename = "at2xt0-77d68ea1ad8be81bc97a6e8a934656bf.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_LUT17h83274ebdf4727c78E = 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
@_ZN5at2xt9HOST_MODE17h91cc6a6dea55319fE = internal global i8 0, align 1
@_ZN5at2xt10DEVICE_ACK17hf51f838bcce74d5dE = internal global i8 0, align 1
@str.0 = internal constant [43 x i8] c"called `Option::unwrap()` on a `None` value"
@str.1 = internal constant [108 x i8] c"C:\5CUsers\5CWilliam\5C.rustup\5Ctoolchains\5Cnightly-x86_64-pc-windows-gnu\5Clib\5Crustlib\5Csrc\5Crust\5Csrc\5Clibcore\5Coption.rs"
@ref.2 = private unnamed_addr constant { [0 x i8], { [0 x i8]*, i16 }, [0 x i8], { [0 x i8]*, i16 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] } { [0 x i8] undef, { [0 x i8]*, i16 } { [0 x i8]* bitcast ([43 x i8]* @str.0 to [0 x i8]*), i16 43 }, [0 x i8] undef, { [0 x i8]*, i16 } { [0 x i8]* bitcast ([108 x i8]* @str.1 to [0 x i8]*), i16 108 }, [0 x i8] undef, i32 335, [0 x i8] undef, i32 21, [0 x i8] undef }, align 2
@_ZN5at2xt9IN_BUFFER17h23c510f0cff1f466E = 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_OUT17hcc5c830d0b14d6a4E.0 = internal unnamed_addr global i16 0, align 2
@_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.1 = internal unnamed_addr global i8 10, align 2
@_ZN5at2xt6KEY_IN17h68f4423617f224efE.0 = internal unnamed_addr global i16 0, align 2
@_ZN5at2xt6KEY_IN17h68f4423617f224efE.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_VECTOR17h9e46cc120d863f8bE = internal constant void ()* @_ZN9msp430_rt13reset_handler10trampoline17hbbef87ab866857d9E, section ".vector_table.reset_vector", align 2
@_ZN9msp430_rt4KEEP17hadfa3a440c3cf2d8E = 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_VECTOR17h9e46cc120d863f8bE to i8*), i8* bitcast (void ()** @_ZN9msp430_rt4KEEP17hadfa3a440c3cf2d8E to i8*)], section "llvm.metadata"
; core::result::unwrap_failed
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core6result13unwrap_failed17h9e5f78c00d202781E() unnamed_addr #0 {
start:
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17hdb459387eb23255dE()
unreachable
}
; at2xt::send_xt_bit
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt11send_xt_bit17hd0dc70dc1c89d8acE(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 %_ZN6msp4309interrupt4free17h3d162a95ff2a947fE.exit, label %bb6.i
bb6.i: ; preds = %start
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !noalias !0, !srcloc !3
br label %_ZN6msp4309interrupt4free17h3d162a95ff2a947fE.exit
_ZN6msp4309interrupt4free17h3d162a95ff2a947fE.exit: ; preds = %start, %bb6.i
call void asm sideeffect "\0A1:\0A dec $0\0A jne 1b\0A ", "{r12},~{r12}"(i16 88) #5, !srcloc !12
%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 !13
%12 = or i8 %11, 4
store volatile i8 %12, i8* inttoptr (i16 33 to i8*), align 1, !noalias !13
%13 = and i16 %10, 8
%14 = icmp eq i16 %13, 0
br i1 %14, label %_ZN6msp4309interrupt4free17h418d9d873d64056eE.exit, label %bb6.i5
bb6.i5: ; preds = %_ZN6msp4309interrupt4free17h3d162a95ff2a947fE.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h418d9d873d64056eE.exit
_ZN6msp4309interrupt4free17h418d9d873d64056eE.exit: ; preds = %_ZN6msp4309interrupt4free17h3d162a95ff2a947fE.exit, %bb6.i5
ret void
}
; at2xt::send_byte_to_pc
; Function Attrs: nounwind optsize
define internal fastcc void @_ZN5at2xt15send_byte_to_pc17h347cfc7490ff2c08E(i8) unnamed_addr #1 {
start:
br label %bb1
bb1: ; preds = %_ZN6msp4309interrupt4free17h0462a2986e36fef4E.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 !18
%3 = and i8 %2, 4
%4 = icmp eq i8 %3, 0
br i1 %4, label %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h75aba8c354776111E.exit.i", label %bb5.i.i
bb5.i.i: ; preds = %bb1
%5 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !21
%6 = and i8 %5, 8
%7 = icmp eq i8 %6, 0
br label %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h75aba8c354776111E.exit.i"
"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h75aba8c354776111E.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 %_ZN6msp4309interrupt4free17h0462a2986e36fef4E.exit, label %bb6.i
bb6.i: ; preds = %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h75aba8c354776111E.exit.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h0462a2986e36fef4E.exit
_ZN6msp4309interrupt4free17h0462a2986e36fef4E.exit: ; preds = %"_ZN5at2xt15send_byte_to_pc28_$u7b$$u7b$closure$u7d$$u7d$17h75aba8c354776111E.exit.i", %bb6.i
br i1 %_0.0.i.i, label %bb1, label %bb2
bb2: ; preds = %_ZN6msp4309interrupt4free17h0462a2986e36fef4E.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 !24
%12 = or i8 %11, 12
store volatile i8 %12, i8* inttoptr (i16 33 to i8*), align 1, !noalias !24
%13 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !29
%14 = or i8 %13, 12
store volatile i8 %14, i8* inttoptr (i16 34 to i8*), align 2, !noalias !29
%15 = and i16 %10, 8
%16 = icmp eq i16 %15, 0
br i1 %16, label %_ZN6msp4309interrupt4free17h893a530aa6d2b93cE.exit, label %bb6.i8
bb6.i8: ; preds = %bb2
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h893a530aa6d2b93cE.exit
_ZN6msp4309interrupt4free17h893a530aa6d2b93cE.exit: ; preds = %bb2, %bb6.i8
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17hd0dc70dc1c89d8acE(i8 0)
; call at2xt::send_xt_bit
call fastcc void @_ZN5at2xt11send_xt_bit17hd0dc70dc1c89d8acE(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 !32
%19 = or i8 %18, 8
store volatile i8 %19, i8* inttoptr (i16 33 to i8*), align 1, !noalias !32
%20 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !37
%21 = and i8 %20, -13
store volatile i8 %21, i8* inttoptr (i16 34 to i8*), align 2, !noalias !37
%22 = and i16 %17, 8
%23 = icmp eq i16 %22, 0
br i1 %23, label %_ZN6msp4309interrupt4free17h17686fccf52c55a4E.exit, label %bb6.i10
bb6.i10: ; preds = %bb11
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h17686fccf52c55a4E.exit
_ZN6msp4309interrupt4free17h17686fccf52c55a4E.exit: ; preds = %bb11, %bb6.i10
ret void
bb13: ; preds = %_ZN6msp4309interrupt4free17h893a530aa6d2b93cE.exit, %bb13
%byte.021 = phi i8 [ %0, %_ZN6msp4309interrupt4free17h893a530aa6d2b93cE.exit ], [ %26, %bb13 ]
%iter.sroa.0.020 = phi i32 [ 0, %_ZN6msp4309interrupt4free17h893a530aa6d2b93cE.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_bit17hd0dc70dc1c89d8acE(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_keyboard17hcc43cc4f662417f9E(i8) unnamed_addr #1 {
start:
%1 = tail call i16 asm sideeffect "mov R2, $0", "=r"() #5, !noalias !40, !srcloc !3
tail call void asm sideeffect "dint { nop", "~{memory}"() #5, !noalias !40, !srcloc !3
%2 = load i8, i8* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.1, align 2, !alias.scope !43, !noalias !48
%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$17hfdf50c52870c6f57E.exit.i"
bb3.i.i.i: ; preds = %start
; call core::result::unwrap_failed
tail call fastcc void @_ZN4core6result13unwrap_failed17h9e5f78c00d202781E() #5, !noalias !48
unreachable
"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17hfdf50c52870c6f57E.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_OUT17hcc5c830d0b14d6a4E.0, align 2, !alias.scope !51, !noalias !48
store i8 0, i8* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.1, align 2, !alias.scope !51, !noalias !48
%15 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !52
%16 = and i8 %15, -2
store volatile i8 %16, i8* inttoptr (i16 37 to i8*), align 1, !noalias !52
%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$17hfdf50c52870c6f57E.exit.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !noalias !40, !srcloc !3
br label %bb2
bb2: ; preds = %bb6.i, %"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17hfdf50c52870c6f57E.exit.i", %_ZN6msp4309interrupt4free17h6eff08da8c9bd505E.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 !57
%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 %_ZN6msp4309interrupt4free17h6eff08da8c9bd505E.exit, label %bb6.i8
bb6.i8: ; preds = %bb2
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h6eff08da8c9bd505E.exit
_ZN6msp4309interrupt4free17h6eff08da8c9bd505E.exit: ; preds = %bb2, %bb6.i8
br i1 %22, label %bb2, label %bb3
bb3: ; preds = %_ZN6msp4309interrupt4free17h6eff08da8c9bd505E.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 !60
%27 = and i8 %26, -2
store volatile i8 %27, i8* inttoptr (i16 33 to i8*), align 1, !noalias !60
%28 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !65
%29 = or i8 %28, 16
store volatile i8 %29, i8* inttoptr (i16 33 to i8*), align 1, !noalias !65
%30 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !70
%31 = or i8 %30, 17
store volatile i8 %31, i8* inttoptr (i16 34 to i8*), align 2, !noalias !70
%32 = and i16 %25, 8
%33 = icmp eq i16 %32, 0
br i1 %33, label %_ZN6msp4309interrupt4free17had9c9aa3a8e1a472E.exit, label %bb6.i10
bb6.i10: ; preds = %bb3
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17had9c9aa3a8e1a472E.exit
_ZN6msp4309interrupt4free17had9c9aa3a8e1a472E.exit: ; preds = %bb3, %bb6.i10
call void asm sideeffect "\0A1:\0A dec $0\0A jne 1b\0A ", "{r12},~{r12}"(i16 160) #5, !srcloc !12
%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 !73
%36 = and i8 %35, -17
store volatile i8 %36, i8* inttoptr (i16 33 to i8*), align 1, !noalias !73
%37 = and i16 %34, 8
%38 = icmp eq i16 %37, 0
br i1 %38, label %_ZN6msp4309interrupt4free17h8d1b9ea4992e74f3E.exit, label %bb6.i12
bb6.i12: ; preds = %_ZN6msp4309interrupt4free17had9c9aa3a8e1a472E.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h8d1b9ea4992e74f3E.exit
_ZN6msp4309interrupt4free17h8d1b9ea4992e74f3E.exit: ; preds = %_ZN6msp4309interrupt4free17had9c9aa3a8e1a472E.exit, %bb6.i12
call void asm sideeffect "\0A1:\0A dec $0\0A jne 1b\0A ", "{r12},~{r12}"(i16 52) #5, !srcloc !12
%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 !78
%41 = or i8 %40, 1
store volatile i8 %41, i8* inttoptr (i16 33 to i8*), align 1, !noalias !78
%42 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !83
%43 = and i8 %42, -2
store volatile i8 %43, i8* inttoptr (i16 34 to i8*), align 2, !noalias !83
%44 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !88
%45 = and i8 %44, -2
store volatile i8 %45, i8* inttoptr (i16 35 to i8*), align 1, !noalias !88
%46 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !93
%47 = or i8 %46, 1
store volatile i8 %47, i8* inttoptr (i16 37 to i8*), align 1, !noalias !93
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt9HOST_MODE17h91cc6a6dea55319fE, i8 1) #5, !srcloc !3
call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hf51f838bcce74d5dE, 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 = %_ZN6msp4309interrupt4free17h8d1b9ea4992e74f3E.exit
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %bb13
bb13: ; preds = %bb6.i14, %_ZN6msp4309interrupt4free17h8d1b9ea4992e74f3E.exit, %bb13
%50 = call i8 asm sideeffect "mov.b $1, $0", "=r,*m,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hf51f838bcce74d5dE) #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_MODE17h91cc6a6dea55319fE, i8 0) #5, !srcloc !3
ret void
}
; Function Attrs: noreturn nounwind optsize
define void @abort() unnamed_addr #2 {
start:
br label %bb1
bb1: ; preds = %bb1, %start
tail call void asm sideeffect "", "~{memory}"() #5, !srcloc !3
br label %bb1
}
; 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_MODE17h91cc6a6dea55319fE) #5, !noalias !98, !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_OUT17hcc5c830d0b14d6a4E.1, align 2, !alias.scope !101, !noalias !98
%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 !104
%5 = lshr i8 %4, 4
%.lobit = and i8 %5, 1
%6 = zext i8 %.lobit to i16
%7 = load i16, i16* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.0, align 2, !alias.scope !107, !noalias !98
%8 = shl i16 %7, 1
%9 = or i16 %6, %8
store i16 %9, i16* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.0, align 2, !alias.scope !107, !noalias !98
%10 = load i8, i8* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.1, align 2, !alias.scope !107, !noalias !98
%11 = add i8 %10, 1
store i8 %11, i8* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.1, align 2, !alias.scope !107, !noalias !98
%12 = icmp ugt i8 %11, 10
br i1 %12, label %bb41.i, label %_ZN5at2xt13porta_handler17h93b8f0800b00ae74E.exit
bb6.i: ; preds = %bb2.i
%13 = load i16, i16* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.0, align 2, !alias.scope !110, !noalias !98
%14 = and i16 %13, 1
%15 = icmp ne i16 %14, 0
%16 = lshr i16 %13, 1
store i16 %16, i16* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.0, align 2, !alias.scope !110, !noalias !98
%17 = add i8 %2, 1
store i8 %17, i8* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.1, align 2, !alias.scope !110, !noalias !98
%18 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !98
%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 !98
%21 = load i8, i8* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.1, align 2, !alias.scope !113, !noalias !98
%22 = icmp ugt i8 %21, 9
br i1 %22, label %bb19.i, label %_ZN5at2xt13porta_handler17h93b8f0800b00ae74E.exit
bb7.i: ; preds = %bb2.i
%23 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !116
%24 = and i8 %23, 16
%25 = icmp eq i8 %24, 0
br i1 %25, label %bb26.i, label %_ZN5at2xt13porta_handler17h93b8f0800b00ae74E.exit
bb19.i: ; preds = %bb6.i
%26 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !119
%27 = or i8 %26, 1
store volatile i8 %27, i8* inttoptr (i16 33 to i8*), align 1, !noalias !119
%28 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !124
%29 = or i8 %28, 16
store volatile i8 %29, i8* inttoptr (i16 33 to i8*), align 1, !noalias !124
%30 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !129
%31 = and i8 %30, -18
store volatile i8 %31, i8* inttoptr (i16 34 to i8*), align 2, !noalias !129
br label %_ZN5at2xt13porta_handler17h93b8f0800b00ae74E.exit
bb26.i: ; preds = %bb7.i
tail call void asm sideeffect "mov.b $1, $0", "*m,ir,~{memory}"(i8* nonnull @_ZN5at2xt10DEVICE_ACK17hf51f838bcce74d5dE, i8 1) #5, !noalias !98, !srcloc !3
store i8 10, i8* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.1, align 2, !alias.scope !132, !noalias !98
store i16 0, i16* @_ZN5at2xt7KEY_OUT17hcc5c830d0b14d6a4E.0, align 2, !alias.scope !132, !noalias !98
br label %_ZN5at2xt13porta_handler17h93b8f0800b00ae74E.exit
bb41.i: ; preds = %bb3.i
%32 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !135
%33 = and i8 %32, -2
store volatile i8 %33, i8* inttoptr (i16 33 to i8*), align 1, !noalias !135
%34 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !140
%35 = or i8 %34, 16
store volatile i8 %35, i8* inttoptr (i16 33 to i8*), align 1, !noalias !140
%36 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !145
%37 = or i8 %36, 17
store volatile i8 %37, i8* inttoptr (i16 34 to i8*), align 2, !noalias !145
%38 = load i8, i8* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.1, align 2, !alias.scope !148, !noalias !153
%39 = icmp ugt i8 %38, 10
br i1 %39, label %"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE.exit.i", label %bb1.i.i
bb1.i.i: ; preds = %bb41.i
; call core::panicking::panic
tail call fastcc void @_ZN4core9panicking5panic17h98ab0a586d7538e5E({ [0 x i16], { [0 x i8]*, i16 }, [0 x i16], { [0 x i8]*, i16 }, [0 x i16], i32, [0 x i16], i32, [0 x i16] }* noalias readonly dereferenceable(16) bitcast ({ [0 x i8], { [0 x i8]*, i16 }, [0 x i8], { [0 x i8]*, i16 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.2 to { [0 x i16], { [0 x i8]*, i16 }, [0 x i16], { [0 x i8]*, i16 }, [0 x i16], i32, [0 x i16], i32, [0 x i16] }*)) #5, !noalias !155
unreachable
"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE.exit.i": ; preds = %bb41.i
store i8 0, i8* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.1, align 2, !alias.scope !158, !noalias !153
%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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !159, !noalias !98
%41 = zext i8 %40 to i16
%42 = icmp ult i8 %40, 16
br i1 %42, label %_ZN5at2xt9keybuffer13KeycodeBuffer3put17h51119db2c9e086a5E.exit.i, label %panic.i.i, !prof !162
panic.i.i: ; preds = %"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE.exit.i"
; call core::panicking::panic_bounds_check
tail call fastcc void @_ZN4core9panicking18panic_bounds_check17hb2b74d1421107b88E(i16 %41, i16 16) #5
unreachable
_ZN5at2xt9keybuffer13KeycodeBuffer3put17h51119db2c9e086a5E.exit.i: ; preds = %"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE.exit.i"
%43 = load i16, i16* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.0, align 2, !alias.scope !158, !noalias !153
%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_BUFFER17h23c510f0cff1f466E to [16 x i16]*), i16 0, i16 %41
store i16 %43, i16* %44, align 2, !alias.scope !159, !noalias !98
%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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !159, !noalias !98
%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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !159, !noalias !98
store i8 0, i8* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.1, align 2, !alias.scope !163, !noalias !98
store i16 0, i16* @_ZN5at2xt6KEY_IN17h68f4423617f224efE.0, align 2, !alias.scope !163, !noalias !98
%48 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !166
%49 = or i8 %48, 1
store volatile i8 %49, i8* inttoptr (i16 33 to i8*), align 1, !noalias !166
%50 = load volatile i8, i8* inttoptr (i16 33 to i8*), align 1, !noalias !171
%51 = or i8 %50, 16
store volatile i8 %51, i8* inttoptr (i16 33 to i8*), align 1, !noalias !171
%52 = load volatile i8, i8* inttoptr (i16 34 to i8*), align 2, !noalias !176
%53 = and i8 %52, -18
store volatile i8 %53, i8* inttoptr (i16 34 to i8*), align 2, !noalias !176
br label %_ZN5at2xt13porta_handler17h93b8f0800b00ae74E.exit
_ZN5at2xt13porta_handler17h93b8f0800b00ae74E.exit: ; preds = %bb3.i, %bb6.i, %bb7.i, %bb19.i, %bb26.i, %_ZN5at2xt9keybuffer13KeycodeBuffer3put17h51119db2c9e086a5E.exit.i
%54 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !98
%55 = and i8 %54, -2
store volatile i8 %55, i8* inttoptr (i16 35 to i8*), align 1, !noalias !98
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 !179
store volatile i8 0, i8* inttoptr (i16 34 to i8*), align 2, !noalias !183
%2 = load volatile i8, i8* inttoptr (i16 35 to i8*), align 1, !noalias !186
%3 = and i8 %2, -2
store volatile i8 %3, i8* inttoptr (i16 35 to i8*), align 1, !noalias !186
%4 = load volatile i8, i8* inttoptr (i16 36 to i8*), align 4, !noalias !189
%5 = or i8 %4, 1
store volatile i8 %5, i8* inttoptr (i16 36 to i8*), align 4, !noalias !189
%6 = load volatile i8, i8* inttoptr (i16 37 to i8*), align 1, !noalias !192
%7 = or i8 %6, 1
store volatile i8 %7, i8* inttoptr (i16 37 to i8*), align 1, !noalias !192
store volatile i8 -120, i8* inttoptr (i16 87 to i8*), align 1, !noalias !179
store volatile i8 4, i8* inttoptr (i16 88 to i8*), align 8, !noalias !179
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_keyboard17hcc43cc4f662417f9E(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_bits17hc0aadff75f1ce514E.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_bits17hc0aadff75f1ce514E.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_bits17hc0aadff75f1ce514E.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_bits17hc0aadff75f1ce514E.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_bits17hc0aadff75f1ce514E.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_bits17hc0aadff75f1ce514E.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_bits17hc0aadff75f1ce514E.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_bits17hc0aadff75f1ce514E.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_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i
i8 -6, label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i
i8 -2, label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i
i8 -18, label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i
i8 119, label %bb27.i.i.i.i
i8 88, label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i
i3 3, label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i
i3 -4, label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i
bb23.i.i.i.i: ; preds = %bb3.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i
bb24.i.i.i.i: ; preds = %bb3.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i
bb25.i.i.i.i: ; preds = %bb3.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i
bb29.i.i.i.i: ; preds = %bb5.i.i.i.i
br label %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i
_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i
unreachable
bb7.i.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_LUT17h83274ebdf4727c78E, i16 0, i16 %10
%12 = load i8, i8* %11, align 1, !noalias !195
br label %bb10.i.i
bb8.i.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_LUT17h83274ebdf4727c78E, i16 0, i16 %14
%16 = load i8, i8* %15, align 1, !noalias !195
%phitmp.i.i.i = or i8 %16, -128
br label %bb10.i.i
bb10.i.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i
; call core::result::unwrap_failed
call fastcc void @_ZN4core6result13unwrap_failed17h9e5f78c00d202781E() #5
unreachable
bb6.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !199
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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !199
%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_keyboard17hcc43cc4f662417f9E(i8 -19) #5
call void asm sideeffect "\0A1:\0A dec $0\0A jne 1b\0A ", "{r12},~{r12}"(i16 4800) #5, !srcloc !12
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17hcc43cc4f662417f9E(i8 %20) #5
br label %bb3.outer.i.i
bb10.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.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_state17h4869a7430d9e0c5bE.exit.i.i.i ]
; call at2xt::send_byte_to_pc
call fastcc void @_ZN5at2xt15send_byte_to_pc17h347cfc7490ff2c08E(i8 %next_cmd.sroa.14.0.i.ph.i.ph.i) #5
br label %bb3.outer.i.i
bb15.i.i: ; preds = %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i, %_ZN5at2xt6keyfsm3Fsm10next_state17h4869a7430d9e0c5bE.exit.i.i.i, %_ZN6msp4309interrupt4free17hb716292a46fe0187E.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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !202
%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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !202
%24 = icmp eq i8 %22, %23
%25 = and i16 %21, 8
%26 = icmp eq i16 %25, 0
br i1 %26, label %_ZN6msp4309interrupt4free17h1b6f9091805f14f0E.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 %_ZN6msp4309interrupt4free17h1b6f9091805f14f0E.exit.i.i
_ZN6msp4309interrupt4free17h1b6f9091805f14f0E.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 = %_ZN6msp4309interrupt4free17h1b6f9091805f14f0E.exit.i.i
%28 = load volatile i8, i8* inttoptr (i16 32 to i8*), align 32, !noalias !205
%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 %_ZN6msp4309interrupt4free17hb716292a46fe0187E.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 %_ZN6msp4309interrupt4free17hb716292a46fe0187E.exit.i.i
_ZN6msp4309interrupt4free17hb716292a46fe0187E.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 = %_ZN6msp4309interrupt4free17hb716292a46fe0187E.exit.i.i
; call at2xt::send_byte_to_at_keyboard
call fastcc void @_ZN5at2xt24send_byte_to_at_keyboard17hcc43cc4f662417f9E(i8 -1) #5
; call at2xt::send_byte_to_pc
call fastcc void @_ZN5at2xt15send_byte_to_pc17h347cfc7490ff2c08E(i8 -86) #5
br label %bb3.i.i
bb25.i.i: ; preds = %_ZN6msp4309interrupt4free17h1b6f9091805f14f0E.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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !208, !noalias !213
%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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 5), align 1, !alias.scope !208, !noalias !213
%35 = icmp eq i8 %33, %34
br i1 %35, label %bb1.i.i.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 %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17hf7725eebde0ddbf6E.exit.i.i.i", label %panic.i.i.i.i.i, !prof !162
panic.i.i.i.i.i: ; preds = %bb3.i.i.i.i.i
; call core::panicking::panic_bounds_check
call fastcc void @_ZN4core9panicking18panic_bounds_check17hb2b74d1421107b88E(i16 %36, i16 16) #5
unreachable
bb1.i.i.i.i.i: ; preds = %bb25.i.i
; call core::panicking::panic
call fastcc void @_ZN4core9panicking5panic17h98ab0a586d7538e5E({ [0 x i16], { [0 x i8]*, i16 }, [0 x i16], { [0 x i8]*, i16 }, [0 x i16], i32, [0 x i16], i32, [0 x i16] }* noalias readonly dereferenceable(16) bitcast ({ [0 x i8], { [0 x i8]*, i16 }, [0 x i8], { [0 x i8]*, i16 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.2 to { [0 x i16], { [0 x i8]*, i16 }, [0 x i16], { [0 x i8]*, i16 }, [0 x i16], i32, [0 x i16], i32, [0 x i16] }*)) #5, !noalias !215
unreachable
"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17hf7725eebde0ddbf6E.exit.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_BUFFER17h23c510f0cff1f466E to [16 x i16]*), i16 0, i16 %36
%39 = load i16, i16* %38, align 2, !alias.scope !218, !noalias !213
%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_BUFFER17h23c510f0cff1f466E, i16 0, i32 1, i32 1, i32 3), align 2, !alias.scope !218, !noalias !213
%42 = and i16 %27, 8
%43 = icmp eq i16 %42, 0
br i1 %43, label %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.exit.i.i, label %bb6.i.i.i
bb6.i.i.i: ; preds = %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17hf7725eebde0ddbf6E.exit.i.i.i"
call void asm sideeffect "nop { eint { nop", "~{memory}"() #5, !srcloc !3
br label %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.exit.i.i
_ZN6msp4309interrupt4free17h115f66655c4d6b39E.exit.i.i: ; preds = %"_ZN5at2xt4idle28_$u7b$$u7b$closure$u7d$$u7d$17hf7725eebde0ddbf6E.exit.i.i.i", %bb6.i.i.i
%44 = lshr i16 %39, 2
%45 = trunc i16 %44 to i8
%v.07.i34.i.i = lshr i16 %39, 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_bits17hc0aadff75f1ce514E.exit.i.i", label %bb4.i.i.i
bb4.i.i.i: ; preds = %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.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, %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.exit.i.i ]
%r.09.i.i.i = phi i8 [ %50, %bb4.i.i.i ], [ %45, %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.exit.i.i ]
%s.08.i.i.i = phi i16 [ %51, %bb4.i.i.i ], [ 7, %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.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_bits17hc0aadff75f1ce514E.exit.i.i", label %bb4.i.i.i
"_ZN69_$LT$u8$u20$as$u20$bit_reverse..bitwise..BitwiseReverse$LT$u8$GT$$GT$9swap_bits17hc0aadff75f1ce514E.exit.i.i": ; preds = %bb4.i.i.i, %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.exit.i.i
%s.0.lcssa.i.i.i = phi i16 [ 7, %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.exit.i.i ], [ %51, %bb4.i.i.i ]
%r.0.lcssa.i.i.i = phi i8 [ %45, %_ZN6msp4309interrupt4free17h115f66655c4d6b39E.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 !219
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 !220
unreachable
}
; Function Attrs: naked nounwind optsize
define weak msp430_intrcc void @TIMERA0() 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 @WDT() 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 @COMPARATORA() 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 @NMI() unnamed_addr #3 {
tail call void asm sideeffect "jmp DEFAULT_HANDLER", ""() #5, !srcloc !224
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_handler10trampoline17hbbef87ab866857d9E() 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_handler17h03e25293d0265fc5E) #5, !srcloc !225
unreachable
}
; msp430_rt::reset_handler
; Function Attrs: noreturn nounwind optsize
define internal void @_ZN9msp430_rt13reset_handler17h03e25293d0265fc5E() 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_check17hb2b74d1421107b88E(i16, i16) unnamed_addr #0 {
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17hdb459387eb23255dE()
unreachable
}
; core::panicking::panic_fmt
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core9panicking9panic_fmt17hdb459387eb23255dE() 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
}
; core::panicking::panic
; Function Attrs: cold noinline noreturn nounwind optsize
define internal fastcc void @_ZN4core9panicking5panic17h98ab0a586d7538e5E({ [0 x i16], { [0 x i8]*, i16 }, [0 x i16], { [0 x i8]*, i16 }, [0 x i16], i32, [0 x i16], i32, [0 x i16] }* noalias nocapture readonly dereferenceable(16)) unnamed_addr #0 {
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17hdb459387eb23255dE()
unreachable
}
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, !"_ZN6msp4309interrupt4free17h3d162a95ff2a947fE: %f.1"}
!2 = distinct !{!2, !"_ZN6msp4309interrupt4free17h3d162a95ff2a947fE"}
!3 = !{i32 0}
!4 = !{!5, !1}
!5 = distinct !{!5, !6, !"_ZN5at2xt11send_xt_bit28_$u7b$$u7b$closure$u7d$$u7d$17h396c18fd15698fbbE: %arg0.1"}
!6 = distinct !{!6, !"_ZN5at2xt11send_xt_bit28_$u7b$$u7b$closure$u7d$$u7d$17h396c18fd15698fbbE"}
!7 = !{!8, !10, !5, !1}
!8 = distinct !{!8, !9, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE: %f"}
!9 = distinct !{!9, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE"}
!10 = distinct !{!10, !11, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E: argument 0"}
!11 = distinct !{!11, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E"}
!12 = !{i32 28}
!13 = !{!14, !16}
!14 = distinct !{!14, !15, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!15 = distinct !{!15, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!16 = distinct !{!16, !17, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!17 = distinct !{!17, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!18 = !{!19}
!19 = distinct !{!19, !20, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E: %self"}
!20 = distinct !{!20, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E"}
!21 = !{!22}
!22 = distinct !{!22, !23, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E: %self"}
!23 = distinct !{!23, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E"}
!24 = !{!25, !27}
!25 = distinct !{!25, !26, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h82f44a3fb6950926E: %f"}
!26 = distinct !{!26, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h82f44a3fb6950926E"}
!27 = distinct !{!27, !28, !"_ZN5at2xt6driver12KeyboardPins6xt_out17h1dcc7522a19c15a1E: %self"}
!28 = distinct !{!28, !"_ZN5at2xt6driver12KeyboardPins6xt_out17h1dcc7522a19c15a1E"}
!29 = !{!30, !27}
!30 = distinct !{!30, !31, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hcb8389e2d9fc204eE: %f"}
!31 = distinct !{!31, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hcb8389e2d9fc204eE"}
!32 = !{!33, !35}
!33 = distinct !{!33, !34, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h8fb18031b51f8bfdE: %f"}
!34 = distinct !{!34, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h8fb18031b51f8bfdE"}
!35 = distinct !{!35, !36, !"_ZN5at2xt6driver12KeyboardPins5xt_in17h50d2a63a694c915dE: argument 0"}
!36 = distinct !{!36, !"_ZN5at2xt6driver12KeyboardPins5xt_in17h50d2a63a694c915dE"}
!37 = !{!38, !35}
!38 = distinct !{!38, !39, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h25cb3f78d725b0b3E: %f"}
!39 = distinct !{!39, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h25cb3f78d725b0b3E"}
!40 = !{!41}
!41 = distinct !{!41, !42, !"_ZN6msp4309interrupt4free17hb0a109fb6ea67a77E: %f.1"}
!42 = distinct !{!42, !"_ZN6msp4309interrupt4free17hb0a109fb6ea67a77E"}
!43 = !{!44, !46}
!44 = distinct !{!44, !45, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf114ea32f20c2bf1E: %self"}
!45 = distinct !{!45, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf114ea32f20c2bf1E"}
!46 = distinct !{!46, !47, !"_ZN5at2xt9keybuffer6KeyOut3put17hd7198803e0e28fbdE: %self"}
!47 = distinct !{!47, !"_ZN5at2xt9keybuffer6KeyOut3put17hd7198803e0e28fbdE"}
!48 = !{!49, !41}
!49 = distinct !{!49, !50, !"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17hfdf50c52870c6f57E: %arg0.1"}
!50 = distinct !{!50, !"_ZN5at2xt24send_byte_to_at_keyboard28_$u7b$$u7b$closure$u7d$$u7d$17hfdf50c52870c6f57E"}
!51 = !{!46}
!52 = !{!53, !55, !49, !41}
!53 = distinct !{!53, !54, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h505ca3f1a4eb6325E: %f"}
!54 = distinct !{!54, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h505ca3f1a4eb6325E"}
!55 = distinct !{!55, !56, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int17h6ae89a7884714669E: argument 0"}
!56 = distinct !{!56, !"_ZN5at2xt6driver12KeyboardPins18disable_at_clk_int17h6ae89a7884714669E"}
!57 = !{!58}
!58 = distinct !{!58, !59, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E: %self"}
!59 = distinct !{!59, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E"}
!60 = !{!61, !63}
!61 = distinct !{!61, !62, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE: %f"}
!62 = distinct !{!62, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE"}
!63 = distinct !{!63, !64, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E: argument 0"}
!64 = distinct !{!64, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E"}
!65 = !{!66, !68}
!66 = distinct !{!66, !67, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!67 = distinct !{!67, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!68 = distinct !{!68, !69, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!69 = distinct !{!69, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!70 = !{!71}
!71 = distinct !{!71, !72, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h3dee8720169907cfE: %f"}
!72 = distinct !{!72, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h3dee8720169907cfE"}
!73 = !{!74, !76}
!74 = distinct !{!74, !75, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE: %f"}
!75 = distinct !{!75, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE"}
!76 = distinct !{!76, !77, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E: argument 0"}
!77 = distinct !{!77, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E"}
!78 = !{!79, !81}
!79 = distinct !{!79, !80, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!80 = distinct !{!80, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!81 = distinct !{!81, !82, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!82 = distinct !{!82, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!83 = !{!84, !86}
!84 = distinct !{!84, !85, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hf044ebad77feb1bbE: %f"}
!85 = distinct !{!85, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17hf044ebad77feb1bbE"}
!86 = distinct !{!86, !87, !"_ZN5at2xt6driver3Pin5mk_in17hd577f4ef175c8f51E: argument 0"}
!87 = distinct !{!87, !"_ZN5at2xt6driver3Pin5mk_in17hd577f4ef175c8f51E"}
!88 = !{!89, !91}
!89 = distinct !{!89, !90, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h5aef6e855b02b8d4E: %f"}
!90 = distinct !{!90, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h5aef6e855b02b8d4E"}
!91 = distinct !{!91, !92, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h6eb7a464f5c73c0bE: argument 0"}
!92 = distinct !{!92, !"_ZN5at2xt6driver12KeyboardPins16clear_at_clk_int17h6eb7a464f5c73c0bE"}
!93 = !{!94, !96}
!94 = distinct !{!94, !95, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17he6a8dcdf67e0163cE: %f"}
!95 = distinct !{!95, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17he6a8dcdf67e0163cE"}
!96 = distinct !{!96, !97, !"_ZN5at2xt6driver12KeyboardPins17enable_at_clk_int17hec20cb936e77d9d3E: argument 0"}
!97 = distinct !{!97, !"_ZN5at2xt6driver12KeyboardPins17enable_at_clk_int17hec20cb936e77d9d3E"}
!98 = !{!99}
!99 = distinct !{!99, !100, !"_ZN5at2xt13porta_handler17h93b8f0800b00ae74E: %r"}
!100 = distinct !{!100, !"_ZN5at2xt13porta_handler17h93b8f0800b00ae74E"}
!101 = !{!102}
!102 = distinct !{!102, !103, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf114ea32f20c2bf1E: %self"}
!103 = distinct !{!103, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf114ea32f20c2bf1E"}
!104 = !{!105, !99}
!105 = distinct !{!105, !106, !"_ZN5at2xt6driver3Pin6is_set17h3512994a98bd17ebE: %self"}
!106 = distinct !{!106, !"_ZN5at2xt6driver3Pin6is_set17h3512994a98bd17ebE"}
!107 = !{!108}
!108 = distinct !{!108, !109, !"_ZN5at2xt9keybuffer5KeyIn8shift_in17hb417c2b1b04b8bf7E: %self"}
!109 = distinct !{!109, !"_ZN5at2xt9keybuffer5KeyIn8shift_in17hb417c2b1b04b8bf7E"}
!110 = !{!111}
!111 = distinct !{!111, !112, !"_ZN5at2xt9keybuffer6KeyOut9shift_out17hd16eb344f1294a60E: %self"}
!112 = distinct !{!112, !"_ZN5at2xt9keybuffer6KeyOut9shift_out17hd16eb344f1294a60E"}
!113 = !{!114}
!114 = distinct !{!114, !115, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf114ea32f20c2bf1E: %self"}
!115 = distinct !{!115, !"_ZN5at2xt9keybuffer6KeyOut8is_empty17hf114ea32f20c2bf1E"}
!116 = !{!117, !99}
!117 = distinct !{!117, !118, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E: %self"}
!118 = distinct !{!118, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E"}
!119 = !{!120, !122}
!120 = distinct !{!120, !121, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!121 = distinct !{!121, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!122 = distinct !{!122, !123, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!123 = distinct !{!123, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!124 = !{!125, !127}
!125 = distinct !{!125, !126, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!126 = distinct !{!126, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!127 = distinct !{!127, !128, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!128 = distinct !{!128, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!129 = !{!130}
!130 = distinct !{!130, !131, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h7faa0df85d743d92E: %f"}
!131 = distinct !{!131, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h7faa0df85d743d92E"}
!132 = !{!133}
!133 = distinct !{!133, !134, !"_ZN5at2xt9keybuffer6KeyOut5clear17h74cfb83a8f83e48eE: %self"}
!134 = distinct !{!134, !"_ZN5at2xt9keybuffer6KeyOut5clear17h74cfb83a8f83e48eE"}
!135 = !{!136, !138}
!136 = distinct !{!136, !137, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE: %f"}
!137 = distinct !{!137, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17h84657ee21da7fc8cE"}
!138 = distinct !{!138, !139, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E: argument 0"}
!139 = distinct !{!139, !"_ZN5at2xt6driver3Pin5unset17hf4300654341619d0E"}
!140 = !{!141, !143}
!141 = distinct !{!141, !142, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!142 = distinct !{!142, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!143 = distinct !{!143, !144, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!144 = distinct !{!144, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!145 = !{!146}
!146 = distinct !{!146, !147, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h3dee8720169907cfE: %f"}
!147 = distinct !{!147, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h3dee8720169907cfE"}
!148 = !{!149, !151}
!149 = distinct !{!149, !150, !"_ZN5at2xt9keybuffer5KeyIn7is_full17hd8bb2a6a552176a3E: %self"}
!150 = distinct !{!150, !"_ZN5at2xt9keybuffer5KeyIn7is_full17hd8bb2a6a552176a3E"}
!151 = distinct !{!151, !152, !"_ZN5at2xt9keybuffer5KeyIn4take17ha87e9ccb4cfcc81bE: %self"}
!152 = distinct !{!152, !"_ZN5at2xt9keybuffer5KeyIn4take17ha87e9ccb4cfcc81bE"}
!153 = !{!154, !99}
!154 = distinct !{!154, !152, !"_ZN5at2xt9keybuffer5KeyIn4take17ha87e9ccb4cfcc81bE: argument 0"}
!155 = !{!156, !99}
!156 = distinct !{!156, !157, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE: %self"}
!157 = distinct !{!157, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE"}
!158 = !{!151}
!159 = !{!160}
!160 = distinct !{!160, !161, !"_ZN5at2xt9keybuffer13KeycodeBuffer3put17h51119db2c9e086a5E: %self"}
!161 = distinct !{!161, !"_ZN5at2xt9keybuffer13KeycodeBuffer3put17h51119db2c9e086a5E"}
!162 = !{!"branch_weights", i32 2000, i32 1}
!163 = !{!164}
!164 = distinct !{!164, !165, !"_ZN5at2xt9keybuffer5KeyIn5clear17h37601650227742acE: %self"}
!165 = distinct !{!165, !"_ZN5at2xt9keybuffer5KeyIn5clear17h37601650227742acE"}
!166 = !{!167, !169}
!167 = distinct !{!167, !168, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!168 = distinct !{!168, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!169 = distinct !{!169, !170, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!170 = distinct !{!170, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!171 = !{!172, !174}
!172 = distinct !{!172, !173, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE: %f"}
!173 = distinct !{!173, !"_ZN11msp430g22118port_1_25p1out46_$LT$impl$u20$msp430g2211..port_1_2..P1OUT$GT$6modify17he72b9dab67725a7aE"}
!174 = distinct !{!174, !175, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E: argument 0"}
!175 = distinct !{!175, !"_ZN5at2xt6driver3Pin3set17h3975944ce91f8604E"}
!176 = !{!177}
!177 = distinct !{!177, !178, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h7faa0df85d743d92E: %f"}
!178 = distinct !{!178, !"_ZN11msp430g22118port_1_25p1dir46_$LT$impl$u20$msp430g2211..port_1_2..P1DIR$GT$6modify17h7faa0df85d743d92E"}
!179 = !{!180, !182}
!180 = distinct !{!180, !181, !"_ZN5at2xt4init17hc947356c54254f57E: %p"}
!181 = distinct !{!181, !"_ZN5at2xt4init17hc947356c54254f57E"}
!182 = distinct !{!182, !181, !"_ZN5at2xt4init17hc947356c54254f57E: %r"}
!183 = !{!184, !180, !182}
!184 = distinct !{!184, !185, !"_ZN5at2xt6driver12KeyboardPins4idle17h05a73c86942344d9E: argument 0"}
!185 = distinct !{!185, !"_ZN5at2xt6driver12KeyboardPins4idle17h05a73c86942344d9E"}
!186 = !{!187, !184, !180, !182}
!187 = distinct !{!187, !188, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h6763fdd55fb02c8aE: %f"}
!188 = distinct !{!188, !"_ZN11msp430g22118port_1_25p1ifg46_$LT$impl$u20$msp430g2211..port_1_2..P1IFG$GT$6modify17h6763fdd55fb02c8aE"}
!189 = !{!190, !184, !180, !182}
!190 = distinct !{!190, !191, !"_ZN11msp430g22118port_1_25p1ies46_$LT$impl$u20$msp430g2211..port_1_2..P1IES$GT$6modify17ha7dd1c0e4ef75456E: %f"}
!191 = distinct !{!191, !"_ZN11msp430g22118port_1_25p1ies46_$LT$impl$u20$msp430g2211..port_1_2..P1IES$GT$6modify17ha7dd1c0e4ef75456E"}
!192 = !{!193, !184, !180, !182}
!193 = distinct !{!193, !194, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h58b9fe612446d363E: %f"}
!194 = distinct !{!194, !"_ZN11msp430g22118port_1_24p1ie45_$LT$impl$u20$msp430g2211..port_1_2..P1IE$GT$6modify17h58b9fe612446d363E"}
!195 = !{!196, !198}
!196 = distinct !{!196, !197, !"_ZN5at2xt6keyfsm3Fsm3run17h0cbf643f0a389311E: %self"}
!197 = distinct !{!197, !"_ZN5at2xt6keyfsm3Fsm3run17h0cbf643f0a389311E"}
!198 = distinct !{!198, !197, !"_ZN5at2xt6keyfsm3Fsm3run17h0cbf643f0a389311E: %curr_reply"}
!199 = !{!200}
!200 = distinct !{!200, !201, !"_ZN5at2xt9keybuffer13KeycodeBuffer5flush17h4035cc3a2625e099E: %self"}
!201 = distinct !{!201, !"_ZN5at2xt9keybuffer13KeycodeBuffer5flush17h4035cc3a2625e099E"}
!202 = !{!203}
!203 = distinct !{!203, !204, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hb19d9b40e67a8678E: %self"}
!204 = distinct !{!204, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hb19d9b40e67a8678E"}
!205 = !{!206}
!206 = distinct !{!206, !207, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E: %self"}
!207 = distinct !{!207, !"_ZN5at2xt6driver3Pin8is_unset17h5795a739ef43b432E"}
!208 = !{!209, !211}
!209 = distinct !{!209, !210, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hb19d9b40e67a8678E: %self"}
!210 = distinct !{!210, !"_ZN5at2xt9keybuffer13KeycodeBuffer8is_empty17hb19d9b40e67a8678E"}
!211 = distinct !{!211, !212, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hf39707da694c2949E: %self"}
!212 = distinct !{!212, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hf39707da694c2949E"}
!213 = !{!214}
!214 = distinct !{!214, !212, !"_ZN5at2xt9keybuffer13KeycodeBuffer4take17hf39707da694c2949E: argument 0"}
!215 = !{!216}
!216 = distinct !{!216, !217, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE: %self"}
!217 = distinct !{!217, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17hb46c7a3231a80e4dE"}
!218 = !{!211}
!219 = !{i32 3}
!220 = !{i32 4}
!221 = !{i32 5}
!222 = !{i32 6}
!223 = !{i32 7}
!224 = !{i32 8}
!225 = !{i32 2}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment