unsigned char *cbor_write_type_long_size(unsigned char *data, unsigned int size,
                                         unsigned int type,
                                         unsigned long long type_size) {
  type <<= 5;
  if (type_size < 24ULL) {
    if (size < 1) {
      return data;
    }
    *data++ = (unsigned char)(type | type_size);
    return data;
  } else if (type_size < 256ULL) {
    if (size < 2) {
      return data;
    }
    *data++ = (unsigned char)(type | 24);
    *data++ = (unsigned char)type_size;
    return data + 2;
  } else if (type_size < 65536ULL) {
    if (size < 3) {
      return data;
    }
    *data++ = (unsigned char)(type | 25);
    *data++ = (unsigned char)(type_size >> 8);
    *data++ = (unsigned char)type_size;
    return data;
  } else if (type_size < 4294967296ULL) {
    if (size < 5) {
      return data;
    }
    *data++ = (unsigned char)(type | 26);
    *data++ = (unsigned char)(type_size >> 24);
    *data++ = (unsigned char)(type_size >> 16);
    *data++ = (unsigned char)(type_size >> 8);
    *data++ = (unsigned char)type_size;
    return data;
  } else {
    if (size < 9) {
      return data;
    }
    *data++ = (unsigned char)(type | 27);
    *data++ = (unsigned char)(type_size >> 56);
    *data++ = (unsigned char)(type_size >> 48);
    *data++ = (unsigned char)(type_size >> 40);
    *data++ = (unsigned char)(type_size >> 32);
    *data++ = (unsigned char)(type_size >> 24);
    *data++ = (unsigned char)(type_size >> 16);
    *data++ = (unsigned char)(type_size >> 8);
    *data++ = (unsigned char)type_size;
    return data;
  }
}


x86 assembly (clang, -O0):
<cbor_write_type_long_size>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    -0x18(%rbp),%eax
shl    $0x5,%eax
mov    %eax,-0x18(%rbp)
cmpq   $0x18,-0x20(%rbp)
jae    1164 <cbor_write_type_long_size+0x64>
cmpl   $0x1,-0x14(%rbp)
jae    113d <cbor_write_type_long_size+0x3d>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
mov    -0x18(%rbp),%eax
or     -0x20(%rbp),%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
cmpq   $0x100,-0x20(%rbp)
jae    11ca <cbor_write_type_long_size+0xca>
cmpl   $0x2,-0x14(%rbp)
jae    1189 <cbor_write_type_long_size+0x89>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
mov    -0x18(%rbp),%eax
or     $0x18,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
cmpq   $0x10000,-0x20(%rbp)
jae    1247 <cbor_write_type_long_size+0x147>
cmpl   $0x3,-0x14(%rbp)
jae    11ef <cbor_write_type_long_size+0xef>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
mov    -0x18(%rbp),%eax
or     $0x19,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x8,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
movabs $0x100000000,%rax
cmp    %rax,-0x20(%rbp)
jae    1300 <cbor_write_type_long_size+0x200>
cmpl   $0x5,-0x14(%rbp)
jae    1272 <cbor_write_type_long_size+0x172>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
mov    -0x18(%rbp),%eax
or     $0x1a,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x18,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x10,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x8,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
cmpl   $0x9,-0x14(%rbp)
jae    1317 <cbor_write_type_long_size+0x217>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    140c <cbor_write_type_long_size+0x30c>
mov    -0x18(%rbp),%eax
or     $0x1b,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x38,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x30,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x28,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x20,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x18,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x10,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
shr    $0x8,%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<cbor_write_type_long_size>:
mov    %rdi,%rax
shl    $0x5,%edx
cmp    $0x17,%rcx
ja     111d <cbor_write_type_long_size+0x1d>
test   %esi,%esi
je     11da <cbor_write_type_long_size+0xda>
or     %ecx,%edx
mov    %dl,(%rax)
add    $0x1,%rax
ret
cmp    $0xff,%rcx
ja     113c <cbor_write_type_long_size+0x3c>
cmp    $0x2,%esi
jb     11da <cbor_write_type_long_size+0xda>
or     $0x18,%dl
mov    %dl,(%rax)
mov    %cl,0x1(%rax)
add    $0x4,%rax
ret
cmp    $0xffff,%rcx
ja     115e <cbor_write_type_long_size+0x5e>
cmp    $0x3,%esi
jb     11da <cbor_write_type_long_size+0xda>
or     $0x19,%dl
mov    %dl,(%rax)
mov    %ch,0x1(%rax)
mov    %cl,0x2(%rax)
add    $0x3,%rax
ret
mov    %rcx,%rdi
shr    $0x20,%rdi
jne    1190 <cbor_write_type_long_size+0x90>
cmp    $0x5,%esi
jb     11da <cbor_write_type_long_size+0xda>
or     $0x1a,%dl
mov    %dl,(%rax)
mov    %rcx,%rdx
shr    $0x18,%rdx
mov    %dl,0x1(%rax)
mov    %rcx,%rdx
shr    $0x10,%rdx
mov    %dl,0x2(%rax)
mov    %ch,0x3(%rax)
mov    %cl,0x4(%rax)
add    $0x5,%rax
ret
cmp    $0x9,%esi
jb     11da <cbor_write_type_long_size+0xda>
or     $0x1b,%dl
mov    %dl,(%rax)
mov    %rcx,%rdx
shr    $0x38,%rdx
mov    %dl,0x1(%rax)
mov    %rcx,%rdx
shr    $0x30,%rdx
mov    %dl,0x2(%rax)
mov    %rcx,%rdx
shr    $0x28,%rdx
mov    %dl,0x3(%rax)
mov    %dil,0x4(%rax)
mov    %rcx,%rdx
shr    $0x18,%rdx
mov    %dl,0x5(%rax)
mov    %rcx,%rdx
shr    $0x10,%rdx
mov    %dl,0x6(%rax)
mov    %ch,0x7(%rax)
mov    %cl,0x8(%rax)
add    $0x9,%rax
ret

