[User]
Tell me what passes to run on the following LLVM-IR to reduce instruction count for stm32 assembly
[code]
source_filename = "out/00011.rob"
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv7m-none-eabi"

@crc32_context = local_unnamed_addr global i64 0
@__undefined = local_unnamed_addr global i64 0

declare void @platform_main_begin() local_unnamed_addr addrspace(1) #0

declare void @crc32_gentab() local_unnamed_addr addrspace(1) #0

declare void @platform_main_end(i64 zeroext, i32) local_unnamed_addr addrspace(1) #0

define i8 @safe_unary_minus_func_int8_t_s(i8 %si) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i8 0, %si
  ret i8 %binop
}

define i8 @safe_add_func_int8_t_s_s(i8 %si1, i8 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i8 %si1, 0
  %cmpi5 = icmp sgt i8 %si2, 0
  %binop = sub i8 127, %si2
  %cmpi11 = icmp sgt i8 %si1, %binop
  %0 = and i1 %cmpi5, %cmpi11
  %or.cond = select i1 %cmpi, i1 %0, i1 false
  br i1 %or.cond, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body
  %cmpi17 = icmp slt i8 %si1, 0
  %cmpi22 = icmp slt i8 %si2, 0
  %spec.select = select i1 %cmpi17, i1 %cmpi22, i1 false
  %narrow = sub nsw i8 -128, %si2
  %cmpi31 = icmp sgt i8 %narrow, %si1
  %or.cond38 = select i1 %spec.select, i1 %cmpi31, i1 false
  %binop37 = select i1 %or.cond38, i8 0, i8 %si2
  %spec.select39 = add i8 %si1, %binop37
  br label %common.ret

common.ret:                                       ; preds = %fullev13, %body
  %common.ret.op = phi i8 [ %si1, %body ], [ %spec.select39, %fullev13 ]
  ret i8 %common.ret.op
}

define i8 @safe_sub_func_int8_t_s_s(i8 %si1, i8 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop7 = xor i8 %si2, %si1
  %binop10 = and i8 %binop7, -128
  %0 = xor i8 %binop10, -1
  %1 = add i8 %si2, %0
  %binop18 = and i8 %binop7, %1
  %cmpi = icmp slt i8 %binop18, 0
  %binop = select i1 %cmpi, i8 0, i8 %si2
  %spec.select = sub i8 %si1, %binop
  ret i8 %spec.select
}

define i8 @safe_mul_func_int8_t_s_s(i8 %si1, i8 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i8 %si1, 0
  %cmpi5 = icmp sgt i8 %si2, 0
  %phi = select i1 %cmpi, i1 %cmpi5, i1 false
  br i1 %phi, label %fullev6, label %fullev13

fullev6:                                          ; preds = %body
  %binop = udiv i8 127, %si2
  %cmpi11 = icmp sgt i8 %si1, %binop
  br i1 %cmpi11, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body, %fullev6
  %cmpi22 = icmp slt i8 %si2, 1
  %spec.select = select i1 %cmpi, i1 %cmpi22, i1 false
  br i1 %spec.select, label %fullev24, label %fullev34

fullev24:                                         ; preds = %fullev13
  %intcast = sext i8 %si2 to i16
  %intcast29 = zext nneg i8 %si1 to i16
  %binop30 = sdiv i16 -128, %intcast29
  %cmpi31 = icmp sgt i16 %binop30, %intcast
  br i1 %cmpi31, label %common.ret, label %fullev34

fullev34:                                         ; preds = %fullev13, %fullev24
  %cmpi38 = icmp slt i8 %si1, 1
  %spec.select86 = select i1 %cmpi38, i1 %cmpi5, i1 false
  br i1 %spec.select86, label %fullev45, label %fullev56

fullev45:                                         ; preds = %fullev34
  %intcast49 = sext i8 %si1 to i16
  %intcast51 = zext nneg i8 %si2 to i16
  %binop52 = sdiv i16 -128, %intcast51
  %cmpi53 = icmp sgt i16 %binop52, %intcast49
  br i1 %cmpi53, label %common.ret, label %fullev56

fullev56:                                         ; preds = %fullev34, %fullev45
  %0 = icmp slt i8 %si1, 0
  %or.cond = select i1 %0, i1 %cmpi22, i1 false
  br i1 %or.cond, label %fullev73, label %if_cont

fullev73:                                         ; preds = %fullev56
  %binop78 = sdiv i8 127, %si1
  %cmpi79 = icmp slt i8 %si2, %binop78
  br i1 %cmpi79, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev73, %fullev24, %fullev6, %fullev45, %if_cont
  %common.ret.op = phi i8 [ %binop85, %if_cont ], [ %si1, %fullev45 ], [ %si1, %fullev6 ], [ %si1, %fullev24 ], [ %si1, %fullev73 ]
  ret i8 %common.ret.op

if_cont:                                          ; preds = %fullev73, %fullev56
  %binop85 = mul i8 %si2, %si1
  br label %common.ret
}

define i8 @safe_mod_func_int8_t_s_s(i8 %si1, i8 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i8 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i8 %si1, -128
  %cmpi10 = icmp eq i8 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i8 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i8 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = srem i8 %si1, %si2
  br label %common.ret
}

define i8 @safe_div_func_int8_t_s_s(i8 %si1, i8 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i8 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i8 %si1, -128
  %cmpi10 = icmp eq i8 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i8 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i8 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = sdiv i8 %si1, %si2
  br label %common.ret
}

define i8 @safe_lshift_func_int8_t_s_s(i8 %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i8 %left, 0
  %0 = icmp ugt i32 %right, 7
  %or.cond = select i1 %cmpi, i1 true, i1 %0
  %intcast = trunc i32 %right to i8
  %binop = lshr i8 127, %intcast
  %cmpi17 = icmp sgt i8 %left, %binop
  %or.cond24 = select i1 %or.cond, i1 true, i1 %cmpi17
  %binop23 = select i1 %or.cond24, i8 0, i8 %intcast
  %common.ret.op = shl i8 %left, %binop23
  ret i8 %common.ret.op
}

define i8 @safe_lshift_func_int8_t_s_u(i8 %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i8 %left, 0
  %cmpi5 = icmp ugt i32 %right, 7
  %phi = select i1 %cmpi, i1 true, i1 %cmpi5
  %intcast = trunc i32 %right to i8
  %binop = lshr i8 127, %intcast
  %cmpi11 = icmp sgt i8 %left, %binop
  %or.cond = select i1 %phi, i1 true, i1 %cmpi11
  %binop17 = select i1 %or.cond, i8 0, i8 %intcast
  %common.ret.op = shl i8 %left, %binop17
  ret i8 %common.ret.op
}

define i8 @safe_rshift_func_int8_t_s_s(i8 %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i8 %left, 0
  %0 = icmp ugt i32 %right, 7
  %or.cond = select i1 %cmpi, i1 true, i1 %0
  %intcast = trunc i32 %right to i8
  %binop = select i1 %or.cond, i8 0, i8 %intcast
  %common.ret.op = ashr i8 %left, %binop
  ret i8 %common.ret.op
}

define i8 @safe_rshift_func_int8_t_s_u(i8 %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i8 %left, 0
  %cmpi5 = icmp ugt i32 %right, 7
  %phi = select i1 %cmpi, i1 true, i1 %cmpi5
  %intcast = trunc i32 %right to i8
  %binop = select i1 %phi, i8 0, i8 %intcast
  %common.ret.op = ashr i8 %left, %binop
  ret i8 %common.ret.op
}

define i16 @safe_unary_minus_func_int16_t_s(i16 %si) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i16 0, %si
  ret i16 %binop
}

define i16 @safe_add_func_int16_t_s_s(i16 %si1, i16 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i16 %si1, 0
  %cmpi5 = icmp sgt i16 %si2, 0
  %binop = sub i16 32767, %si2
  %cmpi11 = icmp sgt i16 %si1, %binop
  %0 = and i1 %cmpi5, %cmpi11
  %or.cond = select i1 %cmpi, i1 %0, i1 false
  br i1 %or.cond, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body
  %cmpi17 = icmp slt i16 %si1, 0
  %cmpi22 = icmp slt i16 %si2, 0
  %spec.select = select i1 %cmpi17, i1 %cmpi22, i1 false
  %narrow = sub nsw i16 -32768, %si2
  %cmpi31 = icmp sgt i16 %narrow, %si1
  %or.cond38 = select i1 %spec.select, i1 %cmpi31, i1 false
  %binop37 = select i1 %or.cond38, i16 0, i16 %si2
  %spec.select39 = add i16 %si1, %binop37
  br label %common.ret

common.ret:                                       ; preds = %fullev13, %body
  %common.ret.op = phi i16 [ %si1, %body ], [ %spec.select39, %fullev13 ]
  ret i16 %common.ret.op
}

define i16 @safe_sub_func_int16_t_s_s(i16 returned %si1, i16 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  ret i16 %si1
}

define i16 @safe_mul_func_int16_t_s_s(i16 %si1, i16 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i16 %si1, 0
  %cmpi5 = icmp sgt i16 %si2, 0
  %phi = select i1 %cmpi, i1 %cmpi5, i1 false
  br i1 %phi, label %fullev6, label %fullev13

fullev6:                                          ; preds = %body
  %binop = udiv i16 32767, %si2
  %cmpi11 = icmp sgt i16 %si1, %binop
  br i1 %cmpi11, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body, %fullev6
  %cmpi22 = icmp slt i16 %si2, 1
  %spec.select = select i1 %cmpi, i1 %cmpi22, i1 false
  br i1 %spec.select, label %fullev24, label %fullev34

fullev24:                                         ; preds = %fullev13
  %intcast = sext i16 %si2 to i32
  %intcast29 = zext nneg i16 %si1 to i32
  %binop30 = sdiv i32 -32768, %intcast29
  %cmpi31 = icmp sgt i32 %binop30, %intcast
  br i1 %cmpi31, label %common.ret, label %fullev34

fullev34:                                         ; preds = %fullev13, %fullev24
  %cmpi38 = icmp slt i16 %si1, 1
  %spec.select86 = select i1 %cmpi38, i1 %cmpi5, i1 false
  br i1 %spec.select86, label %fullev45, label %fullev56

fullev45:                                         ; preds = %fullev34
  %intcast49 = sext i16 %si1 to i32
  %intcast51 = zext nneg i16 %si2 to i32
  %binop52 = sdiv i32 -32768, %intcast51
  %cmpi53 = icmp sgt i32 %binop52, %intcast49
  br i1 %cmpi53, label %common.ret, label %fullev56

fullev56:                                         ; preds = %fullev34, %fullev45
  %0 = icmp slt i16 %si1, 0
  %or.cond = select i1 %0, i1 %cmpi22, i1 false
  br i1 %or.cond, label %fullev73, label %if_cont

fullev73:                                         ; preds = %fullev56
  %binop78 = sdiv i16 32767, %si1
  %cmpi79 = icmp slt i16 %si2, %binop78
  br i1 %cmpi79, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev73, %fullev24, %fullev6, %fullev45, %if_cont
  %common.ret.op = phi i16 [ %binop85, %if_cont ], [ %si1, %fullev45 ], [ %si1, %fullev6 ], [ %si1, %fullev24 ], [ %si1, %fullev73 ]
  ret i16 %common.ret.op

if_cont:                                          ; preds = %fullev73, %fullev56
  %binop85 = mul i16 %si2, %si1
  br label %common.ret
}

define i16 @safe_mod_func_int16_t_s_s(i16 %si1, i16 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i16 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i16 %si1, -32768
  %cmpi10 = icmp eq i16 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i16 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i16 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = srem i16 %si1, %si2
  br label %common.ret
}

define i16 @safe_div_func_int16_t_s_s(i16 %si1, i16 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i16 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i16 %si1, -32768
  %cmpi10 = icmp eq i16 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i16 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i16 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = sdiv i16 %si1, %si2
  br label %common.ret
}

define i16 @safe_lshift_func_int16_t_s_s(i16 %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i16 %left, 0
  %0 = icmp ugt i32 %right, 15
  %or.cond = select i1 %cmpi, i1 true, i1 %0
  %intcast = trunc i32 %right to i16
  %binop = lshr i16 32767, %intcast
  %cmpi17 = icmp sgt i16 %left, %binop
  %or.cond24 = select i1 %or.cond, i1 true, i1 %cmpi17
  %binop23 = select i1 %or.cond24, i16 0, i16 %intcast
  %common.ret.op = shl i16 %left, %binop23
  ret i16 %common.ret.op
}

define i16 @safe_lshift_func_int16_t_s_u(i16 %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i16 %left, 0
  %cmpi5 = icmp ugt i32 %right, 15
  %phi = select i1 %cmpi, i1 true, i1 %cmpi5
  %intcast = trunc i32 %right to i16
  %binop = lshr i16 32767, %intcast
  %cmpi11 = icmp sgt i16 %left, %binop
  %or.cond = select i1 %phi, i1 true, i1 %cmpi11
  %binop17 = select i1 %or.cond, i16 0, i16 %intcast
  %common.ret.op = shl i16 %left, %binop17
  ret i16 %common.ret.op
}

define i16 @safe_rshift_func_int16_t_s_s(i16 %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i16 %left, 0
  %0 = icmp ugt i32 %right, 15
  %or.cond = select i1 %cmpi, i1 true, i1 %0
  %intcast = trunc i32 %right to i16
  %binop = select i1 %or.cond, i16 0, i16 %intcast
  %common.ret.op = ashr i16 %left, %binop
  ret i16 %common.ret.op
}

