void find_location(int location, int *row, int *col) {
  switch (location) {
  case 0:
    *row = 6;
    *col = 60;
    break;
  case 1:
    *row = 17;
    *col = 42;
    break;
  case 2:
    *row = 5;
    *col = 64;
    break;
  case 3:
    *row = 40;
    *col = 28;
    break;
  case 4:
    *row = 47;
    *col = 34;
    break;
  case 5:
    *row = 8;
    *col = 65;
    break;
  case 6:
    *row = 14;
    *col = 66;
    break;
  case 7:
    *row = 7;
    *col = 53;
    break;
  case 8:
    *row = 30;
    *col = 37;
    break;
  case 9:
    *row = 10;
    *col = 54;
    break;
  case 10:
    *row = 12;
    *col = 46;
    break;
  case 11:
    *row = 16;
    *col = 48;
    break;
  case 12:
    *row = 24;
    *col = 48;
    break;
  case 13:
    *row = 21;
    *col = 34;
    break;
  case 14:
    *row = 9;
    *col = 48;
    break;
  case 15:
    *row = 27;
    *col = 32;
    break;
  case 16:
    *row = 32;
    *col = 30;
    break;
  case 17:
    *row = 37;
    *col = 33;
    break;
  case 18:
    *row = 44;
    *col = 38;
    break;
  case 19:
    *row = 53;
    *col = 43;
    break;
  case 20:
    *row = 28;
    *col = 62;
    break;
  case 21:
    *row = 44;
    *col = 52;
    break;
  case 22:
    *row = 20;
    *col = 7;
    break;
  case 23:
    *row = 28;
    *col = 16;
    break;
  case 24:
    *row = 8;
    *col = 65;
    break;
  case 25:
    *row = 0;
    *col = 5;
    break;
  default:
    break;
  }
}