LLVM IR (-O0):
define i8* @cbor_write_type_long_size(i8* %0, i32 %1, i32 %2, i64 %3) {
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i64
store i8* %0, i8** %6
store i32 %1, i32* %7
store i32 %2, i32* %8
store i64 %3, i64* %9
%10 = load i32, i32* %8
%11 = shl i32 %10, 5
store i32 %11, i32* %8
%12 = load i64, i64* %9
%13 = icmp ult i64 %12, 24
br i1 %13, label %14, label %28
14: ; preds = %4
%15 = load i32, i32* %7
%16 = icmp ult i32 %15, 1
br i1 %16, label %17, label %19
17: ; preds = %14
%18 = load i8*, i8** %6
store i8* %18, i8** %5
br label %157
19: ; preds = %14
%20 = load i32, i32* %8
%21 = zext i32 %20 to i64
%22 = load i64, i64* %9
%23 = or i64 %21, %22
%24 = trunc i64 %23 to i8
%25 = load i8*, i8** %6
%26 = getelementptr inbounds i8, i8* %25, i32 1
store i8* %26, i8** %6
store i8 %24, i8* %25
%27 = load i8*, i8** %6
store i8* %27, i8** %5
br label %157
28: ; preds = %4
%29 = load i64, i64* %9
%30 = icmp ult i64 %29, 256
br i1 %30, label %31, label %48
31: ; preds = %28
%32 = load i32, i32* %7
%33 = icmp ult i32 %32, 2
br i1 %33, label %34, label %36
34: ; preds = %31
%35 = load i8*, i8** %6
store i8* %35, i8** %5
br label %157
36: ; preds = %31
%37 = load i32, i32* %8
%38 = or i32 %37, 24
%39 = trunc i32 %38 to i8
%40 = load i8*, i8** %6
%41 = getelementptr inbounds i8, i8* %40, i32 1
store i8* %41, i8** %6
store i8 %39, i8* %40
%42 = load i64, i64* %9
%43 = trunc i64 %42 to i8
%44 = load i8*, i8** %6
%45 = getelementptr inbounds i8, i8* %44, i32 1
store i8* %45, i8** %6
store i8 %43, i8* %44
%46 = load i8*, i8** %6
%47 = getelementptr inbounds i8, i8* %46, i64 2
store i8* %47, i8** %5
br label %157
48: ; preds = %28
%49 = load i64, i64* %9
%50 = icmp ult i64 %49, 65536
br i1 %50, label %51, label %72
51: ; preds = %48
%52 = load i32, i32* %7
%53 = icmp ult i32 %52, 3
br i1 %53, label %54, label %56
54: ; preds = %51
%55 = load i8*, i8** %6
store i8* %55, i8** %5
br label %157
56: ; preds = %51
%57 = load i32, i32* %8
%58 = or i32 %57, 25
%59 = trunc i32 %58 to i8
%60 = load i8*, i8** %6
%61 = getelementptr inbounds i8, i8* %60, i32 1
store i8* %61, i8** %6
store i8 %59, i8* %60
%62 = load i64, i64* %9
%63 = lshr i64 %62, 8
%64 = trunc i64 %63 to i8
%65 = load i8*, i8** %6
%66 = getelementptr inbounds i8, i8* %65, i32 1
store i8* %66, i8** %6
store i8 %64, i8* %65
%67 = load i64, i64* %9
%68 = trunc i64 %67 to i8
%69 = load i8*, i8** %6
%70 = getelementptr inbounds i8, i8* %69, i32 1
store i8* %70, i8** %6
store i8 %68, i8* %69
%71 = load i8*, i8** %6
store i8* %71, i8** %5
br label %157
72: ; preds = %48
%73 = load i64, i64* %9
%74 = icmp ult i64 %73, 4294967296
br i1 %74, label %75, label %106
75: ; preds = %72
%76 = load i32, i32* %7
%77 = icmp ult i32 %76, 5
br i1 %77, label %78, label %80
78: ; preds = %75
%79 = load i8*, i8** %6
store i8* %79, i8** %5
br label %157
80: ; preds = %75
%81 = load i32, i32* %8
%82 = or i32 %81, 26
%83 = trunc i32 %82 to i8
%84 = load i8*, i8** %6
%85 = getelementptr inbounds i8, i8* %84, i32 1
store i8* %85, i8** %6
store i8 %83, i8* %84
%86 = load i64, i64* %9
%87 = lshr i64 %86, 24
%88 = trunc i64 %87 to i8
%89 = load i8*, i8** %6
%90 = getelementptr inbounds i8, i8* %89, i32 1
store i8* %90, i8** %6
store i8 %88, i8* %89
%91 = load i64, i64* %9
%92 = lshr i64 %91, 16
%93 = trunc i64 %92 to i8
%94 = load i8*, i8** %6
%95 = getelementptr inbounds i8, i8* %94, i32 1
store i8* %95, i8** %6
store i8 %93, i8* %94
%96 = load i64, i64* %9
%97 = lshr i64 %96, 8
%98 = trunc i64 %97 to i8
%99 = load i8*, i8** %6
%100 = getelementptr inbounds i8, i8* %99, i32 1
store i8* %100, i8** %6
store i8 %98, i8* %99
%101 = load i64, i64* %9
%102 = trunc i64 %101 to i8
%103 = load i8*, i8** %6
%104 = getelementptr inbounds i8, i8* %103, i32 1
store i8* %104, i8** %6
store i8 %102, i8* %103
%105 = load i8*, i8** %6
store i8* %105, i8** %5
br label %157
106: ; preds = %72
%107 = load i32, i32* %7
%108 = icmp ult i32 %107, 9
br i1 %108, label %109, label %111
109: ; preds = %106
%110 = load i8*, i8** %6
store i8* %110, i8** %5
br label %157
111: ; preds = %106
%112 = load i32, i32* %8
%113 = or i32 %112, 27
%114 = trunc i32 %113 to i8
%115 = load i8*, i8** %6
%116 = getelementptr inbounds i8, i8* %115, i32 1
store i8* %116, i8** %6
store i8 %114, i8* %115
%117 = load i64, i64* %9
%118 = lshr i64 %117, 56
%119 = trunc i64 %118 to i8
%120 = load i8*, i8** %6
%121 = getelementptr inbounds i8, i8* %120, i32 1
store i8* %121, i8** %6
store i8 %119, i8* %120
%122 = load i64, i64* %9
%123 = lshr i64 %122, 48
%124 = trunc i64 %123 to i8
%125 = load i8*, i8** %6
%126 = getelementptr inbounds i8, i8* %125, i32 1
store i8* %126, i8** %6
store i8 %124, i8* %125
%127 = load i64, i64* %9
%128 = lshr i64 %127, 40
%129 = trunc i64 %128 to i8
%130 = load i8*, i8** %6
%131 = getelementptr inbounds i8, i8* %130, i32 1
store i8* %131, i8** %6
store i8 %129, i8* %130
%132 = load i64, i64* %9
%133 = lshr i64 %132, 32
%134 = trunc i64 %133 to i8
%135 = load i8*, i8** %6
%136 = getelementptr inbounds i8, i8* %135, i32 1
store i8* %136, i8** %6
store i8 %134, i8* %135
%137 = load i64, i64* %9
%138 = lshr i64 %137, 24
%139 = trunc i64 %138 to i8
%140 = load i8*, i8** %6
%141 = getelementptr inbounds i8, i8* %140, i32 1
store i8* %141, i8** %6
store i8 %139, i8* %140
%142 = load i64, i64* %9
%143 = lshr i64 %142, 16
%144 = trunc i64 %143 to i8
%145 = load i8*, i8** %6
%146 = getelementptr inbounds i8, i8* %145, i32 1
store i8* %146, i8** %6
store i8 %144, i8* %145
%147 = load i64, i64* %9
%148 = lshr i64 %147, 8
%149 = trunc i64 %148 to i8
%150 = load i8*, i8** %6
%151 = getelementptr inbounds i8, i8* %150, i32 1
store i8* %151, i8** %6
store i8 %149, i8* %150
%152 = load i64, i64* %9
%153 = trunc i64 %152 to i8
%154 = load i8*, i8** %6
%155 = getelementptr inbounds i8, i8* %154, i32 1
store i8* %155, i8** %6
store i8 %153, i8* %154
%156 = load i8*, i8** %6
store i8* %156, i8** %5
br label %157
157: ; preds = %111, %109, %80, %78, %56, %54, %36, %34, %19, %17
%158 = load i8*, i8** %5
ret i8* %158
}