define i16 @safe_rshift_func_int16_t_s_u(i16 %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i16 %left, 0
  %cmpi5 = icmp ugt i32 %right, 15
  %phi = select i1 %cmpi, i1 true, i1 %cmpi5
  %intcast = trunc i32 %right to i16
  %binop = select i1 %phi, i16 0, i16 %intcast
  %common.ret.op = ashr i16 %left, %binop
  ret i16 %common.ret.op
}

define i32 @safe_unary_minus_func_int32_t_s(i32 %si) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i32 0, %si
  ret i32 %binop
}

define i32 @safe_add_func_int32_t_s_s(i32 %si1, i32 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i32 %si1, 0
  %cmpi5 = icmp sgt i32 %si2, 0
  %binop = sub i32 2147483647, %si2
  %cmpi11 = icmp sgt i32 %si1, %binop
  %0 = and i1 %cmpi5, %cmpi11
  %or.cond = select i1 %cmpi, i1 %0, i1 false
  br i1 %or.cond, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body
  %cmpi17 = icmp slt i32 %si1, 0
  %cmpi22 = icmp slt i32 %si2, 0
  %spec.select = select i1 %cmpi17, i1 %cmpi22, i1 false
  %narrow = sub nsw i32 -2147483648, %si2
  %cmpi31 = icmp sgt i32 %narrow, %si1
  %or.cond38 = select i1 %spec.select, i1 %cmpi31, i1 false
  %binop37 = select i1 %or.cond38, i32 0, i32 %si2
  %spec.select39 = add i32 %si1, %binop37
  br label %common.ret

common.ret:                                       ; preds = %fullev13, %body
  %common.ret.op = phi i32 [ %si1, %body ], [ %spec.select39, %fullev13 ]
  ret i32 %common.ret.op
}

define i32 @safe_sub_func_int32_t_s_s(i32 returned %si1, i32 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  ret i32 %si1
}

define i32 @safe_mul_func_int32_t_s_s(i32 %si1, i32 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i32 %si1, 0
  %cmpi5 = icmp sgt i32 %si2, 0
  %phi = select i1 %cmpi, i1 %cmpi5, i1 false
  br i1 %phi, label %fullev6, label %fullev13

fullev6:                                          ; preds = %body
  %binop = udiv i32 2147483647, %si2
  %cmpi11 = icmp sgt i32 %si1, %binop
  br i1 %cmpi11, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body, %fullev6
  %cmpi22 = icmp slt i32 %si2, 1
  %spec.select = select i1 %cmpi, i1 %cmpi22, i1 false
  br i1 %spec.select, label %fullev24, label %fullev34

fullev24:                                         ; preds = %fullev13
  %intcast = sext i32 %si2 to i64
  %intcast29 = zext nneg i32 %si1 to i64
  %binop30 = sdiv i64 -2147483648, %intcast29
  %cmpi31 = icmp sgt i64 %binop30, %intcast
  br i1 %cmpi31, label %common.ret, label %fullev34

fullev34:                                         ; preds = %fullev13, %fullev24
  %cmpi38 = icmp slt i32 %si1, 1
  %spec.select86 = select i1 %cmpi38, i1 %cmpi5, i1 false
  br i1 %spec.select86, label %fullev45, label %fullev56

fullev45:                                         ; preds = %fullev34
  %intcast49 = sext i32 %si1 to i64
  %intcast51 = zext nneg i32 %si2 to i64
  %binop52 = sdiv i64 -2147483648, %intcast51
  %cmpi53 = icmp sgt i64 %binop52, %intcast49
  br i1 %cmpi53, label %common.ret, label %fullev56

fullev56:                                         ; preds = %fullev34, %fullev45
  %0 = icmp slt i32 %si1, 0
  %or.cond = select i1 %0, i1 %cmpi22, i1 false
  br i1 %or.cond, label %fullev73, label %if_cont

fullev73:                                         ; preds = %fullev56
  %binop78 = sdiv i32 2147483647, %si1
  %cmpi79 = icmp slt i32 %si2, %binop78
  br i1 %cmpi79, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev73, %fullev24, %fullev6, %fullev45, %if_cont
  %common.ret.op = phi i32 [ %binop85, %if_cont ], [ %si1, %fullev45 ], [ %si1, %fullev6 ], [ %si1, %fullev24 ], [ %si1, %fullev73 ]
  ret i32 %common.ret.op

if_cont:                                          ; preds = %fullev73, %fullev56
  %binop85 = mul i32 %si2, %si1
  br label %common.ret
}

define i32 @safe_mod_func_int32_t_s_s(i32 %si1, i32 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i32 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i32 %si1, -2147483648
  %cmpi10 = icmp eq i32 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i32 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i32 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = srem i32 %si1, %si2
  br label %common.ret
}

define i32 @safe_div_func_int32_t_s_s(i32 %si1, i32 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i32 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i32 %si1, -2147483648
  %cmpi10 = icmp eq i32 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i32 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i32 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = sdiv i32 %si1, %si2
  br label %common.ret
}

define i32 @safe_lshift_func_int32_t_s_s(i32 %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i32 %left, 0
  %0 = icmp ugt i32 %right, 31
  %or.cond = select i1 %cmpi, i1 true, i1 %0
  %binop = lshr i32 2147483647, %right
  %cmpi17 = icmp sgt i32 %left, %binop
  %or.cond23 = select i1 %or.cond, i1 true, i1 %cmpi17
  %binop22 = select i1 %or.cond23, i32 0, i32 %right
  %common.ret.op = shl i32 %left, %binop22
  ret i32 %common.ret.op
}

define i32 @safe_lshift_func_int32_t_s_u(i32 %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i32 %left, 0
  %cmpi5 = icmp ugt i32 %right, 31
  %phi = select i1 %cmpi, i1 true, i1 %cmpi5
  %binop = lshr i32 2147483647, %right
  %cmpi11 = icmp sgt i32 %left, %binop
  %or.cond = select i1 %phi, i1 true, i1 %cmpi11
  %binop16 = select i1 %or.cond, i32 0, i32 %right
  %common.ret.op = shl i32 %left, %binop16
  ret i32 %common.ret.op
}

define i32 @safe_rshift_func_int32_t_s_s(i32 %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i32 %left, 0
  %0 = icmp ugt i32 %right, 31
  %or.cond = select i1 %cmpi, i1 true, i1 %0
  %binop = select i1 %or.cond, i32 0, i32 %right
  %common.ret.op = ashr i32 %left, %binop
  ret i32 %common.ret.op
}

define i32 @safe_rshift_func_int32_t_s_u(i32 %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i32 %left, 0
  %cmpi5 = icmp ugt i32 %right, 31
  %phi = select i1 %cmpi, i1 true, i1 %cmpi5
  %binop = select i1 %phi, i32 0, i32 %right
  %common.ret.op = ashr i32 %left, %binop
  ret i32 %common.ret.op
}

define i64 @safe_unary_minus_func_int64_t_s(i64 %si) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i64 0, %si
  ret i64 %binop
}

define i64 @safe_add_func_int64_t_s_s(i64 %si1, i64 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i64 %si1, 0
  %cmpi5 = icmp sgt i64 %si2, 0
  %binop = sub i64 -9223372036854775808, %si2
  %cmpi11 = icmp sgt i64 %si1, %binop
  %0 = and i1 %cmpi5, %cmpi11
  %or.cond37 = select i1 %cmpi, i1 %0, i1 false
  br i1 %or.cond37, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body
  %cmpi17 = icmp slt i64 %si1, 0
  %cmpi22 = icmp slt i64 %si2, 0
  %cmpi30 = icmp slt i64 %si1, %binop
  %1 = and i1 %cmpi22, %cmpi30
  %or.cond = select i1 %cmpi17, i1 %1, i1 false
  %binop36 = select i1 %or.cond, i64 0, i64 %si2
  %spec.select38 = add i64 %binop36, %si1
  br label %common.ret

common.ret:                                       ; preds = %fullev13, %body
  %common.ret.op = phi i64 [ %si1, %body ], [ %spec.select38, %fullev13 ]
  ret i64 %common.ret.op
}

define i64 @safe_sub_func_int64_t_s_s(i64 %si1, i64 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = xor i64 %si2, %si1
  %binop7 = and i64 %binop, -9223372036854775808
  %binop8 = xor i64 %binop7, %si1
  %binop10 = sub i64 %binop8, %si2
  %binop12 = xor i64 %binop10, %si2
  %binop15 = and i64 %binop12, %binop
  %cmpi = icmp slt i64 %binop15, 0
  %binop19 = select i1 %cmpi, i64 0, i64 %si2
  %spec.select = sub i64 %si1, %binop19
  ret i64 %spec.select
}

define i64 @safe_mul_func_int64_t_s_s(i64 %si1, i64 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp sgt i64 %si1, 0
  %cmpi5 = icmp sgt i64 %si2, 0
  %phi = select i1 %cmpi, i1 %cmpi5, i1 false
  br i1 %phi, label %fullev6, label %fullev13

fullev6:                                          ; preds = %body
  %binop = sdiv i64 -9223372036854775808, %si2
  %cmpi11 = icmp sgt i64 %si1, %binop
  br i1 %cmpi11, label %common.ret, label %fullev13

fullev13:                                         ; preds = %body, %fullev6
  %cmpi22 = icmp slt i64 %si2, 1
  %spec.select = select i1 %cmpi, i1 %cmpi22, i1 false
  br i1 %spec.select, label %fullev24, label %fullev33

fullev24:                                         ; preds = %fullev13
  %binop29 = sdiv i64 -9223372036854775808, %si1
  %cmpi30 = icmp slt i64 %si2, %binop29
  br i1 %cmpi30, label %common.ret, label %fullev33

fullev33:                                         ; preds = %fullev13, %fullev24
  %cmpi37 = icmp slt i64 %si1, 1
  %spec.select83 = select i1 %cmpi37, i1 %cmpi5, i1 false
  br i1 %spec.select83, label %fullev44, label %fullev53

fullev44:                                         ; preds = %fullev33
  %binop49 = sdiv i64 -9223372036854775808, %si2
  %cmpi50 = icmp slt i64 %si1, %binop49
  br i1 %cmpi50, label %common.ret, label %fullev53

fullev53:                                         ; preds = %fullev33, %fullev44
  %0 = icmp slt i64 %si1, 0
  %or.cond = select i1 %0, i1 %cmpi22, i1 false
  br i1 %or.cond, label %fullev70, label %if_cont

fullev70:                                         ; preds = %fullev53
  %binop75 = sdiv i64 -9223372036854775808, %si1
  %cmpi76 = icmp slt i64 %si2, %binop75
  br i1 %cmpi76, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev70, %fullev24, %fullev6, %fullev44, %if_cont
  %common.ret.op = phi i64 [ %binop82, %if_cont ], [ %si1, %fullev44 ], [ %si1, %fullev6 ], [ %si1, %fullev24 ], [ %si1, %fullev70 ]
  ret i64 %common.ret.op

if_cont:                                          ; preds = %fullev70, %fullev53
  %binop82 = mul i64 %si2, %si1
  br label %common.ret
}

define i64 @safe_mod_func_int64_t_s_s(i64 %si1, i64 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i64 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i64 %si1, -9223372036854775808
  %cmpi10 = icmp eq i64 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i64 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i64 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = srem i64 %si1, %si2
  br label %common.ret
}

define i64 @safe_div_func_int64_t_s_s(i64 %si1, i64 %si2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i64 %si2, 0
  br i1 %cmpi, label %common.ret, label %fullev

fullev:                                           ; preds = %body
  %cmpi5 = icmp eq i64 %si1, -9223372036854775808
  %cmpi10 = icmp eq i64 %si2, -1
  %spec.select = and i1 %cmpi5, %cmpi10
  br i1 %spec.select, label %common.ret, label %if_cont

common.ret:                                       ; preds = %fullev, %body, %if_cont
  %common.ret.op = phi i64 [ %binop, %if_cont ], [ %si1, %body ], [ %si1, %fullev ]
  ret i64 %common.ret.op

if_cont:                                          ; preds = %fullev
  %binop = sdiv i64 %si1, %si2
  br label %common.ret
}

define i64 @safe_lshift_func_int64_t_s_s(i64 returned %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  ret i64 %left
}

define i64 @safe_lshift_func_int64_t_s_u(i64 returned %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  ret i64 %left
}

define i64 @safe_rshift_func_int64_t_s_s(i64 %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i64 %left, 0
  %0 = icmp ugt i32 %right, 63
  %or.cond = select i1 %cmpi, i1 true, i1 %0
  %intcast15 = zext nneg i32 %right to i64
  %binop = select i1 %or.cond, i64 0, i64 %intcast15
  %common.ret.op = ashr i64 %left, %binop
  ret i64 %common.ret.op
}

define i64 @safe_rshift_func_int64_t_s_u(i64 %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp slt i64 %left, 0
  %cmpi5 = icmp ugt i32 %right, 63
  %phi = select i1 %cmpi, i1 true, i1 %cmpi5
  %intcast = zext nneg i32 %right to i64
  %binop = select i1 %phi, i64 0, i64 %intcast
  %common.ret.op = ashr i64 %left, %binop
  ret i64 %common.ret.op
}

