int anexo3(const char caracter) {
  char c = caracter;
  if (c == '0')
    return 0;
  else if (c == '1')
    return 1;
  else if (c == '2')
    return 2;
  else if (c == '3')
    return 3;
  else if (c == '4')
    return 4;
  else if (c == '5')
    return 5;
  else if (c == '6')
    return 6;
  else if (c == '7')
    return 7;
  else if (c == '8')
    return 8;
  else if (c == '9')
    return 9;
  else if (c == 'A')
    return 10;
  else if (c == 'B')
    return 11;
  else if (c == 'C')
    return 12;
  else if (c == 'D')
    return 13;
  else if (c == 'E')
    return 14;
  else if (c == 'F')
    return 15;
  else if (c == 'G')
    return 16;
  else if (c == 'H')
    return 17;
  else if (c == 'I')
    return 18;
  else if (c == 'J')
    return 19;
  else if (c == 'K')
    return 20;
  else if (c == 'L')
    return 21;
  else if (c == 'M')
    return 22;
  else if (c == 'N')
    return 23;
  else if (c == '&')
    return 24;
  else if (c == 'O')
    return 25;
  else if (c == 'P')
    return 26;
  else if (c == 'Q')
    return 27;
  else if (c == 'R')
    return 28;
  else if (c == 'S')
    return 29;
  else if (c == 'T')
    return 30;
  else if (c == 'U')
    return 31;
  else if (c == 'V')
    return 32;
  else if (c == 'W')
    return 33;
  else if (c == 'X')
    return 34;
  else if (c == 'Y')
    return 35;
  else if (c == 'Z')
    return 36;
  else if (c == ' ')
    return 37;
  else if (c == '^')
    return 38;
  else
    return 0;
  return 0;
}


x86 assembly (clang, -O0):
<anexo3>:
push   %rbp
mov    %rsp,%rbp
mov    %dil,%al
mov    %al,-0x5(%rbp)
mov    -0x5(%rbp),%al
mov    %al,-0x6(%rbp)
movsbl -0x6(%rbp),%eax
cmp    $0x30,%eax
jne    1129 <anexo3+0x29>
movl   $0x0,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x31,%eax
jne    1142 <anexo3+0x42>
movl   $0x1,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x32,%eax
jne    115b <anexo3+0x5b>
movl   $0x2,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x33,%eax
jne    1174 <anexo3+0x74>
movl   $0x3,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x34,%eax
jne    118d <anexo3+0x8d>
movl   $0x4,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x35,%eax
jne    11a6 <anexo3+0xa6>
movl   $0x5,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x36,%eax
jne    11bf <anexo3+0xbf>
movl   $0x6,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x37,%eax
jne    11d8 <anexo3+0xd8>
movl   $0x7,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x38,%eax
jne    11f1 <anexo3+0xf1>
movl   $0x8,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x39,%eax
jne    120a <anexo3+0x10a>
movl   $0x9,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x41,%eax
jne    1223 <anexo3+0x123>
movl   $0xa,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x42,%eax
jne    123c <anexo3+0x13c>
movl   $0xb,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x43,%eax
jne    1255 <anexo3+0x155>
movl   $0xc,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x44,%eax
jne    126e <anexo3+0x16e>
movl   $0xd,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x45,%eax
jne    1287 <anexo3+0x187>
movl   $0xe,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x46,%eax
jne    12a0 <anexo3+0x1a0>
movl   $0xf,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x47,%eax
jne    12b9 <anexo3+0x1b9>
movl   $0x10,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x48,%eax
jne    12d2 <anexo3+0x1d2>
movl   $0x11,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x49,%eax
jne    12eb <anexo3+0x1eb>
movl   $0x12,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x4a,%eax
jne    1304 <anexo3+0x204>
movl   $0x13,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x4b,%eax
jne    131d <anexo3+0x21d>
movl   $0x14,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x4c,%eax
jne    1336 <anexo3+0x236>
movl   $0x15,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x4d,%eax
jne    134f <anexo3+0x24f>
movl   $0x16,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x4e,%eax
jne    1368 <anexo3+0x268>
movl   $0x17,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x26,%eax
jne    1381 <anexo3+0x281>
movl   $0x18,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x4f,%eax
jne    139a <anexo3+0x29a>
movl   $0x19,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x50,%eax
jne    13b3 <anexo3+0x2b3>
movl   $0x1a,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x51,%eax
jne    13cc <anexo3+0x2cc>
movl   $0x1b,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x52,%eax
jne    13e5 <anexo3+0x2e5>
movl   $0x1c,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x53,%eax
jne    13fe <anexo3+0x2fe>
movl   $0x1d,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x54,%eax
jne    1417 <anexo3+0x317>
movl   $0x1e,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x55,%eax
jne    1430 <anexo3+0x330>
movl   $0x1f,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x56,%eax
jne    1449 <anexo3+0x349>
movl   $0x20,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x57,%eax
jne    1462 <anexo3+0x362>
movl   $0x21,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x58,%eax
jne    147b <anexo3+0x37b>
movl   $0x22,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x59,%eax
jne    1494 <anexo3+0x394>
movl   $0x23,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x5a,%eax
jne    14ad <anexo3+0x3ad>
movl   $0x24,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x20,%eax
jne    14c6 <anexo3+0x3c6>
movl   $0x25,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movsbl -0x6(%rbp),%eax
cmp    $0x5e,%eax
jne    14df <anexo3+0x3df>
movl   $0x26,-0x4(%rbp)
jmp    14e6 <anexo3+0x3e6>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<anexo3>:
add    $0xe0,%dil
xor    %eax,%eax
cmp    $0x3e,%dil
ja     111a <anexo3+0x1a>
movsbq %dil,%rax
lea    0xee9(%rip),%rcx
mov    (%rcx,%rax,4),%eax
ret