LLVM IR (-O2):
define i8* @cbor_write_type_long_size(i8* writeonly %0, i32 %1, i32 %2, i64 %3) {
%5 = shl i32 %2, 5
%6 = icmp ult i64 %3, 24
br i1 %6, label %7, label %14
7: ; preds = %4
%8 = icmp eq i32 %1, 0
br i1 %8, label %85, label %9
9: ; preds = %7
%10 = zext i32 %5 to i64
%11 = or i64 %10, %3
%12 = trunc i64 %11 to i8
%13 = getelementptr inbounds i8, i8* %0, i64 1
store i8 %12, i8* %0
br label %85
14: ; preds = %4
%15 = icmp ult i64 %3, 256
br i1 %15, label %16, label %24
16: ; preds = %14
%17 = icmp ult i32 %1, 2
br i1 %17, label %85, label %18
18: ; preds = %16
%19 = trunc i32 %5 to i8
%20 = or i8 %19, 24
%21 = getelementptr inbounds i8, i8* %0, i64 1
store i8 %20, i8* %0
%22 = trunc i64 %3 to i8
store i8 %22, i8* %21
%23 = getelementptr inbounds i8, i8* %0, i64 4
br label %85
24: ; preds = %14
%25 = icmp ult i64 %3, 65536
br i1 %25, label %26, label %37
26: ; preds = %24
%27 = icmp ult i32 %1, 3
br i1 %27, label %85, label %28
28: ; preds = %26
%29 = trunc i32 %5 to i8
%30 = or i8 %29, 25
%31 = getelementptr inbounds i8, i8* %0, i64 1
store i8 %30, i8* %0
%32 = lshr i64 %3, 8
%33 = trunc i64 %32 to i8
%34 = getelementptr inbounds i8, i8* %0, i64 2
store i8 %33, i8* %31
%35 = trunc i64 %3 to i8
%36 = getelementptr inbounds i8, i8* %0, i64 3
store i8 %35, i8* %34
br label %85
37: ; preds = %24
%38 = icmp ult i64 %3, 4294967296
br i1 %38, label %39, label %56
39: ; preds = %37
%40 = icmp ult i32 %1, 5
br i1 %40, label %85, label %41
41: ; preds = %39
%42 = trunc i32 %5 to i8
%43 = or i8 %42, 26
%44 = getelementptr inbounds i8, i8* %0, i64 1
store i8 %43, i8* %0
%45 = lshr i64 %3, 24
%46 = trunc i64 %45 to i8
%47 = getelementptr inbounds i8, i8* %0, i64 2
store i8 %46, i8* %44
%48 = lshr i64 %3, 16
%49 = trunc i64 %48 to i8
%50 = getelementptr inbounds i8, i8* %0, i64 3
store i8 %49, i8* %47
%51 = lshr i64 %3, 8
%52 = trunc i64 %51 to i8
%53 = getelementptr inbounds i8, i8* %0, i64 4
store i8 %52, i8* %50
%54 = trunc i64 %3 to i8
%55 = getelementptr inbounds i8, i8* %0, i64 5
store i8 %54, i8* %53
br label %85
56: ; preds = %37
%57 = icmp ult i32 %1, 9
br i1 %57, label %85, label %58
58: ; preds = %56
%59 = trunc i32 %5 to i8
%60 = or i8 %59, 27
%61 = getelementptr inbounds i8, i8* %0, i64 1
store i8 %60, i8* %0
%62 = lshr i64 %3, 56
%63 = trunc i64 %62 to i8
%64 = getelementptr inbounds i8, i8* %0, i64 2
store i8 %63, i8* %61
%65 = lshr i64 %3, 48
%66 = trunc i64 %65 to i8
%67 = getelementptr inbounds i8, i8* %0, i64 3
store i8 %66, i8* %64
%68 = lshr i64 %3, 40
%69 = trunc i64 %68 to i8
%70 = getelementptr inbounds i8, i8* %0, i64 4
store i8 %69, i8* %67
%71 = lshr i64 %3, 32
%72 = trunc i64 %71 to i8
%73 = getelementptr inbounds i8, i8* %0, i64 5
store i8 %72, i8* %70
%74 = lshr i64 %3, 24
%75 = trunc i64 %74 to i8
%76 = getelementptr inbounds i8, i8* %0, i64 6
store i8 %75, i8* %73
%77 = lshr i64 %3, 16
%78 = trunc i64 %77 to i8
%79 = getelementptr inbounds i8, i8* %0, i64 7
store i8 %78, i8* %76
%80 = lshr i64 %3, 8
%81 = trunc i64 %80 to i8
%82 = getelementptr inbounds i8, i8* %0, i64 8
store i8 %81, i8* %79
%83 = trunc i64 %3 to i8
%84 = getelementptr inbounds i8, i8* %0, i64 9
store i8 %83, i8* %82
br label %85
85: ; preds = %56, %39, %26, %16, %7, %58, %41, %28, %18, %9
%86 = phi i8* [ %13, %9 ], [ %23, %18 ], [ %36, %28 ], [ %55, %41 ], [ %84, %58 ], [ %0, %7 ], [ %0, %16 ], [ %0, %26 ], [ %0, %39 ], [ %0, %56 ]
ret i8* %86
}