define zeroext i8 @safe_unary_minus_func_uint8_t_u(i8 zeroext %ui) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i8 0, %ui
  ret i8 %binop
}

define zeroext i8 @safe_add_func_uint8_t_u_u(i8 zeroext %ui1, i8 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = add i8 %ui2, %ui1
  ret i8 %binop
}

define zeroext i8 @safe_sub_func_uint8_t_u_u(i8 zeroext %ui1, i8 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i8 %ui1, %ui2
  ret i8 %binop
}

define zeroext i8 @safe_mul_func_uint8_t_u_u(i8 zeroext %ui1, i8 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = mul i8 %ui2, %ui1
  ret i8 %binop
}

define zeroext i8 @safe_mod_func_uint8_t_u_u(i8 zeroext %ui1, i8 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i8 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i8 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i8 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = urem i8 %ui1, %ui2
  br label %common.ret
}

define zeroext i8 @safe_mod_func_uint8_t_u_u.1(i8 zeroext %ui1, i8 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i8 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i8 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i8 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = urem i8 %ui1, %ui2
  br label %common.ret
}

define zeroext i8 @safe_div_func_uint8_t_u_u(i8 zeroext %ui1, i8 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i8 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i8 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i8 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = udiv i8 %ui1, %ui2
  br label %common.ret
}

define zeroext i8 @safe_lshift_func_uint8_t_u_s(i8 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 7
  %intcast = trunc i32 %right to i8
  %binop = lshr i8 -1, %intcast
  %cmpi11 = icmp ugt i8 %left, %binop
  %or.cond = select i1 %phi, i1 true, i1 %cmpi11
  %binop17 = select i1 %or.cond, i8 0, i8 %intcast
  %common.ret.op = shl i8 %left, %binop17
  ret i8 %common.ret.op
}

define zeroext i8 @safe_lshift_func_uint8_t_u_u(i8 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 7
  %intcast = trunc i32 %right to i8
  %binop = lshr i8 -1, %intcast
  %cmpi6 = icmp ugt i8 %left, %binop
  %phi = select i1 %cmpi, i1 true, i1 %cmpi6
  %binop11 = select i1 %phi, i8 0, i8 %intcast
  %common.ret.op = shl i8 %left, %binop11
  ret i8 %common.ret.op
}

define zeroext i8 @safe_rshift_func_uint8_t_u_s(i8 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 7
  %intcast = trunc i32 %right to i8
  %binop = select i1 %phi, i8 0, i8 %intcast
  %common.ret.op = lshr i8 %left, %binop
  ret i8 %common.ret.op
}

define zeroext i8 @safe_rshift_func_uint8_t_u_u(i8 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 7
  %intcast = trunc nuw i32 %right to i8
  %binop = select i1 %cmpi, i8 0, i8 %intcast
  %common.ret.op = lshr i8 %left, %binop
  ret i8 %common.ret.op
}

define zeroext i16 @safe_unary_minus_func_uint16_t_u(i16 zeroext %ui) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i16 0, %ui
  ret i16 %binop
}

define zeroext i16 @safe_add_func_uint16_t_u_u(i16 zeroext %ui1, i16 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = add i16 %ui2, %ui1
  ret i16 %binop
}

define zeroext i16 @safe_sub_func_uint16_t_u_u(i16 zeroext %ui1, i16 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i16 %ui1, %ui2
  ret i16 %binop
}

define zeroext i16 @safe_mul_func_uint16_t_u_u(i16 zeroext %ui1, i16 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = mul i16 %ui2, %ui1
  ret i16 %binop
}

define zeroext i16 @safe_mod_func_uint16_t_u_u(i16 zeroext %ui1, i16 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i16 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i16 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i16 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = urem i16 %ui1, %ui2
  br label %common.ret
}

define zeroext i16 @safe_div_func_uint16_t_u_u(i16 zeroext %ui1, i16 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i16 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i16 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i16 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = udiv i16 %ui1, %ui2
  br label %common.ret
}

define zeroext i16 @safe_lshift_func_uint16_t_u_s(i16 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 15
  %intcast = trunc i32 %right to i16
  %binop = lshr i16 -1, %intcast
  %cmpi11 = icmp ugt i16 %left, %binop
  %or.cond = select i1 %phi, i1 true, i1 %cmpi11
  %binop17 = select i1 %or.cond, i16 0, i16 %intcast
  %common.ret.op = shl i16 %left, %binop17
  ret i16 %common.ret.op
}

define zeroext i16 @safe_lshift_func_uint16_t_u_u(i16 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 15
  %intcast = trunc i32 %right to i16
  %binop = lshr i16 -1, %intcast
  %cmpi6 = icmp ugt i16 %left, %binop
  %phi = select i1 %cmpi, i1 true, i1 %cmpi6
  %binop11 = select i1 %phi, i16 0, i16 %intcast
  %common.ret.op = shl i16 %left, %binop11
  ret i16 %common.ret.op
}

define zeroext i16 @safe_rshift_func_uint16_t_u_s(i16 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 15
  %intcast = trunc i32 %right to i16
  %binop = select i1 %phi, i16 0, i16 %intcast
  %common.ret.op = lshr i16 %left, %binop
  ret i16 %common.ret.op
}

define zeroext i16 @safe_rshift_func_uint16_t_u_u(i16 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 15
  %intcast = trunc nuw i32 %right to i16
  %binop = select i1 %cmpi, i16 0, i16 %intcast
  %common.ret.op = lshr i16 %left, %binop
  ret i16 %common.ret.op
}

define zeroext i32 @safe_unary_minus_func_uint32_t_u(i32 zeroext %ui) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i32 0, %ui
  ret i32 %binop
}

define zeroext i32 @safe_add_func_uint32_t_u_u(i32 zeroext %ui1, i32 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = add i32 %ui2, %ui1
  ret i32 %binop
}

define zeroext i32 @safe_sub_func_uint32_t_u_u(i32 zeroext %ui1, i32 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i32 %ui1, %ui2
  ret i32 %binop
}

define zeroext i32 @safe_mul_func_uint32_t_u_u(i32 zeroext %ui1, i32 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = mul i32 %ui2, %ui1
  ret i32 %binop
}

define zeroext i32 @safe_mod_func_uint32_t_u_u(i32 zeroext %ui1, i32 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i32 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i32 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i32 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = urem i32 %ui1, %ui2
  br label %common.ret
}

define zeroext i32 @safe_div_func_uint32_t_u_u(i32 zeroext %ui1, i32 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i32 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i32 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i32 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = udiv i32 %ui1, %ui2
  br label %common.ret
}

define zeroext i32 @safe_lshift_func_uint32_t_u_s(i32 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 31
  %binop = lshr i32 -1, %right
  %cmpi11 = icmp ugt i32 %left, %binop
  %or.cond = select i1 %phi, i1 true, i1 %cmpi11
  %binop16 = select i1 %or.cond, i32 0, i32 %right
  %common.ret.op = shl i32 %left, %binop16
  ret i32 %common.ret.op
}

define zeroext i32 @safe_lshift_func_uint32_t_u_u(i32 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 31
  %binop = lshr i32 -1, %right
  %cmpi6 = icmp ugt i32 %left, %binop
  %phi = select i1 %cmpi, i1 true, i1 %cmpi6
  %binop10 = select i1 %phi, i32 0, i32 %right
  %common.ret.op = shl i32 %left, %binop10
  ret i32 %common.ret.op
}

define zeroext i32 @safe_rshift_func_uint32_t_u_s(i32 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 31
  %binop = select i1 %phi, i32 0, i32 %right
  %common.ret.op = lshr i32 %left, %binop
  ret i32 %common.ret.op
}

define zeroext i32 @safe_rshift_func_uint32_t_u_u(i32 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 31
  %binop = select i1 %cmpi, i32 0, i32 %right
  %spec.select = lshr i32 %left, %binop
  ret i32 %spec.select
}

define zeroext i64 @safe_unary_minus_func_uint64_t_u(i64 zeroext %ui) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i64 0, %ui
  ret i64 %binop
}

define zeroext i64 @safe_add_func_uint64_t_u_u(i64 zeroext %ui1, i64 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = add i64 %ui2, %ui1
  ret i64 %binop
}

define zeroext i64 @safe_sub_func_uint64_t_u_u(i64 zeroext %ui1, i64 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = sub i64 %ui1, %ui2
  ret i64 %binop
}

define zeroext i64 @safe_mul_func_uint64_t_u_u(i64 zeroext %ui1, i64 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %binop = mul i64 %ui2, %ui1
  ret i64 %binop
}

define zeroext i64 @safe_mod_func_uint64_t_u_u(i64 zeroext %ui1, i64 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i64 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i64 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i64 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = urem i64 %ui1, %ui2
  br label %common.ret
}

define zeroext i64 @safe_div_func_uint64_t_u_u(i64 zeroext %ui1, i64 zeroext %ui2) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp eq i64 %ui2, 0
  br i1 %cmpi, label %common.ret, label %if_cont

common.ret:                                       ; preds = %body, %if_cont
  %common.ret.op = phi i64 [ %binop, %if_cont ], [ %ui1, %body ]
  ret i64 %common.ret.op

if_cont:                                          ; preds = %body
  %binop = udiv i64 %ui1, %ui2
  br label %common.ret
}

define zeroext i64 @safe_lshift_func_uint64_t_u_s(i64 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 63
  %cmpi12 = icmp ne i64 %left, 0
  %or.cond = select i1 %phi, i1 true, i1 %cmpi12
  %intcast1719 = zext nneg i32 %right to i64
  %binop18 = select i1 %or.cond, i64 0, i64 %intcast1719
  %common.ret.op = shl i64 %left, %binop18
  ret i64 %common.ret.op
}

define zeroext i64 @safe_lshift_func_uint64_t_u_u(i64 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 63
  %cmpi7 = icmp ne i64 %left, 0
  %phi = select i1 %cmpi, i1 true, i1 %cmpi7
  %intcast11 = zext nneg i32 %right to i64
  %binop12 = select i1 %phi, i64 0, i64 %intcast11
  %common.ret.op = shl i64 %left, %binop12
  ret i64 %common.ret.op
}

define zeroext i64 @safe_rshift_func_uint64_t_u_s(i64 zeroext %left, i32 %right) local_unnamed_addr addrspace(1) #1 {
body:
  %phi = icmp ugt i32 %right, 63
  %narrow = select i1 %phi, i32 0, i32 %right
  %binop = zext nneg i32 %narrow to i64
  %common.ret.op = lshr i64 %left, %binop
  ret i64 %common.ret.op
}

define zeroext i64 @safe_rshift_func_uint64_t_u_u(i64 zeroext %left, i32 zeroext %right) local_unnamed_addr addrspace(1) #1 {
body:
  %cmpi = icmp ugt i32 %right, 63
  %narrow = select i1 %cmpi, i32 0, i32 %right
  %binop = zext nneg i32 %narrow to i64
  %common.ret.op = lshr i64 %left, %binop
  ret i64 %common.ret.op
}

define noundef i16 @func_1() local_unnamed_addr addrspace(1) #2 {
body:
  ret i16 1
}

define noundef i32 @main() local_unnamed_addr addrspace(1) #0 {
body:
  tail call addrspace(1) void @platform_main_begin()
  tail call addrspace(1) void @crc32_gentab()
  %crc32_context = load i64, ptr @crc32_context, align 8
  %binop = xor i64 %crc32_context, 4294967295
  tail call addrspace(1) void @platform_main_end(i64 zeroext %binop, i32 0)
  ret i32 0
}

!llvm.module.flags = !{}

[/code]

[Assistant]
Run the following passes -sroa -instcombine -licm -simplifycfg -gvn to reduce the instruction count
[code]
	.syntax unified
	.eabi_attribute	67, "2.09"	@ Tag_conformance
	.cpu	cortex-m3
	.eabi_attribute	6, 10	@ Tag_CPU_arch
	.eabi_attribute	7, 77	@ Tag_CPU_arch_profile
	.eabi_attribute	8, 0	@ Tag_ARM_ISA_use
	.eabi_attribute	9, 2	@ Tag_THUMB_ISA_use
	.eabi_attribute	34, 1	@ Tag_CPU_unaligned_access
	.eabi_attribute	17, 1	@ Tag_ABI_PCS_GOT_use
	.eabi_attribute	20, 1	@ Tag_ABI_FP_denormal
	.eabi_attribute	21, 1	@ Tag_ABI_FP_exceptions
	.eabi_attribute	23, 3	@ Tag_ABI_FP_number_model
	.eabi_attribute	24, 1	@ Tag_ABI_align_needed
	.eabi_attribute	25, 1	@ Tag_ABI_align_preserved
	.eabi_attribute	38, 1	@ Tag_ABI_FP_16bit_format
	.eabi_attribute	14, 0	@ Tag_ABI_PCS_R9_use
	.file	"00011.rob"
	.text
	.globl	safe_unary_minus_func_int8_t_s  @ -- Begin function safe_unary_minus_func_int8_t_s
	.p2align	2
	.type	safe_unary_minus_func_int8_t_s,%function
	.code	16                              @ @safe_unary_minus_func_int8_t_s
	.thumb_func
