void make_chtable(char chtable[]) {
  int i;
  for (i = 0; i < 10; i++) {
    chtable[i] = i + '0';
  }
  for (i = 0; i < 26; i++) {
    chtable[i + 10] = i + 'a';
  }
  for (i = 0; i < 26; i++) {
    chtable[i + 36] = i + 'A';
  }
  for (i = 0; i < 16; i++) {
    chtable[i + 62] = i + ' ';
  }
  for (i = 0; i < 7; i++) {
    chtable[i + 78] = i + ':';
  }
  for (i = 0; i < 6; i++) {
    chtable[i + 85] = i + '[';
  }
  for (i = 0; i < 4; i++) {
    chtable[i + 91] = i + '{';
  }
}


x86 assembly (clang, -O0):
<make_chtable>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0xa,-0xc(%rbp)
jge    113a <make_chtable+0x3a>
mov    -0xc(%rbp),%eax
add    $0x30,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    110f <make_chtable+0xf>
movl   $0x0,-0xc(%rbp)
cmpl   $0x1a,-0xc(%rbp)
jge    1171 <make_chtable+0x71>
mov    -0xc(%rbp),%eax
add    $0x61,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1141 <make_chtable+0x41>
movl   $0x0,-0xc(%rbp)
cmpl   $0x1a,-0xc(%rbp)
jge    11a8 <make_chtable+0xa8>
mov    -0xc(%rbp),%eax
add    $0x41,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x24,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1178 <make_chtable+0x78>
movl   $0x0,-0xc(%rbp)
cmpl   $0x10,-0xc(%rbp)
jge    11df <make_chtable+0xdf>
mov    -0xc(%rbp),%eax
add    $0x20,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x3e,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11af <make_chtable+0xaf>
movl   $0x0,-0xc(%rbp)
cmpl   $0x7,-0xc(%rbp)
jge    1216 <make_chtable+0x116>
mov    -0xc(%rbp),%eax
add    $0x3a,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x4e,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11e6 <make_chtable+0xe6>
movl   $0x0,-0xc(%rbp)
cmpl   $0x6,-0xc(%rbp)
jge    124d <make_chtable+0x14d>
mov    -0xc(%rbp),%eax
add    $0x5b,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x55,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    121d <make_chtable+0x11d>
movl   $0x0,-0xc(%rbp)
cmpl   $0x4,-0xc(%rbp)
jge    1284 <make_chtable+0x184>
mov    -0xc(%rbp),%eax
add    $0x7b,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x5b,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1254 <make_chtable+0x154>
pop    %rbp
ret

x86 assembly (clang, -O2):
<make_chtable>:
movaps 0xef9(%rip),%xmm0
movups %xmm0,(%rdi)
movaps 0xeff(%rip),%xmm0
movups %xmm0,0x10(%rdi)
movaps 0xf04(%rip),%xmm0
movups %xmm0,0x20(%rdi)
movaps 0xf09(%rip),%xmm0
movups %xmm0,0x30(%rdi)
movaps 0xf0e(%rip),%xmm0
movups %xmm0,0x40(%rdi)
movabs $0x5d5c5b403f3e3d3c,%rax
5b 5c 5d
mov    %rax,0x50(%rdi)
movl   $0x7b605f5e,0x58(%rdi)
movw   $0x7d7c,0x5c(%rdi)
movb   $0x7e,0x5e(%rdi)
ret