x86 assembly (clang, -O0):
<find_location>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x4(%rbp),%eax
mov    %rax,-0x20(%rbp)
sub    $0x19,%rax
ja     13be <find_location+0x2be>
mov    -0x20(%rbp),%rax
lea    0xed5(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rax
movl   $0x6,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x3c,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x11,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x2a,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x5,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x40,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x28,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x1c,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x2f,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x22,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x8,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x41,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0xe,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x42,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x7,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x35,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x1e,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x25,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0xa,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x36,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0xc,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x2e,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x10,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x30,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x18,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x30,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x15,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x22,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x9,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x30,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x1b,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x20,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x20,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x1e,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x25,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x21,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x2c,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x26,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x35,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x2b,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x1c,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x3e,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x2c,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x34,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x14,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x7,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x1c,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x10,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x8,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x41,(%rax)
jmp    13c3 <find_location+0x2c3>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x5,(%rax)
jmp    13c3 <find_location+0x2c3>
jmp    13c3 <find_location+0x2c3>
pop    %rbp
ret

x86 assembly (clang, -O2):
<find_location>:
cmp    $0x19,%edi
ja     1120 <find_location+0x20>
movslq %edi,%rax
lea    0xef1(%rip),%rcx
mov    (%rcx,%rax,4),%ecx
lea    0xf4f(%rip),%rdi
mov    (%rdi,%rax,4),%eax
mov    %ecx,(%rsi)
mov    %eax,(%rdx)
ret

LLVM IR (-O0):
define void @find_location(i32 %0, i32* %1, i32* %2) {
%4 = alloca i32
%5 = alloca i32*
%6 = alloca i32*
store i32 %0, i32* %4
store i32* %1, i32** %5
store i32* %2, i32** %6
%7 = load i32, i32* %4
switch i32 %7, label %86 [
i32 0, label %8
i32 1, label %11
i32 2, label %14
i32 3, label %17
i32 4, label %20
i32 5, label %23
i32 6, label %26
i32 7, label %29
i32 8, label %32
i32 9, label %35
i32 10, label %38
i32 11, label %41
i32 12, label %44
i32 13, label %47
i32 14, label %50
i32 15, label %53
i32 16, label %56
i32 17, label %59
i32 18, label %62
i32 19, label %65
i32 20, label %68
i32 21, label %71
i32 22, label %74
i32 23, label %77
i32 24, label %80
i32 25, label %83
]
8: ; preds = %3
%9 = load i32*, i32** %5
store i32 6, i32* %9
%10 = load i32*, i32** %6
store i32 60, i32* %10
br label %87
11: ; preds = %3
%12 = load i32*, i32** %5
store i32 17, i32* %12
%13 = load i32*, i32** %6
store i32 42, i32* %13
br label %87
14: ; preds = %3
%15 = load i32*, i32** %5
store i32 5, i32* %15
%16 = load i32*, i32** %6
store i32 64, i32* %16
br label %87
17: ; preds = %3
%18 = load i32*, i32** %5
store i32 40, i32* %18
%19 = load i32*, i32** %6
store i32 28, i32* %19
br label %87
20: ; preds = %3
%21 = load i32*, i32** %5
store i32 47, i32* %21
%22 = load i32*, i32** %6
store i32 34, i32* %22
br label %87
23: ; preds = %3
%24 = load i32*, i32** %5
store i32 8, i32* %24
%25 = load i32*, i32** %6
store i32 65, i32* %25
br label %87
26: ; preds = %3
%27 = load i32*, i32** %5
store i32 14, i32* %27
%28 = load i32*, i32** %6
store i32 66, i32* %28
br label %87
29: ; preds = %3
%30 = load i32*, i32** %5
store i32 7, i32* %30
%31 = load i32*, i32** %6
store i32 53, i32* %31
br label %87
32: ; preds = %3
%33 = load i32*, i32** %5
store i32 30, i32* %33
%34 = load i32*, i32** %6
store i32 37, i32* %34
br label %87
35: ; preds = %3
%36 = load i32*, i32** %5
store i32 10, i32* %36
%37 = load i32*, i32** %6
store i32 54, i32* %37
br label %87
38: ; preds = %3
%39 = load i32*, i32** %5
store i32 12, i32* %39
%40 = load i32*, i32** %6
store i32 46, i32* %40
br label %87
41: ; preds = %3
%42 = load i32*, i32** %5
store i32 16, i32* %42
%43 = load i32*, i32** %6
store i32 48, i32* %43
br label %87
44: ; preds = %3
%45 = load i32*, i32** %5
store i32 24, i32* %45
%46 = load i32*, i32** %6
store i32 48, i32* %46
br label %87
47: ; preds = %3
%48 = load i32*, i32** %5
store i32 21, i32* %48
%49 = load i32*, i32** %6
store i32 34, i32* %49
br label %87
50: ; preds = %3
%51 = load i32*, i32** %5
store i32 9, i32* %51
%52 = load i32*, i32** %6
store i32 48, i32* %52
br label %87
53: ; preds = %3
%54 = load i32*, i32** %5
store i32 27, i32* %54
%55 = load i32*, i32** %6
store i32 32, i32* %55
br label %87
56: ; preds = %3
%57 = load i32*, i32** %5
store i32 32, i32* %57
%58 = load i32*, i32** %6
store i32 30, i32* %58
br label %87
59: ; preds = %3
%60 = load i32*, i32** %5
store i32 37, i32* %60
%61 = load i32*, i32** %6
store i32 33, i32* %61
br label %87
62: ; preds = %3
%63 = load i32*, i32** %5
store i32 44, i32* %63
%64 = load i32*, i32** %6
store i32 38, i32* %64
br label %87
65: ; preds = %3
%66 = load i32*, i32** %5
store i32 53, i32* %66
%67 = load i32*, i32** %6
store i32 43, i32* %67
br label %87
68: ; preds = %3
%69 = load i32*, i32** %5
store i32 28, i32* %69
%70 = load i32*, i32** %6
store i32 62, i32* %70
br label %87
71: ; preds = %3
%72 = load i32*, i32** %5
store i32 44, i32* %72
%73 = load i32*, i32** %6
store i32 52, i32* %73
br label %87
74: ; preds = %3
%75 = load i32*, i32** %5
store i32 20, i32* %75
%76 = load i32*, i32** %6
store i32 7, i32* %76
br label %87
77: ; preds = %3
%78 = load i32*, i32** %5
store i32 28, i32* %78
%79 = load i32*, i32** %6
store i32 16, i32* %79
br label %87
80: ; preds = %3
%81 = load i32*, i32** %5
store i32 8, i32* %81
%82 = load i32*, i32** %6
store i32 65, i32* %82
br label %87
83: ; preds = %3
%84 = load i32*, i32** %5
store i32 0, i32* %84
%85 = load i32*, i32** %6
store i32 5, i32* %85
br label %87
86: ; preds = %3
br label %87
87: ; preds = %86, %83, %80, %77, %74, %71, %68, %65, %62, %59, %56, %53, %50, %47, %44, %41, %38, %35, %32, %29, %26, %23, %20, %17, %14, %11, %8
ret void
}

LLVM IR (-O2):
@switch.table.find_location = [26 x i32] [i32 6, i32 17, i32 5, i32 40, i32 47, i32 8, i32 14, i32 7, i32 30, i32 10, i32 12, i32 16, i32 24, i32 21, i32 9, i32 27, i32 32, i32 37, i32 44, i32 53, i32 28, i32 44, i32 20, i32 28, i32 8, i32 0]
@switch.table.find_location.1 = [26 x i32] [i32 60, i32 42, i32 64, i32 28, i32 34, i32 65, i32 66, i32 53, i32 37, i32 54, i32 46, i32 48, i32 48, i32 34, i32 48, i32 32, i32 30, i32 33, i32 38, i32 43, i32 62, i32 52, i32 7, i32 16, i32 65, i32 5]
define void @find_location(i32 %0, i32* writeonly %1, i32* writeonly %2) {
%4 = icmp ult i32 %0, 26
br i1 %4, label %5, label %12
5: ; preds = %3
%6 = sext i32 %0 to i64
%7 = getelementptr inbounds [26 x i32], [26 x i32]* @switch.table.find_location, i64 0, i64 %6
%8 = load i32, i32* %7
%9 = sext i32 %0 to i64
%10 = getelementptr inbounds [26 x i32], [26 x i32]* @switch.table.find_location.1, i64 0, i64 %9
%11 = load i32, i32* %10
store i32 %8, i32* %1
store i32 %11, i32* %2
br label %12
12: ; preds = %3, %5
ret void
}