safe_unary_minus_func_int8_t_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	pop	{r7, pc}
.Lfunc_end0:
	.size	safe_unary_minus_func_int8_t_s, .Lfunc_end0-safe_unary_minus_func_int8_t_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_int8_t_s_s        @ -- Begin function safe_add_func_int8_t_s_s
	.p2align	2
	.type	safe_add_func_int8_t_s_s,%function
	.code	16                              @ @safe_add_func_int8_t_s_s
	.thumb_func
safe_add_func_int8_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxtb	r2, r0
	cmp	r2, #1
	blt	.LBB1_3
@ %bb.1:                                @ %body
	sxtb	r3, r1
	cmp	r3, #1
	blt	.LBB1_3
@ %bb.2:                                @ %body
	eor	r3, r1, #127
	sxtb	r3, r3
	cmp	r2, r3
	it	gt
	popgt	{r7, pc}
.LBB1_3:                                @ %fullev13
	and.w	r3, r0, r1
	sxtb.w	r12, r3
	mvn	r3, #127
	subs	r3, r3, r1
	sxtb	r3, r3
	add	r1, r0
	cmp	r3, r2
	it	le
	movle	r0, r1
	cmp.w	r12, #0
	it	pl
	movpl	r0, r1
	pop	{r7, pc}
.Lfunc_end1:
	.size	safe_add_func_int8_t_s_s, .Lfunc_end1-safe_add_func_int8_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_int8_t_s_s        @ -- Begin function safe_sub_func_int8_t_s_s
	.p2align	2
	.type	safe_sub_func_int8_t_s_s,%function
	.code	16                              @ @safe_sub_func_int8_t_s_s
	.thumb_func
safe_sub_func_int8_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	eor.w	r2, r1, r0
	movs	r3, #127
	orn	r3, r3, r2
	add	r3, r1
	ands	r2, r3
	sxtb	r2, r2
	cmp	r2, #0
	it	pl
	subpl	r0, r0, r1
	pop	{r7, pc}
.Lfunc_end2:
	.size	safe_sub_func_int8_t_s_s, .Lfunc_end2-safe_sub_func_int8_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_int8_t_s_s        @ -- Begin function safe_mul_func_int8_t_s_s
	.p2align	2
	.type	safe_mul_func_int8_t_s_s,%function
	.code	16                              @ @safe_mul_func_int8_t_s_s
	.thumb_func
safe_mul_func_int8_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxtb	r2, r0
	cmp	r2, #1
	sxtb.w	lr, r1
	it	ge
	cmpge.w	lr, #1
	bge	.LBB3_10
.LBB3_1:                                @ %fullev13
	cmp	r2, #1
	blt	.LBB3_4
@ %bb.2:                                @ %fullev13
	cmp.w	lr, #0
	bgt	.LBB3_4
@ %bb.3:                                @ %fullev24
	uxtb.w	r12, r0
	mvn	r3, #127
	sdiv	r3, r3, r12
	sxth	r3, r3
	cmp	r3, lr
	it	gt
	popgt	{r7, pc}
.LBB3_4:                                @ %fullev34
	cmp	r2, #0
	bgt	.LBB3_7
@ %bb.5:                                @ %fullev34
	cmp.w	lr, #1
	blt	.LBB3_7
@ %bb.6:                                @ %fullev45
	uxtb.w	r12, r1
	mvn	r3, #127
	sdiv	r3, r3, r12
	sxth	r3, r3
	cmp	r3, r2
	bgt	.LBB3_9
.LBB3_7:                                @ %fullev56
	cmp.w	r2, #-1
	it	le
	cmple.w	lr, #0
	ble	.LBB3_11
@ %bb.8:                                @ %if_cont
	muls	r0, r1, r0
.LBB3_9:                                @ %common.ret
	pop	{r7, pc}
.LBB3_10:                               @ %fullev6
	uxtb.w	r12, r1
	movs	r3, #127
	udiv	r3, r3, r12
	cmp	r2, r3
	ble	.LBB3_1
	b	.LBB3_9
.LBB3_11:                               @ %fullev73
	movs	r3, #127
	sdiv	r2, r3, r2
	sxtb	r2, r2
	cmp	lr, r2
	it	ge
	mulge	r0, r1, r0
	pop	{r7, pc}
.Lfunc_end3:
	.size	safe_mul_func_int8_t_s_s, .Lfunc_end3-safe_mul_func_int8_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_int8_t_s_s        @ -- Begin function safe_mod_func_int8_t_s_s
	.p2align	2
	.type	safe_mod_func_int8_t_s_s,%function
	.code	16                              @ @safe_mod_func_int8_t_s_s
	.thumb_func
safe_mod_func_int8_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	lsls	r2, r1, #24
	beq	.LBB4_4
@ %bb.1:                                @ %fullev
	uxtb	r2, r0
	cmp	r2, #128
	bne	.LBB4_3
@ %bb.2:                                @ %fullev
	uxtb	r2, r1
	cmp	r2, #255
	it	eq
	popeq	{r7, pc}
.LBB4_3:                                @ %if_cont
	sxtb	r1, r1
	sxtb	r0, r0
	sdiv	r2, r0, r1
	mls	r0, r2, r1, r0
.LBB4_4:                                @ %common.ret
	pop	{r7, pc}
.Lfunc_end4:
	.size	safe_mod_func_int8_t_s_s, .Lfunc_end4-safe_mod_func_int8_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_int8_t_s_s        @ -- Begin function safe_div_func_int8_t_s_s
	.p2align	2
	.type	safe_div_func_int8_t_s_s,%function
	.code	16                              @ @safe_div_func_int8_t_s_s
	.thumb_func
safe_div_func_int8_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	lsls	r2, r1, #24
	beq	.LBB5_4
@ %bb.1:                                @ %fullev
	uxtb	r2, r0
	cmp	r2, #128
	bne	.LBB5_3
@ %bb.2:                                @ %fullev
	uxtb	r2, r1
	cmp	r2, #255
	it	eq
	popeq	{r7, pc}
.LBB5_3:                                @ %if_cont
	sxtb	r1, r1
	sxtb	r0, r0
	sdiv	r0, r0, r1
.LBB5_4:                                @ %common.ret
	pop	{r7, pc}
.Lfunc_end5:
	.size	safe_div_func_int8_t_s_s, .Lfunc_end5-safe_div_func_int8_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int8_t_s_s     @ -- Begin function safe_lshift_func_int8_t_s_s
	.p2align	2
	.type	safe_lshift_func_int8_t_s_s,%function
	.code	16                              @ @safe_lshift_func_int8_t_s_s
	.thumb_func
safe_lshift_func_int8_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxtb.w	r12, r1
	movs	r3, #127
	lsr.w	r3, r3, r12
	sxtb	r2, r0
	sxtb	r3, r3
	cmp	r2, r3
	mov	r3, r1
	it	gt
	movgt	r3, #0
	cmp	r1, #7
	it	hi
	movhi	r3, #0
	cmp	r2, #0
	it	mi
	movmi	r3, #0
	uxtb	r1, r3
	lsls	r0, r1
	pop	{r7, pc}
.Lfunc_end6:
	.size	safe_lshift_func_int8_t_s_s, .Lfunc_end6-safe_lshift_func_int8_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int8_t_s_u     @ -- Begin function safe_lshift_func_int8_t_s_u
	.p2align	2
	.type	safe_lshift_func_int8_t_s_u,%function
	.code	16                              @ @safe_lshift_func_int8_t_s_u
	.thumb_func
safe_lshift_func_int8_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxtb.w	r12, r1
	movs	r3, #127
	lsr.w	r3, r3, r12
	sxtb	r2, r0
	sxtb	r3, r3
	cmp	r2, r3
	mov	r3, r1
	it	gt
	movgt	r3, #0
	cmp	r1, #7
	it	hi
	movhi	r3, #0
	cmp	r2, #0
	it	mi
	movmi	r3, #0
	uxtb	r1, r3
	lsls	r0, r1
	pop	{r7, pc}
.Lfunc_end7:
	.size	safe_lshift_func_int8_t_s_u, .Lfunc_end7-safe_lshift_func_int8_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int8_t_s_s     @ -- Begin function safe_rshift_func_int8_t_s_s
	.p2align	2
	.type	safe_rshift_func_int8_t_s_s,%function
	.code	16                              @ @safe_rshift_func_int8_t_s_s
	.thumb_func
safe_rshift_func_int8_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxtb	r0, r0
	cmp	r1, #7
	it	hi
	movhi	r1, #0
	cmp	r0, #0
	it	mi
	movmi	r1, #0
	uxtb	r1, r1
	asrs	r0, r1
	pop	{r7, pc}
.Lfunc_end8:
	.size	safe_rshift_func_int8_t_s_s, .Lfunc_end8-safe_rshift_func_int8_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int8_t_s_u     @ -- Begin function safe_rshift_func_int8_t_s_u
	.p2align	2
	.type	safe_rshift_func_int8_t_s_u,%function
	.code	16                              @ @safe_rshift_func_int8_t_s_u
	.thumb_func
safe_rshift_func_int8_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxtb	r0, r0
	cmp	r1, #7
	it	hi
	movhi	r1, #0
	cmp	r0, #0
	it	mi
	movmi	r1, #0
	uxtb	r1, r1
	asrs	r0, r1
	pop	{r7, pc}
.Lfunc_end9:
	.size	safe_rshift_func_int8_t_s_u, .Lfunc_end9-safe_rshift_func_int8_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_unary_minus_func_int16_t_s @ -- Begin function safe_unary_minus_func_int16_t_s
	.p2align	2
	.type	safe_unary_minus_func_int16_t_s,%function
	.code	16                              @ @safe_unary_minus_func_int16_t_s
	.thumb_func
safe_unary_minus_func_int16_t_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	pop	{r7, pc}
.Lfunc_end10:
	.size	safe_unary_minus_func_int16_t_s, .Lfunc_end10-safe_unary_minus_func_int16_t_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_int16_t_s_s       @ -- Begin function safe_add_func_int16_t_s_s
	.p2align	2
	.type	safe_add_func_int16_t_s_s,%function
	.code	16                              @ @safe_add_func_int16_t_s_s
	.thumb_func
safe_add_func_int16_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxth	r2, r0
	cmp	r2, #1
	blt	.LBB11_3
@ %bb.1:                                @ %body
	sxth	r3, r1
	cmp	r3, #1
	blt	.LBB11_3
@ %bb.2:                                @ %body
	movw	r3, #32767
	eors	r3, r1
	sxth	r3, r3
	cmp	r2, r3
	it	gt
	popgt	{r7, pc}
.LBB11_3:                               @ %fullev13
	and.w	r3, r0, r1
	sxth.w	r12, r3
	movw	r3, #32768
	movt	r3, #65535
	subs	r3, r3, r1
	sxth	r3, r3
	add	r1, r0
	cmp	r3, r2
	it	le
	movle	r0, r1
	cmp.w	r12, #0
	it	pl
	movpl	r0, r1
	pop	{r7, pc}
.Lfunc_end11:
	.size	safe_add_func_int16_t_s_s, .Lfunc_end11-safe_add_func_int16_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_int16_t_s_s       @ -- Begin function safe_sub_func_int16_t_s_s
	.p2align	2
	.type	safe_sub_func_int16_t_s_s,%function
	.code	16                              @ @safe_sub_func_int16_t_s_s
	.thumb_func
safe_sub_func_int16_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	pop	{r7, pc}
.Lfunc_end12:
	.size	safe_sub_func_int16_t_s_s, .Lfunc_end12-safe_sub_func_int16_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_int16_t_s_s       @ -- Begin function safe_mul_func_int16_t_s_s
	.p2align	2
	.type	safe_mul_func_int16_t_s_s,%function
	.code	16                              @ @safe_mul_func_int16_t_s_s
	.thumb_func
safe_mul_func_int16_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxth	r2, r0
	cmp	r2, #1
	sxth.w	lr, r1
	it	ge
	cmpge.w	lr, #1
	bge	.LBB13_10
.LBB13_1:                               @ %fullev13
	cmp	r2, #1
	blt	.LBB13_4
@ %bb.2:                                @ %fullev13
	cmp.w	lr, #0
	bgt	.LBB13_4
@ %bb.3:                                @ %fullev24
	movw	r3, #32768
	uxth.w	r12, r0
	movt	r3, #65535
	sdiv	r3, r3, r12
	cmp	r3, lr
	it	gt
	popgt	{r7, pc}
.LBB13_4:                               @ %fullev34
	cmp	r2, #0
	bgt	.LBB13_7
@ %bb.5:                                @ %fullev34
	cmp.w	lr, #1
	blt	.LBB13_7
@ %bb.6:                                @ %fullev45
	movw	r3, #32768
	uxth.w	r12, r1
	movt	r3, #65535
	sdiv	r3, r3, r12
	cmp	r3, r2
	bgt	.LBB13_9
.LBB13_7:                               @ %fullev56
	cmp.w	r2, #-1
	it	le
	cmple.w	lr, #0
	ble	.LBB13_11
@ %bb.8:                                @ %if_cont
	muls	r0, r1, r0
.LBB13_9:                               @ %common.ret
	pop	{r7, pc}
.LBB13_10:                              @ %fullev6
	uxth.w	r12, r1
	movw	r3, #32767
	udiv	r3, r3, r12
	cmp	r2, r3
	ble	.LBB13_1
	b	.LBB13_9