LLVM IR (-O0):
define void @make_chtable(i8* %0) {
%2 = alloca i8*
%3 = alloca i32
store i8* %0, i8** %2
store i32 0, i32* %3
br label %4
4: ; preds = %15, %1
%5 = load i32, i32* %3
%6 = icmp slt i32 %5, 10
br i1 %6, label %7, label %18
7: ; preds = %4
%8 = load i32, i32* %3
%9 = add nsw i32 %8, 48
%10 = trunc i32 %9 to i8
%11 = load i8*, i8** %2
%12 = load i32, i32* %3
%13 = sext i32 %12 to i64
%14 = getelementptr inbounds i8, i8* %11, i64 %13
store i8 %10, i8* %14
br label %15
15: ; preds = %7
%16 = load i32, i32* %3
%17 = add nsw i32 %16, 1
store i32 %17, i32* %3
br label %4
18: ; preds = %4
store i32 0, i32* %3
br label %19
19: ; preds = %31, %18
%20 = load i32, i32* %3
%21 = icmp slt i32 %20, 26
br i1 %21, label %22, label %34
22: ; preds = %19
%23 = load i32, i32* %3
%24 = add nsw i32 %23, 97
%25 = trunc i32 %24 to i8
%26 = load i8*, i8** %2
%27 = load i32, i32* %3
%28 = add nsw i32 %27, 10
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds i8, i8* %26, i64 %29
store i8 %25, i8* %30
br label %31
31: ; preds = %22
%32 = load i32, i32* %3
%33 = add nsw i32 %32, 1
store i32 %33, i32* %3
br label %19
34: ; preds = %19
store i32 0, i32* %3
br label %35
35: ; preds = %47, %34
%36 = load i32, i32* %3
%37 = icmp slt i32 %36, 26
br i1 %37, label %38, label %50
38: ; preds = %35
%39 = load i32, i32* %3
%40 = add nsw i32 %39, 65
%41 = trunc i32 %40 to i8
%42 = load i8*, i8** %2
%43 = load i32, i32* %3
%44 = add nsw i32 %43, 36
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i8, i8* %42, i64 %45
store i8 %41, i8* %46
br label %47
47: ; preds = %38
%48 = load i32, i32* %3
%49 = add nsw i32 %48, 1
store i32 %49, i32* %3
br label %35
50: ; preds = %35
store i32 0, i32* %3
br label %51
51: ; preds = %63, %50
%52 = load i32, i32* %3
%53 = icmp slt i32 %52, 16
br i1 %53, label %54, label %66
54: ; preds = %51
%55 = load i32, i32* %3
%56 = add nsw i32 %55, 32
%57 = trunc i32 %56 to i8
%58 = load i8*, i8** %2
%59 = load i32, i32* %3
%60 = add nsw i32 %59, 62
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds i8, i8* %58, i64 %61
store i8 %57, i8* %62
br label %63
63: ; preds = %54
%64 = load i32, i32* %3
%65 = add nsw i32 %64, 1
store i32 %65, i32* %3
br label %51
66: ; preds = %51
store i32 0, i32* %3
br label %67
67: ; preds = %79, %66
%68 = load i32, i32* %3
%69 = icmp slt i32 %68, 7
br i1 %69, label %70, label %82
70: ; preds = %67
%71 = load i32, i32* %3
%72 = add nsw i32 %71, 58
%73 = trunc i32 %72 to i8
%74 = load i8*, i8** %2
%75 = load i32, i32* %3
%76 = add nsw i32 %75, 78
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds i8, i8* %74, i64 %77
store i8 %73, i8* %78
br label %79
79: ; preds = %70
%80 = load i32, i32* %3
%81 = add nsw i32 %80, 1
store i32 %81, i32* %3
br label %67
82: ; preds = %67
store i32 0, i32* %3
br label %83
83: ; preds = %95, %82
%84 = load i32, i32* %3
%85 = icmp slt i32 %84, 6
br i1 %85, label %86, label %98
86: ; preds = %83
%87 = load i32, i32* %3
%88 = add nsw i32 %87, 91
%89 = trunc i32 %88 to i8
%90 = load i8*, i8** %2
%91 = load i32, i32* %3
%92 = add nsw i32 %91, 85
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds i8, i8* %90, i64 %93
store i8 %89, i8* %94
br label %95
95: ; preds = %86
%96 = load i32, i32* %3
%97 = add nsw i32 %96, 1
store i32 %97, i32* %3
br label %83
98: ; preds = %83
store i32 0, i32* %3
br label %99
99: ; preds = %111, %98
%100 = load i32, i32* %3
%101 = icmp slt i32 %100, 4
br i1 %101, label %102, label %114
102: ; preds = %99
%103 = load i32, i32* %3
%104 = add nsw i32 %103, 123
%105 = trunc i32 %104 to i8
%106 = load i8*, i8** %2
%107 = load i32, i32* %3
%108 = add nsw i32 %107, 91
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds i8, i8* %106, i64 %109
store i8 %105, i8* %110
br label %111
111: ; preds = %102
%112 = load i32, i32* %3
%113 = add nsw i32 %112, 1
store i32 %113, i32* %3
br label %99
114: ; preds = %99
ret void
}