LLVM IR (-O0):
define i32 @anexo3(i8 signext %0) {
%2 = alloca i32
%3 = alloca i8
%4 = alloca i8
store i8 %0, i8* %3
%5 = load i8, i8* %3
store i8 %5, i8* %4
%6 = load i8, i8* %4
%7 = sext i8 %6 to i32
%8 = icmp eq i32 %7, 48
br i1 %8, label %9, label %10
9: ; preds = %1
store i32 0, i32* %2
br label %201
10: ; preds = %1
%11 = load i8, i8* %4
%12 = sext i8 %11 to i32
%13 = icmp eq i32 %12, 49
br i1 %13, label %14, label %15
14: ; preds = %10
store i32 1, i32* %2
br label %201
15: ; preds = %10
%16 = load i8, i8* %4
%17 = sext i8 %16 to i32
%18 = icmp eq i32 %17, 50
br i1 %18, label %19, label %20
19: ; preds = %15
store i32 2, i32* %2
br label %201
20: ; preds = %15
%21 = load i8, i8* %4
%22 = sext i8 %21 to i32
%23 = icmp eq i32 %22, 51
br i1 %23, label %24, label %25
24: ; preds = %20
store i32 3, i32* %2
br label %201
25: ; preds = %20
%26 = load i8, i8* %4
%27 = sext i8 %26 to i32
%28 = icmp eq i32 %27, 52
br i1 %28, label %29, label %30
29: ; preds = %25
store i32 4, i32* %2
br label %201
30: ; preds = %25
%31 = load i8, i8* %4
%32 = sext i8 %31 to i32
%33 = icmp eq i32 %32, 53
br i1 %33, label %34, label %35
34: ; preds = %30
store i32 5, i32* %2
br label %201
35: ; preds = %30
%36 = load i8, i8* %4
%37 = sext i8 %36 to i32
%38 = icmp eq i32 %37, 54
br i1 %38, label %39, label %40
39: ; preds = %35
store i32 6, i32* %2
br label %201
40: ; preds = %35
%41 = load i8, i8* %4
%42 = sext i8 %41 to i32
%43 = icmp eq i32 %42, 55
br i1 %43, label %44, label %45
44: ; preds = %40
store i32 7, i32* %2
br label %201
45: ; preds = %40
%46 = load i8, i8* %4
%47 = sext i8 %46 to i32
%48 = icmp eq i32 %47, 56
br i1 %48, label %49, label %50
49: ; preds = %45
store i32 8, i32* %2
br label %201
50: ; preds = %45
%51 = load i8, i8* %4
%52 = sext i8 %51 to i32
%53 = icmp eq i32 %52, 57
br i1 %53, label %54, label %55
54: ; preds = %50
store i32 9, i32* %2
br label %201
55: ; preds = %50
%56 = load i8, i8* %4
%57 = sext i8 %56 to i32
%58 = icmp eq i32 %57, 65
br i1 %58, label %59, label %60
59: ; preds = %55
store i32 10, i32* %2
br label %201
60: ; preds = %55
%61 = load i8, i8* %4
%62 = sext i8 %61 to i32
%63 = icmp eq i32 %62, 66
br i1 %63, label %64, label %65
64: ; preds = %60
store i32 11, i32* %2
br label %201
65: ; preds = %60
%66 = load i8, i8* %4
%67 = sext i8 %66 to i32
%68 = icmp eq i32 %67, 67
br i1 %68, label %69, label %70
69: ; preds = %65
store i32 12, i32* %2
br label %201
70: ; preds = %65
%71 = load i8, i8* %4
%72 = sext i8 %71 to i32
%73 = icmp eq i32 %72, 68
br i1 %73, label %74, label %75
74: ; preds = %70
store i32 13, i32* %2
br label %201
75: ; preds = %70
%76 = load i8, i8* %4
%77 = sext i8 %76 to i32
%78 = icmp eq i32 %77, 69
br i1 %78, label %79, label %80
79: ; preds = %75
store i32 14, i32* %2
br label %201
80: ; preds = %75
%81 = load i8, i8* %4
%82 = sext i8 %81 to i32
%83 = icmp eq i32 %82, 70
br i1 %83, label %84, label %85
84: ; preds = %80
store i32 15, i32* %2
br label %201
85: ; preds = %80
%86 = load i8, i8* %4
%87 = sext i8 %86 to i32
%88 = icmp eq i32 %87, 71
br i1 %88, label %89, label %90
89: ; preds = %85
store i32 16, i32* %2
br label %201
90: ; preds = %85
%91 = load i8, i8* %4
%92 = sext i8 %91 to i32
%93 = icmp eq i32 %92, 72
br i1 %93, label %94, label %95
94: ; preds = %90
store i32 17, i32* %2
br label %201
95: ; preds = %90
%96 = load i8, i8* %4
%97 = sext i8 %96 to i32
%98 = icmp eq i32 %97, 73
br i1 %98, label %99, label %100
99: ; preds = %95
store i32 18, i32* %2
br label %201
100: ; preds = %95
%101 = load i8, i8* %4
%102 = sext i8 %101 to i32
%103 = icmp eq i32 %102, 74
br i1 %103, label %104, label %105
104: ; preds = %100
store i32 19, i32* %2
br label %201
105: ; preds = %100
%106 = load i8, i8* %4
%107 = sext i8 %106 to i32
%108 = icmp eq i32 %107, 75
br i1 %108, label %109, label %110
109: ; preds = %105
store i32 20, i32* %2
br label %201
110: ; preds = %105
%111 = load i8, i8* %4
%112 = sext i8 %111 to i32
%113 = icmp eq i32 %112, 76
br i1 %113, label %114, label %115
114: ; preds = %110
store i32 21, i32* %2
br label %201
115: ; preds = %110
%116 = load i8, i8* %4
%117 = sext i8 %116 to i32
%118 = icmp eq i32 %117, 77
br i1 %118, label %119, label %120
119: ; preds = %115
store i32 22, i32* %2
br label %201
120: ; preds = %115
%121 = load i8, i8* %4
%122 = sext i8 %121 to i32
%123 = icmp eq i32 %122, 78
br i1 %123, label %124, label %125
124: ; preds = %120
store i32 23, i32* %2
br label %201
125: ; preds = %120
%126 = load i8, i8* %4
%127 = sext i8 %126 to i32
%128 = icmp eq i32 %127, 38
br i1 %128, label %129, label %130
129: ; preds = %125
store i32 24, i32* %2
br label %201
130: ; preds = %125
%131 = load i8, i8* %4
%132 = sext i8 %131 to i32
%133 = icmp eq i32 %132, 79
br i1 %133, label %134, label %135
134: ; preds = %130
store i32 25, i32* %2
br label %201
135: ; preds = %130
%136 = load i8, i8* %4
%137 = sext i8 %136 to i32
%138 = icmp eq i32 %137, 80
br i1 %138, label %139, label %140
139: ; preds = %135
store i32 26, i32* %2
br label %201
140: ; preds = %135
%141 = load i8, i8* %4
%142 = sext i8 %141 to i32
%143 = icmp eq i32 %142, 81
br i1 %143, label %144, label %145
144: ; preds = %140
store i32 27, i32* %2
br label %201
145: ; preds = %140
%146 = load i8, i8* %4
%147 = sext i8 %146 to i32
%148 = icmp eq i32 %147, 82
br i1 %148, label %149, label %150
149: ; preds = %145
store i32 28, i32* %2
br label %201
150: ; preds = %145
%151 = load i8, i8* %4
%152 = sext i8 %151 to i32
%153 = icmp eq i32 %152, 83
br i1 %153, label %154, label %155
154: ; preds = %150
store i32 29, i32* %2
br label %201
155: ; preds = %150
%156 = load i8, i8* %4
%157 = sext i8 %156 to i32
%158 = icmp eq i32 %157, 84
br i1 %158, label %159, label %160
159: ; preds = %155
store i32 30, i32* %2
br label %201
160: ; preds = %155
%161 = load i8, i8* %4
%162 = sext i8 %161 to i32
%163 = icmp eq i32 %162, 85
br i1 %163, label %164, label %165
164: ; preds = %160
store i32 31, i32* %2
br label %201
165: ; preds = %160
%166 = load i8, i8* %4
%167 = sext i8 %166 to i32
%168 = icmp eq i32 %167, 86
br i1 %168, label %169, label %170
169: ; preds = %165
store i32 32, i32* %2
br label %201
170: ; preds = %165
%171 = load i8, i8* %4
%172 = sext i8 %171 to i32
%173 = icmp eq i32 %172, 87
br i1 %173, label %174, label %175
174: ; preds = %170
store i32 33, i32* %2
br label %201
175: ; preds = %170
%176 = load i8, i8* %4
%177 = sext i8 %176 to i32
%178 = icmp eq i32 %177, 88
br i1 %178, label %179, label %180
179: ; preds = %175
store i32 34, i32* %2
br label %201
180: ; preds = %175
%181 = load i8, i8* %4
%182 = sext i8 %181 to i32
%183 = icmp eq i32 %182, 89
br i1 %183, label %184, label %185
184: ; preds = %180
store i32 35, i32* %2
br label %201
185: ; preds = %180
%186 = load i8, i8* %4
%187 = sext i8 %186 to i32
%188 = icmp eq i32 %187, 90
br i1 %188, label %189, label %190
189: ; preds = %185
store i32 36, i32* %2
br label %201
190: ; preds = %185
%191 = load i8, i8* %4
%192 = sext i8 %191 to i32
%193 = icmp eq i32 %192, 32
br i1 %193, label %194, label %195
194: ; preds = %190
store i32 37, i32* %2
br label %201
195: ; preds = %190
%196 = load i8, i8* %4
%197 = sext i8 %196 to i32
%198 = icmp eq i32 %197, 94
br i1 %198, label %199, label %200
199: ; preds = %195
store i32 38, i32* %2
br label %201
200: ; preds = %195
store i32 0, i32* %2
br label %201
201: ; preds = %200, %199, %194, %189, %184, %179, %174, %169, %164, %159, %154, %149, %144, %139, %134, %129, %124, %119, %114, %109, %104, %99, %94, %89, %84, %79, %74, %69, %64, %59, %54, %49, %44, %39, %34, %29, %24, %19, %14, %9
%202 = load i32, i32* %2
ret i32 %202
}

LLVM IR (-O2):
@switch.table.anexo3 = [63 x i32] [i32 37, i32 0, i32 0, i32 0, i32 0, i32 0, i32 24, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 0, i32 0, i32 0, i32 38]
define i32 @anexo3(i8 signext %0) {
%2 = add i8 %0, -32
%3 = icmp ult i8 %2, 63
br i1 %3, label %4, label %8
4: ; preds = %1
%5 = sext i8 %2 to i64
%6 = getelementptr inbounds [63 x i32], [63 x i32]* @switch.table.anexo3, i64 0, i64 %5
%7 = load i32, i32* %6
br label %8
8: ; preds = %4, %1
%9 = phi i32 [ 0, %1 ], [ %7, %4 ]
ret i32 %9
}