.LBB13_11:                              @ %fullev73
	movw	r3, #32767
	sdiv	r2, r3, r2
	sxth	r2, r2
	cmp	lr, r2
	it	ge
	mulge	r0, r1, r0
	pop	{r7, pc}
.Lfunc_end13:
	.size	safe_mul_func_int16_t_s_s, .Lfunc_end13-safe_mul_func_int16_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_int16_t_s_s       @ -- Begin function safe_mod_func_int16_t_s_s
	.p2align	2
	.type	safe_mod_func_int16_t_s_s,%function
	.code	16                              @ @safe_mod_func_int16_t_s_s
	.thumb_func
safe_mod_func_int16_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	lsls	r2, r1, #16
	beq	.LBB14_4
@ %bb.1:                                @ %fullev
	uxth	r2, r0
	cmp.w	r2, #32768
	bne	.LBB14_3
@ %bb.2:                                @ %fullev
	uxth	r2, r1
	movw	r3, #65535
	cmp	r2, r3
	it	eq
	popeq	{r7, pc}
.LBB14_3:                               @ %if_cont
	sxth	r1, r1
	sxth	r0, r0
	sdiv	r2, r0, r1
	mls	r0, r2, r1, r0
.LBB14_4:                               @ %common.ret
	pop	{r7, pc}
.Lfunc_end14:
	.size	safe_mod_func_int16_t_s_s, .Lfunc_end14-safe_mod_func_int16_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_int16_t_s_s       @ -- Begin function safe_div_func_int16_t_s_s
	.p2align	2
	.type	safe_div_func_int16_t_s_s,%function
	.code	16                              @ @safe_div_func_int16_t_s_s
	.thumb_func
safe_div_func_int16_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	lsls	r2, r1, #16
	beq	.LBB15_4
@ %bb.1:                                @ %fullev
	uxth	r2, r0
	cmp.w	r2, #32768
	bne	.LBB15_3
@ %bb.2:                                @ %fullev
	uxth	r2, r1
	movw	r3, #65535
	cmp	r2, r3
	it	eq
	popeq	{r7, pc}
.LBB15_3:                               @ %if_cont
	sxth	r1, r1
	sxth	r0, r0
	sdiv	r0, r0, r1
.LBB15_4:                               @ %common.ret
	pop	{r7, pc}
.Lfunc_end15:
	.size	safe_div_func_int16_t_s_s, .Lfunc_end15-safe_div_func_int16_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int16_t_s_s    @ -- Begin function safe_lshift_func_int16_t_s_s
	.p2align	2
	.type	safe_lshift_func_int16_t_s_s,%function
	.code	16                              @ @safe_lshift_func_int16_t_s_s
	.thumb_func
safe_lshift_func_int16_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxth.w	r12, r1
	movw	r3, #32767
	lsr.w	r3, r3, r12
	sxth	r2, r0
	sxth	r3, r3
	cmp	r2, r3
	mov	r3, r1
	it	gt
	movgt	r3, #0
	cmp	r1, #15
	it	hi
	movhi	r3, #0
	cmp	r2, #0
	it	mi
	movmi	r3, #0
	uxth	r1, r3
	lsls	r0, r1
	pop	{r7, pc}
.Lfunc_end16:
	.size	safe_lshift_func_int16_t_s_s, .Lfunc_end16-safe_lshift_func_int16_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int16_t_s_u    @ -- Begin function safe_lshift_func_int16_t_s_u
	.p2align	2
	.type	safe_lshift_func_int16_t_s_u,%function
	.code	16                              @ @safe_lshift_func_int16_t_s_u
	.thumb_func
safe_lshift_func_int16_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxth.w	r12, r1
	movw	r3, #32767
	lsr.w	r3, r3, r12
	sxth	r2, r0
	sxth	r3, r3
	cmp	r2, r3
	mov	r3, r1
	it	gt
	movgt	r3, #0
	cmp	r1, #15
	it	hi
	movhi	r3, #0
	cmp	r2, #0
	it	mi
	movmi	r3, #0
	uxth	r1, r3
	lsls	r0, r1
	pop	{r7, pc}
.Lfunc_end17:
	.size	safe_lshift_func_int16_t_s_u, .Lfunc_end17-safe_lshift_func_int16_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int16_t_s_s    @ -- Begin function safe_rshift_func_int16_t_s_s
	.p2align	2
	.type	safe_rshift_func_int16_t_s_s,%function
	.code	16                              @ @safe_rshift_func_int16_t_s_s
	.thumb_func
safe_rshift_func_int16_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxth	r0, r0
	cmp	r1, #15
	it	hi
	movhi	r1, #0
	cmp	r0, #0
	it	mi
	movmi	r1, #0
	uxth	r1, r1
	asrs	r0, r1
	pop	{r7, pc}
.Lfunc_end18:
	.size	safe_rshift_func_int16_t_s_s, .Lfunc_end18-safe_rshift_func_int16_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int16_t_s_u    @ -- Begin function safe_rshift_func_int16_t_s_u
	.p2align	2
	.type	safe_rshift_func_int16_t_s_u,%function
	.code	16                              @ @safe_rshift_func_int16_t_s_u
	.thumb_func
safe_rshift_func_int16_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	sxth	r0, r0
	cmp	r1, #15
	it	hi
	movhi	r1, #0
	cmp	r0, #0
	it	mi
	movmi	r1, #0
	uxth	r1, r1
	asrs	r0, r1
	pop	{r7, pc}
.Lfunc_end19:
	.size	safe_rshift_func_int16_t_s_u, .Lfunc_end19-safe_rshift_func_int16_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_unary_minus_func_int32_t_s @ -- Begin function safe_unary_minus_func_int32_t_s
	.p2align	2
	.type	safe_unary_minus_func_int32_t_s,%function
	.code	16                              @ @safe_unary_minus_func_int32_t_s
	.thumb_func
safe_unary_minus_func_int32_t_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	pop	{r7, pc}
.Lfunc_end20:
	.size	safe_unary_minus_func_int32_t_s, .Lfunc_end20-safe_unary_minus_func_int32_t_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_int32_t_s_s       @ -- Begin function safe_add_func_int32_t_s_s
	.p2align	2
	.type	safe_add_func_int32_t_s_s,%function
	.code	16                              @ @safe_add_func_int32_t_s_s
	.thumb_func
safe_add_func_int32_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r0, #1
	it	ge
	cmpge	r1, #1
	blt	.LBB21_2
@ %bb.1:                                @ %body
	mvn	r2, #-2147483648
	eors	r2, r1
	cmp	r0, r2
	it	gt
	popgt	{r7, pc}
.LBB21_2:                               @ %fullev13
	rsb.w	r3, r1, #-2147483648
	and.w	r2, r0, r1
	add	r1, r0
	cmp	r3, r0
	it	le
	movle	r0, r1
	cmp	r2, #0
	it	pl
	movpl	r0, r1
	pop	{r7, pc}
.Lfunc_end21:
	.size	safe_add_func_int32_t_s_s, .Lfunc_end21-safe_add_func_int32_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_int32_t_s_s       @ -- Begin function safe_sub_func_int32_t_s_s
	.p2align	2
	.type	safe_sub_func_int32_t_s_s,%function
	.code	16                              @ @safe_sub_func_int32_t_s_s
	.thumb_func
safe_sub_func_int32_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	pop	{r7, pc}
.Lfunc_end22:
	.size	safe_sub_func_int32_t_s_s, .Lfunc_end22-safe_sub_func_int32_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_int32_t_s_s       @ -- Begin function safe_mul_func_int32_t_s_s
	.p2align	2
	.type	safe_mul_func_int32_t_s_s,%function
	.code	16                              @ @safe_mul_func_int32_t_s_s
	.thumb_func
safe_mul_func_int32_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r4, r5, r6, r7, lr}
	push	{r4, r5, r6, r7, lr}
	.setfp	r7, sp, #12
	add	r7, sp, #12
	.save	{r11}
	str	r11, [sp, #-4]!
	mov	r4, r0
	cmp	r0, #1
	mov	r5, r1
	it	ge
	cmpge	r5, #1
	bge	.LBB23_9
.LBB23_1:                               @ %fullev13
	cmp	r4, #1
	blt	.LBB23_4
@ %bb.2:                                @ %fullev13
	cmp	r5, #0
	bgt	.LBB23_4
@ %bb.3:                                @ %fullev24
	mov.w	r0, #-2147483648
	mov.w	r1, #-1
	mov	r2, r4
	movs	r3, #0
	asrs	r6, r5, #31
	bl	__aeabi_ldivmod
	subs	r0, r5, r0
	sbcs.w	r0, r6, r1
	blt	.LBB23_11
.LBB23_4:                               @ %fullev34
	cmp	r4, #0
	bgt	.LBB23_7
@ %bb.5:                                @ %fullev34
	cmp	r5, #1
	blt	.LBB23_7
@ %bb.6:                                @ %fullev45
	mov.w	r0, #-2147483648
	mov.w	r1, #-1
	mov	r2, r5
	movs	r3, #0
	asrs	r6, r4, #31
	bl	__aeabi_ldivmod
	subs	r0, r4, r0
	sbcs.w	r0, r6, r1
	blt	.LBB23_11
.LBB23_7:                               @ %fullev56
	cmp.w	r4, #-1
	it	le
	cmple	r5, #0
	ble	.LBB23_10
@ %bb.8:                                @ %if_cont
	muls	r4, r5, r4
	b	.LBB23_11
.LBB23_9:                               @ %fullev6
	mvn	r0, #-2147483648
	udiv	r0, r0, r5
	cmp	r4, r0
	ble	.LBB23_1
	b	.LBB23_11
.LBB23_10:                              @ %fullev73
	mvn	r0, #-2147483648
	sdiv	r0, r0, r4
	cmp	r5, r0
	it	ge
	mulge	r4, r5, r4
.LBB23_11:                              @ %common.ret
	mov	r0, r4
	ldr	r11, [sp], #4
	pop	{r4, r5, r6, r7, pc}
.Lfunc_end23:
	.size	safe_mul_func_int32_t_s_s, .Lfunc_end23-safe_mul_func_int32_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_int32_t_s_s       @ -- Begin function safe_mod_func_int32_t_s_s
	.p2align	2
	.type	safe_mod_func_int32_t_s_s,%function
	.code	16                              @ @safe_mod_func_int32_t_s_s
	.thumb_func
safe_mod_func_int32_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cbz	r1, .LBB24_3
@ %bb.1:                                @ %fullev
	cmp.w	r0, #-2147483648
	itt	eq
	addseq.w	r2, r1, #1
	popeq	{r7, pc}
.LBB24_2:                               @ %if_cont
	sdiv	r2, r0, r1
	mls	r0, r2, r1, r0
.LBB24_3:                               @ %common.ret
	pop	{r7, pc}
.Lfunc_end24:
	.size	safe_mod_func_int32_t_s_s, .Lfunc_end24-safe_mod_func_int32_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_int32_t_s_s       @ -- Begin function safe_div_func_int32_t_s_s
	.p2align	2
	.type	safe_div_func_int32_t_s_s,%function
	.code	16                              @ @safe_div_func_int32_t_s_s
	.thumb_func
safe_div_func_int32_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #0
	it	eq
	popeq	{r7, pc}
.LBB25_1:                               @ %fullev
	cmp.w	r0, #-2147483648
	ite	eq
	addseq.w	r2, r1, #1
	sdivne	r0, r0, r1
	pop	{r7, pc}
.Lfunc_end25:
	.size	safe_div_func_int32_t_s_s, .Lfunc_end25-safe_div_func_int32_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int32_t_s_s    @ -- Begin function safe_lshift_func_int32_t_s_s
	.p2align	2
	.type	safe_lshift_func_int32_t_s_s,%function
	.code	16                              @ @safe_lshift_func_int32_t_s_s
	.thumb_func
safe_lshift_func_int32_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	mvn	r2, #-2147483648
	lsrs	r2, r1
	cmp	r0, r2
	mov	r2, r1
	it	gt
	movgt	r2, #0
	cmp	r1, #31
	it	hi
	movhi	r2, #0
	cmp	r0, #0
	it	mi
	movmi	r2, #0
	lsls	r0, r2
	pop	{r7, pc}
.Lfunc_end26:
	.size	safe_lshift_func_int32_t_s_s, .Lfunc_end26-safe_lshift_func_int32_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int32_t_s_u    @ -- Begin function safe_lshift_func_int32_t_s_u
	.p2align	2
	.type	safe_lshift_func_int32_t_s_u,%function
	.code	16                              @ @safe_lshift_func_int32_t_s_u
	.thumb_func
safe_lshift_func_int32_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	mvn	r2, #-2147483648
	lsrs	r2, r1
	cmp	r0, r2
	mov	r2, r1
	it	gt
	movgt	r2, #0
	cmp	r1, #31
	it	hi
	movhi	r2, #0
	cmp	r0, #0
	it	mi
	movmi	r2, #0
	lsls	r0, r2
	pop	{r7, pc}
.Lfunc_end27:
	.size	safe_lshift_func_int32_t_s_u, .Lfunc_end27-safe_lshift_func_int32_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int32_t_s_s    @ -- Begin function safe_rshift_func_int32_t_s_s
	.p2align	2
	.type	safe_rshift_func_int32_t_s_s,%function
	.code	16                              @ @safe_rshift_func_int32_t_s_s
	.thumb_func
safe_rshift_func_int32_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #31
	it	hi
	movhi	r1, #0
	cmp	r0, #0
	it	mi
	movmi	r1, #0
	asrs	r0, r1
	pop	{r7, pc}
.Lfunc_end28:
	.size	safe_rshift_func_int32_t_s_s, .Lfunc_end28-safe_rshift_func_int32_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int32_t_s_u    @ -- Begin function safe_rshift_func_int32_t_s_u
	.p2align	2
	.type	safe_rshift_func_int32_t_s_u,%function
	.code	16                              @ @safe_rshift_func_int32_t_s_u
	.thumb_func
safe_rshift_func_int32_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #31
	it	hi
	movhi	r1, #0
	cmp	r0, #0
	it	mi
	movmi	r1, #0
	asrs	r0, r1
	pop	{r7, pc}
.Lfunc_end29:
	.size	safe_rshift_func_int32_t_s_u, .Lfunc_end29-safe_rshift_func_int32_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_unary_minus_func_int64_t_s @ -- Begin function safe_unary_minus_func_int64_t_s
	.p2align	2
	.type	safe_unary_minus_func_int64_t_s,%function
	.code	16                              @ @safe_unary_minus_func_int64_t_s
	.thumb_func
safe_unary_minus_func_int64_t_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	mov.w	r2, #0
	sbc.w	r1, r2, r1
	pop	{r7, pc}
.Lfunc_end30:
	.size	safe_unary_minus_func_int64_t_s, .Lfunc_end30-safe_unary_minus_func_int64_t_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_int64_t_s_s       @ -- Begin function safe_add_func_int64_t_s_s
	.p2align	2
	.type	safe_add_func_int64_t_s_s,%function
	.code	16                              @ @safe_add_func_int64_t_s_s
	.thumb_func
safe_add_func_int64_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r4, r5, r6, r7, lr}
	push	{r4, r5, r6, r7, lr}
	.setfp	r7, sp, #12
	add	r7, sp, #12
	.save	{r8}
	str	r8, [sp, #-4]!
	rsbs.w	r12, r2, #0
	mov.w	lr, #-2147483648
	sbc.w	lr, lr, r3
	subs	r4, r0, #1
	sbcs	r4, r1, #0
	blt	.LBB31_4
@ %bb.1:                                @ %body
	subs	r4, r2, #1
	sbcs	r4, r3, #0
	blt	.LBB31_4
@ %bb.2:                                @ %body
	subs.w	r4, r12, r0
	sbcs.w	r4, lr, r1
	bge	.LBB31_4
@ %bb.3:                                @ %common.ret
	ldr	r8, [sp], #4
	pop	{r4, r5, r6, r7, pc}
.LBB31_4:                               @ %fullev13
	cmp	r1, #0
	mov.w	r8, #0
	it	mi
	movmi.w	r8, #1
	cmp	r3, #0
	mov.w	r6, #0
	it	mi
	movmi	r6, #1
	subs.w	r5, r0, r12
	mov.w	r4, #0
	sbcs.w	r5, r1, lr
	it	lt
	movlt	r4, #1
	adds	r2, r2, r0
	and.w	r6, r6, r4
	adcs	r3, r1
	tst.w	r8, r6
	it	ne
	movne	r3, r1
	mov	r1, r3
	it	ne
	movne	r2, r0
	mov	r0, r2
	ldr	r8, [sp], #4
	pop	{r4, r5, r6, r7, pc}
.Lfunc_end31:
	.size	safe_add_func_int64_t_s_s, .Lfunc_end31-safe_add_func_int64_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_int64_t_s_s       @ -- Begin function safe_sub_func_int64_t_s_s
	.p2align	2
	.type	safe_sub_func_int64_t_s_s,%function
	.code	16                              @ @safe_sub_func_int64_t_s_s
	.thumb_func
safe_sub_func_int64_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r4, r6, r7, lr}
	push	{r4, r6, r7, lr}
	.setfp	r7, sp, #8
	add	r7, sp, #8
	eor.w	r12, r3, r1
	and	lr, r12, #-2147483648
	eor.w	lr, lr, r1
	subs	r4, r0, r2
	sbc.w	r2, lr, r3
	eor.w	r2, r2, r3
	and.w	r2, r2, r12
	sbc.w	r3, r1, r3
	cmp	r2, #0
	itt	pl
	movpl	r0, r4
	movpl	r1, r3
	pop	{r4, r6, r7, pc}