LLVM IR (-O2):
define void @make_chtable(i8* nocapture writeonly %0) {
%2 = bitcast i8* %0 to <16 x i8>*
store <16 x i8> <i8 48, i8 49, i8 50, i8 51, i8 52, i8 53, i8 54, i8 55, i8 56, i8 57, i8 97, i8 98, i8 99, i8 100, i8 101, i8 102>, <16 x i8>* %2
%3 = getelementptr inbounds i8, i8* %0, i64 16
%4 = bitcast i8* %3 to <16 x i8>*
store <16 x i8> <i8 103, i8 104, i8 105, i8 106, i8 107, i8 108, i8 109, i8 110, i8 111, i8 112, i8 113, i8 114, i8 115, i8 116, i8 117, i8 118>, <16 x i8>* %4
%5 = getelementptr inbounds i8, i8* %0, i64 32
%6 = bitcast i8* %5 to <16 x i8>*
store <16 x i8> <i8 119, i8 120, i8 121, i8 122, i8 65, i8 66, i8 67, i8 68, i8 69, i8 70, i8 71, i8 72, i8 73, i8 74, i8 75, i8 76>, <16 x i8>* %6
%7 = getelementptr inbounds i8, i8* %0, i64 48
%8 = bitcast i8* %7 to <16 x i8>*
store <16 x i8> <i8 77, i8 78, i8 79, i8 80, i8 81, i8 82, i8 83, i8 84, i8 85, i8 86, i8 87, i8 88, i8 89, i8 90, i8 32, i8 33>, <16 x i8>* %8
%9 = getelementptr inbounds i8, i8* %0, i64 64
%10 = bitcast i8* %9 to <16 x i8>*
store <16 x i8> <i8 34, i8 35, i8 36, i8 37, i8 38, i8 39, i8 40, i8 41, i8 42, i8 43, i8 44, i8 45, i8 46, i8 47, i8 58, i8 59>, <16 x i8>* %10
%11 = getelementptr inbounds i8, i8* %0, i64 80
store i8 60, i8* %11
%12 = getelementptr inbounds i8, i8* %0, i64 81
store i8 61, i8* %12
%13 = getelementptr inbounds i8, i8* %0, i64 82
store i8 62, i8* %13
%14 = getelementptr inbounds i8, i8* %0, i64 83
store i8 63, i8* %14
%15 = getelementptr inbounds i8, i8* %0, i64 84
store i8 64, i8* %15
%16 = getelementptr inbounds i8, i8* %0, i64 85
store i8 91, i8* %16
%17 = getelementptr inbounds i8, i8* %0, i64 86
store i8 92, i8* %17
%18 = getelementptr inbounds i8, i8* %0, i64 87
store i8 93, i8* %18
%19 = getelementptr inbounds i8, i8* %0, i64 88
store i8 94, i8* %19
%20 = getelementptr inbounds i8, i8* %0, i64 89
store i8 95, i8* %20
%21 = getelementptr inbounds i8, i8* %0, i64 90
store i8 96, i8* %21
%22 = getelementptr inbounds i8, i8* %0, i64 91
store i8 123, i8* %22
%23 = getelementptr inbounds i8, i8* %0, i64 92
store i8 124, i8* %23
%24 = getelementptr inbounds i8, i8* %0, i64 93
store i8 125, i8* %24
%25 = getelementptr inbounds i8, i8* %0, i64 94
store i8 126, i8* %25
ret void
}