.Lfunc_end32:
	.size	safe_sub_func_int64_t_s_s, .Lfunc_end32-safe_sub_func_int64_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_int64_t_s_s       @ -- Begin function safe_mul_func_int64_t_s_s
	.p2align	2
	.type	safe_mul_func_int64_t_s_s,%function
	.code	16                              @ @safe_mul_func_int64_t_s_s
	.thumb_func
safe_mul_func_int64_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r4, r5, r6, r7, lr}
	push	{r4, r5, r6, r7, lr}
	.setfp	r7, sp, #12
	add	r7, sp, #12
	.save	{r8}
	str	r8, [sp, #-4]!
	mov	r5, r0
	subs	r0, #1
	mov	r8, r3
	mov	r4, r1
	sbcs	r0, r1, #0
	mov	r6, r2
	blt	.LBB33_3
@ %bb.1:                                @ %body
	subs	r0, r6, #1
	sbcs	r0, r8, #0
	blt	.LBB33_3
@ %bb.2:                                @ %fullev6
	movs	r0, #0
	mov.w	r1, #-2147483648
	mov	r2, r6
	mov	r3, r8
	bl	__aeabi_ldivmod
	subs	r0, r0, r5
	sbcs.w	r0, r1, r4
	blt	.LBB33_13
.LBB33_3:                               @ %fullev13
	subs	r0, r5, #1
	sbcs	r0, r4, #0
	blt	.LBB33_6
@ %bb.4:                                @ %fullev13
	rsbs	r0, r6, #0
	mov.w	r0, #0
	sbcs.w	r0, r0, r8
	blt	.LBB33_6
@ %bb.5:                                @ %fullev24
	movs	r0, #0
	mov.w	r1, #-2147483648
	mov	r2, r5
	mov	r3, r4
	bl	__aeabi_ldivmod
	subs	r0, r6, r0
	sbcs.w	r0, r8, r1
	blt	.LBB33_13
.LBB33_6:                               @ %fullev33
	rsbs	r0, r5, #0
	mov.w	r0, #0
	sbcs	r0, r4
	blt	.LBB33_9
@ %bb.7:                                @ %fullev33
	subs	r0, r6, #1
	sbcs	r0, r8, #0
	blt	.LBB33_9
@ %bb.8:                                @ %fullev44
	movs	r0, #0
	mov.w	r1, #-2147483648
	mov	r2, r6
	mov	r3, r8
	bl	__aeabi_ldivmod
	subs	r0, r5, r0
	sbcs.w	r0, r4, r1
	blt	.LBB33_13
.LBB33_9:                               @ %fullev53
	cmp.w	r4, #-1
	bgt	.LBB33_12
@ %bb.10:                               @ %fullev53
	rsbs	r0, r6, #0
	mov.w	r0, #0
	sbcs.w	r0, r0, r8
	blt	.LBB33_12
@ %bb.11:                               @ %fullev70
	movs	r0, #0
	mov.w	r1, #-2147483648
	mov	r2, r5
	mov	r3, r4
	bl	__aeabi_ldivmod
	subs	r0, r6, r0
	sbcs.w	r0, r8, r1
	blt	.LBB33_13
.LBB33_12:                              @ %if_cont
	umull	r0, r1, r6, r5
	mla	r1, r6, r4, r1
	mla	r4, r8, r5, r1
	mov	r5, r0
.LBB33_13:                              @ %common.ret
	mov	r0, r5
	mov	r1, r4
	ldr	r8, [sp], #4
	pop	{r4, r5, r6, r7, pc}
.Lfunc_end33:
	.size	safe_mul_func_int64_t_s_s, .Lfunc_end33-safe_mul_func_int64_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_int64_t_s_s       @ -- Begin function safe_mod_func_int64_t_s_s
	.p2align	2
	.type	safe_mod_func_int64_t_s_s,%function
	.code	16                              @ @safe_mod_func_int64_t_s_s
	.thumb_func
safe_mod_func_int64_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	orrs.w	r12, r2, r3
	it	eq
	bxeq	lr
.LBB34_1:                               @ %fullev
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	eor	r12, r1, #-2147483648
	orrs.w	r12, r12, r0
	bne	.LBB34_4
@ %bb.2:                                @ %fullev
	mov.w	r12, #-2147483648
	orn	r12, r12, #-2147483648
	mov.w	lr, #-1
	eor.w	lr, lr, r2
	eor.w	r12, r12, r3
	orrs.w	r12, r12, lr
	bne	.LBB34_4
@ %bb.3:
	pop.w	{r7, lr}
	bx	lr
.LBB34_4:                               @ %if_cont
	bl	__aeabi_ldivmod
	mov	r0, r2
	mov	r1, r3
	pop.w	{r7, lr}
	bx	lr
.Lfunc_end34:
	.size	safe_mod_func_int64_t_s_s, .Lfunc_end34-safe_mod_func_int64_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_int64_t_s_s       @ -- Begin function safe_div_func_int64_t_s_s
	.p2align	2
	.type	safe_div_func_int64_t_s_s,%function
	.code	16                              @ @safe_div_func_int64_t_s_s
	.thumb_func
safe_div_func_int64_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	orrs.w	r12, r2, r3
	it	eq
	bxeq	lr
.LBB35_1:                               @ %fullev
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	eor	r12, r1, #-2147483648
	orrs.w	r12, r12, r0
	bne	.LBB35_4
@ %bb.2:                                @ %fullev
	mov.w	r12, #-2147483648
	orn	r12, r12, #-2147483648
	mov.w	lr, #-1
	eor.w	lr, lr, r2
	eor.w	r12, r12, r3
	orrs.w	r12, r12, lr
	bne	.LBB35_4
@ %bb.3:
	pop.w	{r7, lr}
	bx	lr
.LBB35_4:                               @ %if_cont
	bl	__aeabi_ldivmod
	pop.w	{r7, lr}
	bx	lr
.Lfunc_end35:
	.size	safe_div_func_int64_t_s_s, .Lfunc_end35-safe_div_func_int64_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int64_t_s_s    @ -- Begin function safe_lshift_func_int64_t_s_s
	.p2align	2
	.type	safe_lshift_func_int64_t_s_s,%function
	.code	16                              @ @safe_lshift_func_int64_t_s_s
	.thumb_func
safe_lshift_func_int64_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	pop	{r7, pc}
.Lfunc_end36:
	.size	safe_lshift_func_int64_t_s_s, .Lfunc_end36-safe_lshift_func_int64_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_int64_t_s_u    @ -- Begin function safe_lshift_func_int64_t_s_u
	.p2align	2
	.type	safe_lshift_func_int64_t_s_u,%function
	.code	16                              @ @safe_lshift_func_int64_t_s_u
	.thumb_func
safe_lshift_func_int64_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	pop	{r7, pc}
.Lfunc_end37:
	.size	safe_lshift_func_int64_t_s_u, .Lfunc_end37-safe_lshift_func_int64_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int64_t_s_s    @ -- Begin function safe_rshift_func_int64_t_s_s
	.p2align	2
	.type	safe_rshift_func_int64_t_s_s,%function
	.code	16                              @ @safe_rshift_func_int64_t_s_s
	.thumb_func
safe_rshift_func_int64_t_s_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r2, #63
	it	hi
	movhi	r2, #0
	cmp	r1, #0
	it	mi
	movmi	r2, #0
	asr.w	r3, r1, r2
	subs.w	r12, r2, #32
	lsr.w	r0, r0, r2
	rsb.w	r2, r2, #32
	lsl.w	r2, r1, r2
	orr.w	r0, r0, r2
	it	pl
	asrpl	r3, r1, #31
	it	pl
	asrpl.w	r0, r1, r12
	mov	r1, r3
	pop	{r7, pc}
.Lfunc_end38:
	.size	safe_rshift_func_int64_t_s_s, .Lfunc_end38-safe_rshift_func_int64_t_s_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_int64_t_s_u    @ -- Begin function safe_rshift_func_int64_t_s_u
	.p2align	2
	.type	safe_rshift_func_int64_t_s_u,%function
	.code	16                              @ @safe_rshift_func_int64_t_s_u
	.thumb_func
safe_rshift_func_int64_t_s_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r2, #63
	it	hi
	movhi	r2, #0
	cmp	r1, #0
	it	mi
	movmi	r2, #0
	asr.w	r3, r1, r2
	subs.w	r12, r2, #32
	lsr.w	r0, r0, r2
	rsb.w	r2, r2, #32
	lsl.w	r2, r1, r2
	orr.w	r0, r0, r2
	it	pl
	asrpl	r3, r1, #31
	it	pl
	asrpl.w	r0, r1, r12
	mov	r1, r3
	pop	{r7, pc}
.Lfunc_end39:
	.size	safe_rshift_func_int64_t_s_u, .Lfunc_end39-safe_rshift_func_int64_t_s_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_unary_minus_func_uint8_t_u @ -- Begin function safe_unary_minus_func_uint8_t_u
	.p2align	2
	.type	safe_unary_minus_func_uint8_t_u,%function
	.code	16                              @ @safe_unary_minus_func_uint8_t_u
	.thumb_func
safe_unary_minus_func_uint8_t_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end40:
	.size	safe_unary_minus_func_uint8_t_u, .Lfunc_end40-safe_unary_minus_func_uint8_t_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_uint8_t_u_u       @ -- Begin function safe_add_func_uint8_t_u_u
	.p2align	2
	.type	safe_add_func_uint8_t_u_u,%function
	.code	16                              @ @safe_add_func_uint8_t_u_u
	.thumb_func
safe_add_func_uint8_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	add	r0, r1
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end41:
	.size	safe_add_func_uint8_t_u_u, .Lfunc_end41-safe_add_func_uint8_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_uint8_t_u_u       @ -- Begin function safe_sub_func_uint8_t_u_u
	.p2align	2
	.type	safe_sub_func_uint8_t_u_u,%function
	.code	16                              @ @safe_sub_func_uint8_t_u_u
	.thumb_func
safe_sub_func_uint8_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	subs	r0, r0, r1
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end42:
	.size	safe_sub_func_uint8_t_u_u, .Lfunc_end42-safe_sub_func_uint8_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_uint8_t_u_u       @ -- Begin function safe_mul_func_uint8_t_u_u
	.p2align	2
	.type	safe_mul_func_uint8_t_u_u,%function
	.code	16                              @ @safe_mul_func_uint8_t_u_u
	.thumb_func
safe_mul_func_uint8_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	muls	r0, r1, r0
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end43:
	.size	safe_mul_func_uint8_t_u_u, .Lfunc_end43-safe_mul_func_uint8_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_uint8_t_u_u       @ -- Begin function safe_mod_func_uint8_t_u_u
	.p2align	2
	.type	safe_mod_func_uint8_t_u_u,%function
	.code	16                              @ @safe_mod_func_uint8_t_u_u
	.thumb_func
safe_mod_func_uint8_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cbz	r1, .LBB44_2
@ %bb.1:                                @ %if_cont
	udiv	r2, r0, r1
	mls	r0, r2, r1, r0
.LBB44_2:                               @ %common.ret
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end44:
	.size	safe_mod_func_uint8_t_u_u, .Lfunc_end44-safe_mod_func_uint8_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_uint8_t_u_u.1     @ -- Begin function safe_mod_func_uint8_t_u_u.1
	.p2align	2
	.type	safe_mod_func_uint8_t_u_u.1,%function
	.code	16                              @ @safe_mod_func_uint8_t_u_u.1
	.thumb_func
safe_mod_func_uint8_t_u_u.1:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cbz	r1, .LBB45_2
@ %bb.1:                                @ %if_cont
	udiv	r2, r0, r1
	mls	r0, r2, r1, r0
.LBB45_2:                               @ %common.ret
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end45:
	.size	safe_mod_func_uint8_t_u_u.1, .Lfunc_end45-safe_mod_func_uint8_t_u_u.1
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_uint8_t_u_u       @ -- Begin function safe_div_func_uint8_t_u_u
	.p2align	2
	.type	safe_div_func_uint8_t_u_u,%function
	.code	16                              @ @safe_div_func_uint8_t_u_u
	.thumb_func
safe_div_func_uint8_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #0
	it	ne
	udivne	r0, r0, r1
	pop	{r7, pc}
.Lfunc_end46:
	.size	safe_div_func_uint8_t_u_u, .Lfunc_end46-safe_div_func_uint8_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint8_t_u_s    @ -- Begin function safe_lshift_func_uint8_t_u_s
	.p2align	2
	.type	safe_lshift_func_uint8_t_u_s,%function
	.code	16                              @ @safe_lshift_func_uint8_t_u_s
	.thumb_func
safe_lshift_func_uint8_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxtb	r3, r1
	movs	r2, #255
	lsrs	r2, r3
	uxtb.w	r12, r0
	uxtb	r2, r2
	cmp	r12, r2
	mov	r2, r1
	it	hi
	movhi	r2, #0
	cmp	r1, #7
	it	hi
	movhi	r2, #0
	uxtb	r1, r2
	lsls	r0, r1
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end47:
	.size	safe_lshift_func_uint8_t_u_s, .Lfunc_end47-safe_lshift_func_uint8_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint8_t_u_u    @ -- Begin function safe_lshift_func_uint8_t_u_u
	.p2align	2
	.type	safe_lshift_func_uint8_t_u_u,%function
	.code	16                              @ @safe_lshift_func_uint8_t_u_u
	.thumb_func
safe_lshift_func_uint8_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxtb	r3, r1
	movs	r2, #255
	lsrs	r2, r3
	uxtb.w	r12, r0
	uxtb	r2, r2
	cmp	r12, r2
	mov	r2, r1
	it	hi
	movhi	r2, #0
	cmp	r1, #7
	it	hi
	movhi	r2, #0
	uxtb	r1, r2
	lsls	r0, r1
	uxtb	r0, r0
	pop	{r7, pc}
.Lfunc_end48:
	.size	safe_lshift_func_uint8_t_u_u, .Lfunc_end48-safe_lshift_func_uint8_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint8_t_u_s    @ -- Begin function safe_rshift_func_uint8_t_u_s
	.p2align	2
	.type	safe_rshift_func_uint8_t_u_s,%function
	.code	16                              @ @safe_rshift_func_uint8_t_u_s
	.thumb_func
safe_rshift_func_uint8_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #7
	it	hi
	movhi	r1, #0
	uxtb	r1, r1
	lsrs	r0, r1
	pop	{r7, pc}
.Lfunc_end49:
	.size	safe_rshift_func_uint8_t_u_s, .Lfunc_end49-safe_rshift_func_uint8_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint8_t_u_u    @ -- Begin function safe_rshift_func_uint8_t_u_u
	.p2align	2
	.type	safe_rshift_func_uint8_t_u_u,%function
	.code	16                              @ @safe_rshift_func_uint8_t_u_u
	.thumb_func
safe_rshift_func_uint8_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #7
	it	hi
	movhi	r1, #0
	uxtb	r1, r1
	lsrs	r0, r1
	pop	{r7, pc}
.Lfunc_end50:
	.size	safe_rshift_func_uint8_t_u_u, .Lfunc_end50-safe_rshift_func_uint8_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_unary_minus_func_uint16_t_u @ -- Begin function safe_unary_minus_func_uint16_t_u
	.p2align	2
	.type	safe_unary_minus_func_uint16_t_u,%function
	.code	16                              @ @safe_unary_minus_func_uint16_t_u
	.thumb_func
safe_unary_minus_func_uint16_t_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	uxth	r0, r0
	pop	{r7, pc}
.Lfunc_end51:
	.size	safe_unary_minus_func_uint16_t_u, .Lfunc_end51-safe_unary_minus_func_uint16_t_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_uint16_t_u_u      @ -- Begin function safe_add_func_uint16_t_u_u
	.p2align	2
	.type	safe_add_func_uint16_t_u_u,%function
	.code	16                              @ @safe_add_func_uint16_t_u_u
	.thumb_func
safe_add_func_uint16_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	add	r0, r1
	uxth	r0, r0
	pop	{r7, pc}
.Lfunc_end52:
	.size	safe_add_func_uint16_t_u_u, .Lfunc_end52-safe_add_func_uint16_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_uint16_t_u_u      @ -- Begin function safe_sub_func_uint16_t_u_u
	.p2align	2
	.type	safe_sub_func_uint16_t_u_u,%function
	.code	16                              @ @safe_sub_func_uint16_t_u_u
	.thumb_func
safe_sub_func_uint16_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	subs	r0, r0, r1
	uxth	r0, r0
	pop	{r7, pc}
.Lfunc_end53:
	.size	safe_sub_func_uint16_t_u_u, .Lfunc_end53-safe_sub_func_uint16_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_uint16_t_u_u      @ -- Begin function safe_mul_func_uint16_t_u_u
	.p2align	2
	.type	safe_mul_func_uint16_t_u_u,%function
	.code	16                              @ @safe_mul_func_uint16_t_u_u
	.thumb_func
safe_mul_func_uint16_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	muls	r0, r1, r0
	uxth	r0, r0
	pop	{r7, pc}
.Lfunc_end54:
	.size	safe_mul_func_uint16_t_u_u, .Lfunc_end54-safe_mul_func_uint16_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_uint16_t_u_u      @ -- Begin function safe_mod_func_uint16_t_u_u
	.p2align	2
	.type	safe_mod_func_uint16_t_u_u,%function
	.code	16                              @ @safe_mod_func_uint16_t_u_u
	.thumb_func
safe_mod_func_uint16_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cbz	r1, .LBB55_2
@ %bb.1:                                @ %if_cont
	udiv	r2, r0, r1
	mls	r0, r2, r1, r0
.LBB55_2:                               @ %common.ret
	uxth	r0, r0
	pop	{r7, pc}
.Lfunc_end55:
	.size	safe_mod_func_uint16_t_u_u, .Lfunc_end55-safe_mod_func_uint16_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_uint16_t_u_u      @ -- Begin function safe_div_func_uint16_t_u_u
	.p2align	2
	.type	safe_div_func_uint16_t_u_u,%function
	.code	16                              @ @safe_div_func_uint16_t_u_u
	.thumb_func
safe_div_func_uint16_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #0
	it	ne
	udivne	r0, r0, r1
	pop	{r7, pc}
.Lfunc_end56:
	.size	safe_div_func_uint16_t_u_u, .Lfunc_end56-safe_div_func_uint16_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint16_t_u_s   @ -- Begin function safe_lshift_func_uint16_t_u_s
	.p2align	2
	.type	safe_lshift_func_uint16_t_u_s,%function
	.code	16                              @ @safe_lshift_func_uint16_t_u_s
	.thumb_func
safe_lshift_func_uint16_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxth	r3, r1
	movw	r2, #65535
	lsrs	r2, r3
	uxth.w	r12, r0
	uxth	r2, r2
	cmp	r12, r2
	mov	r2, r1
	it	hi
	movhi	r2, #0
	cmp	r1, #15
	it	hi
	movhi	r2, #0
	uxth	r1, r2
	lsls	r0, r1
	uxth	r0, r0
	pop	{r7, pc}
.Lfunc_end57:
	.size	safe_lshift_func_uint16_t_u_s, .Lfunc_end57-safe_lshift_func_uint16_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint16_t_u_u   @ -- Begin function safe_lshift_func_uint16_t_u_u
	.p2align	2
	.type	safe_lshift_func_uint16_t_u_u,%function
	.code	16                              @ @safe_lshift_func_uint16_t_u_u
	.thumb_func
safe_lshift_func_uint16_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	uxth	r3, r1
	movw	r2, #65535
	lsrs	r2, r3
	uxth.w	r12, r0
	uxth	r2, r2
	cmp	r12, r2
	mov	r2, r1
	it	hi
	movhi	r2, #0
	cmp	r1, #15
	it	hi
	movhi	r2, #0
	uxth	r1, r2
	lsls	r0, r1
	uxth	r0, r0
	pop	{r7, pc}
.Lfunc_end58:
	.size	safe_lshift_func_uint16_t_u_u, .Lfunc_end58-safe_lshift_func_uint16_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint16_t_u_s   @ -- Begin function safe_rshift_func_uint16_t_u_s
	.p2align	2
	.type	safe_rshift_func_uint16_t_u_s,%function
	.code	16                              @ @safe_rshift_func_uint16_t_u_s
	.thumb_func
safe_rshift_func_uint16_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #15
	it	hi
	movhi	r1, #0
	uxth	r1, r1
	lsrs	r0, r1
	pop	{r7, pc}
.Lfunc_end59:
	.size	safe_rshift_func_uint16_t_u_s, .Lfunc_end59-safe_rshift_func_uint16_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint16_t_u_u   @ -- Begin function safe_rshift_func_uint16_t_u_u
	.p2align	2
	.type	safe_rshift_func_uint16_t_u_u,%function
	.code	16                              @ @safe_rshift_func_uint16_t_u_u
	.thumb_func
safe_rshift_func_uint16_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #15
	it	hi
	movhi	r1, #0
	uxth	r1, r1
	lsrs	r0, r1
	pop	{r7, pc}
.Lfunc_end60:
	.size	safe_rshift_func_uint16_t_u_u, .Lfunc_end60-safe_rshift_func_uint16_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_unary_minus_func_uint32_t_u @ -- Begin function safe_unary_minus_func_uint32_t_u
	.p2align	2
	.type	safe_unary_minus_func_uint32_t_u,%function
	.code	16                              @ @safe_unary_minus_func_uint32_t_u
	.thumb_func
safe_unary_minus_func_uint32_t_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	pop	{r7, pc}
.Lfunc_end61:
	.size	safe_unary_minus_func_uint32_t_u, .Lfunc_end61-safe_unary_minus_func_uint32_t_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_uint32_t_u_u      @ -- Begin function safe_add_func_uint32_t_u_u
	.p2align	2
	.type	safe_add_func_uint32_t_u_u,%function
	.code	16                              @ @safe_add_func_uint32_t_u_u
	.thumb_func
safe_add_func_uint32_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	add	r0, r1
	pop	{r7, pc}
.Lfunc_end62:
	.size	safe_add_func_uint32_t_u_u, .Lfunc_end62-safe_add_func_uint32_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_uint32_t_u_u      @ -- Begin function safe_sub_func_uint32_t_u_u
	.p2align	2
	.type	safe_sub_func_uint32_t_u_u,%function
	.code	16                              @ @safe_sub_func_uint32_t_u_u
	.thumb_func
safe_sub_func_uint32_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	subs	r0, r0, r1
	pop	{r7, pc}
.Lfunc_end63:
	.size	safe_sub_func_uint32_t_u_u, .Lfunc_end63-safe_sub_func_uint32_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_uint32_t_u_u      @ -- Begin function safe_mul_func_uint32_t_u_u
	.p2align	2
	.type	safe_mul_func_uint32_t_u_u,%function
	.code	16                              @ @safe_mul_func_uint32_t_u_u
	.thumb_func
safe_mul_func_uint32_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	muls	r0, r1, r0
	pop	{r7, pc}
.Lfunc_end64:
	.size	safe_mul_func_uint32_t_u_u, .Lfunc_end64-safe_mul_func_uint32_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_uint32_t_u_u      @ -- Begin function safe_mod_func_uint32_t_u_u
	.p2align	2
	.type	safe_mod_func_uint32_t_u_u,%function
	.code	16                              @ @safe_mod_func_uint32_t_u_u
	.thumb_func
safe_mod_func_uint32_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #0
	it	eq
	popeq	{r7, pc}
.LBB65_1:                               @ %if_cont
	udiv	r2, r0, r1
	mls	r0, r2, r1, r0
	pop	{r7, pc}
.Lfunc_end65:
	.size	safe_mod_func_uint32_t_u_u, .Lfunc_end65-safe_mod_func_uint32_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_uint32_t_u_u      @ -- Begin function safe_div_func_uint32_t_u_u
	.p2align	2
	.type	safe_div_func_uint32_t_u_u,%function
	.code	16                              @ @safe_div_func_uint32_t_u_u
	.thumb_func
safe_div_func_uint32_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #0
	it	ne
	udivne	r0, r0, r1
	pop	{r7, pc}
.Lfunc_end66:
	.size	safe_div_func_uint32_t_u_u, .Lfunc_end66-safe_div_func_uint32_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint32_t_u_s   @ -- Begin function safe_lshift_func_uint32_t_u_s
	.p2align	2
	.type	safe_lshift_func_uint32_t_u_s,%function
	.code	16                              @ @safe_lshift_func_uint32_t_u_s
	.thumb_func
safe_lshift_func_uint32_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	mov.w	r2, #-1
	lsrs	r2, r1
	cmp	r0, r2
	mov	r2, r1
	it	hi
	movhi	r2, #0
	cmp	r1, #31
	it	hi
	movhi	r2, #0
	lsls	r0, r2
	pop	{r7, pc}
.Lfunc_end67:
	.size	safe_lshift_func_uint32_t_u_s, .Lfunc_end67-safe_lshift_func_uint32_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint32_t_u_u   @ -- Begin function safe_lshift_func_uint32_t_u_u
	.p2align	2
	.type	safe_lshift_func_uint32_t_u_u,%function
	.code	16                              @ @safe_lshift_func_uint32_t_u_u
	.thumb_func
safe_lshift_func_uint32_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	mov.w	r2, #-1
	lsrs	r2, r1
	cmp	r0, r2
	mov	r2, r1
	it	hi
	movhi	r2, #0
	cmp	r1, #31
	it	hi
	movhi	r2, #0
	lsls	r0, r2
	pop	{r7, pc}
.Lfunc_end68:
	.size	safe_lshift_func_uint32_t_u_u, .Lfunc_end68-safe_lshift_func_uint32_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint32_t_u_s   @ -- Begin function safe_rshift_func_uint32_t_u_s
	.p2align	2
	.type	safe_rshift_func_uint32_t_u_s,%function
	.code	16                              @ @safe_rshift_func_uint32_t_u_s
	.thumb_func
safe_rshift_func_uint32_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #31
	it	hi
	movhi	r1, #0
	lsrs	r0, r1
	pop	{r7, pc}
.Lfunc_end69:
	.size	safe_rshift_func_uint32_t_u_s, .Lfunc_end69-safe_rshift_func_uint32_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint32_t_u_u   @ -- Begin function safe_rshift_func_uint32_t_u_u
	.p2align	2
	.type	safe_rshift_func_uint32_t_u_u,%function
	.code	16                              @ @safe_rshift_func_uint32_t_u_u
	.thumb_func
safe_rshift_func_uint32_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r1, #31
	it	hi
	movhi	r1, #0
	lsrs	r0, r1
	pop	{r7, pc}
.Lfunc_end70:
	.size	safe_rshift_func_uint32_t_u_u, .Lfunc_end70-safe_rshift_func_uint32_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_unary_minus_func_uint64_t_u @ -- Begin function safe_unary_minus_func_uint64_t_u
	.p2align	2
	.type	safe_unary_minus_func_uint64_t_u,%function
	.code	16                              @ @safe_unary_minus_func_uint64_t_u
	.thumb_func
safe_unary_minus_func_uint64_t_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	rsbs	r0, r0, #0
	mov.w	r2, #0
	sbc.w	r1, r2, r1
	pop	{r7, pc}
.Lfunc_end71:
	.size	safe_unary_minus_func_uint64_t_u, .Lfunc_end71-safe_unary_minus_func_uint64_t_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_add_func_uint64_t_u_u      @ -- Begin function safe_add_func_uint64_t_u_u
	.p2align	2
	.type	safe_add_func_uint64_t_u_u,%function
	.code	16                              @ @safe_add_func_uint64_t_u_u
	.thumb_func
safe_add_func_uint64_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	adds	r0, r0, r2
	adcs	r1, r3
	pop	{r7, pc}
.Lfunc_end72:
	.size	safe_add_func_uint64_t_u_u, .Lfunc_end72-safe_add_func_uint64_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_sub_func_uint64_t_u_u      @ -- Begin function safe_sub_func_uint64_t_u_u
	.p2align	2
	.type	safe_sub_func_uint64_t_u_u,%function
	.code	16                              @ @safe_sub_func_uint64_t_u_u
	.thumb_func
safe_sub_func_uint64_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	subs	r0, r0, r2
	sbcs	r1, r3
	pop	{r7, pc}
.Lfunc_end73:
	.size	safe_sub_func_uint64_t_u_u, .Lfunc_end73-safe_sub_func_uint64_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mul_func_uint64_t_u_u      @ -- Begin function safe_mul_func_uint64_t_u_u
	.p2align	2
	.type	safe_mul_func_uint64_t_u_u,%function
	.code	16                              @ @safe_mul_func_uint64_t_u_u
	.thumb_func
safe_mul_func_uint64_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	umull	r12, lr, r2, r0
	mla	r1, r2, r1, lr
	mla	r1, r3, r0, r1
	mov	r0, r12
	pop	{r7, pc}
.Lfunc_end74:
	.size	safe_mul_func_uint64_t_u_u, .Lfunc_end74-safe_mul_func_uint64_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_mod_func_uint64_t_u_u      @ -- Begin function safe_mod_func_uint64_t_u_u
	.p2align	2
	.type	safe_mod_func_uint64_t_u_u,%function
	.code	16                              @ @safe_mod_func_uint64_t_u_u
	.thumb_func
safe_mod_func_uint64_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	orrs.w	r12, r2, r3
	it	eq
	bxeq	lr
.LBB75_1:                               @ %if_cont
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	pop.w	{r7, lr}
	bx	lr
.Lfunc_end75:
	.size	safe_mod_func_uint64_t_u_u, .Lfunc_end75-safe_mod_func_uint64_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_div_func_uint64_t_u_u      @ -- Begin function safe_div_func_uint64_t_u_u
	.p2align	2
	.type	safe_div_func_uint64_t_u_u,%function
	.code	16                              @ @safe_div_func_uint64_t_u_u
	.thumb_func
safe_div_func_uint64_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	orrs.w	r12, r2, r3
	it	eq
	bxeq	lr
.LBB76_1:                               @ %if_cont
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	bl	__aeabi_uldivmod
	pop.w	{r7, lr}
	bx	lr
.Lfunc_end76:
	.size	safe_div_func_uint64_t_u_u, .Lfunc_end76-safe_div_func_uint64_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint64_t_u_s   @ -- Begin function safe_lshift_func_uint64_t_u_s
	.p2align	2
	.type	safe_lshift_func_uint64_t_u_s,%function
	.code	16                              @ @safe_lshift_func_uint64_t_u_s
	.thumb_func
safe_lshift_func_uint64_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	orrs.w	r3, r0, r1
	mov	r3, r2
	it	ne
	movne	r3, #0
	cmp	r2, #63
	it	hi
	movhi	r3, #0
	rsb.w	r2, r3, #32
	lsls	r1, r3
	lsr.w	r2, r0, r2
	orrs	r1, r2
	subs.w	r2, r3, #32
	it	pl
	lslpl.w	r1, r0, r2
	lsl.w	r0, r0, r3
	it	pl
	movpl	r0, #0
	pop	{r7, pc}
.Lfunc_end77:
	.size	safe_lshift_func_uint64_t_u_s, .Lfunc_end77-safe_lshift_func_uint64_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_lshift_func_uint64_t_u_u   @ -- Begin function safe_lshift_func_uint64_t_u_u
	.p2align	2
	.type	safe_lshift_func_uint64_t_u_u,%function
	.code	16                              @ @safe_lshift_func_uint64_t_u_u
	.thumb_func
safe_lshift_func_uint64_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	orrs.w	r3, r0, r1
	mov	r3, r2
	it	ne
	movne	r3, #0
	cmp	r2, #63
	it	hi
	movhi	r3, #0
	rsb.w	r2, r3, #32
	lsls	r1, r3
	lsr.w	r2, r0, r2
	orrs	r1, r2
	subs.w	r2, r3, #32
	it	pl
	lslpl.w	r1, r0, r2
	lsl.w	r0, r0, r3
	it	pl
	movpl	r0, #0
	pop	{r7, pc}
.Lfunc_end78:
	.size	safe_lshift_func_uint64_t_u_u, .Lfunc_end78-safe_lshift_func_uint64_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint64_t_u_s   @ -- Begin function safe_rshift_func_uint64_t_u_s
	.p2align	2
	.type	safe_rshift_func_uint64_t_u_s,%function
	.code	16                              @ @safe_rshift_func_uint64_t_u_s
	.thumb_func
safe_rshift_func_uint64_t_u_s:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r2, #63
	it	hi
	movhi	r2, #0
	rsb.w	r3, r2, #32
	lsrs	r0, r2
	lsl.w	r3, r1, r3
	orrs	r0, r3
	subs.w	r3, r2, #32
	it	pl
	lsrpl.w	r0, r1, r3
	lsr.w	r1, r1, r2
	it	pl
	movpl	r1, #0
	pop	{r7, pc}
.Lfunc_end79:
	.size	safe_rshift_func_uint64_t_u_s, .Lfunc_end79-safe_rshift_func_uint64_t_u_s
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	safe_rshift_func_uint64_t_u_u   @ -- Begin function safe_rshift_func_uint64_t_u_u
	.p2align	2
	.type	safe_rshift_func_uint64_t_u_u,%function
	.code	16                              @ @safe_rshift_func_uint64_t_u_u
	.thumb_func
safe_rshift_func_uint64_t_u_u:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	cmp	r2, #63
	it	hi
	movhi	r2, #0
	rsb.w	r3, r2, #32
	lsrs	r0, r2
	lsl.w	r3, r1, r3
	orrs	r0, r3
	subs.w	r3, r2, #32
	it	pl
	lsrpl.w	r0, r1, r3
	lsr.w	r1, r1, r2
	it	pl
	movpl	r1, #0
	pop	{r7, pc}
.Lfunc_end80:
	.size	safe_rshift_func_uint64_t_u_u, .Lfunc_end80-safe_rshift_func_uint64_t_u_u
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	func_1                          @ -- Begin function func_1
	.p2align	2
	.type	func_1,%function
	.code	16                              @ @func_1
	.thumb_func
func_1:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	movs	r0, #1
	pop	{r7, pc}
.Lfunc_end81:
	.size	func_1, .Lfunc_end81-func_1
	.cantunwind
	.fnend
                                        @ -- End function
	.globl	main                            @ -- Begin function main
	.p2align	2
	.type	main,%function
	.code	16                              @ @main
	.thumb_func
main:
	.fnstart
@ %bb.0:                                @ %body
	.save	{r7, lr}
	push	{r7, lr}
	.setfp	r7, sp
	mov	r7, sp
	bl	platform_main_begin
	bl	crc32_gentab
	movw	r0, :lower16:crc32_context
	movt	r0, :upper16:crc32_context
	ldm	r0, {r0, r1}
	movs	r2, #0
	mvns	r0, r0
	bl	platform_main_end
	movs	r0, #0
	pop	{r7, pc}
.Lfunc_end82:
	.size	main, .Lfunc_end82-main
	.fnend
                                        @ -- End function
	.type	crc32_context,%object           @ @crc32_context
	.bss
	.globl	crc32_context
	.p2align	3, 0x0
crc32_context:
	.long	0                               @ 0x0
	.long	0
	.size	crc32_context, 8

	.type	__undefined,%object             @ @__undefined
	.globl	__undefined
	.p2align	3, 0x0
__undefined:
	.long	0                               @ 0x0
	.long	0
	.size	__undefined, 8

	.section	".note.GNU-stack","",%progbits
	.eabi_attribute	30, 1	@ Tag_ABI_optimization_goals

[/code]