const char *key_share_group_name(unsigned code) {
  switch (code) {
  default:
    return "KEY_SHARE_UNKNOWN_GROUP";
    break;
  case 0x0001:
    return "sect163k1 (K-163)";
    break;
  case 0x0002:
    return "sect163r1";
    break;
  case 0x0003:
    return "sect163r2 (B-163)";
    break;
  case 0x0004:
    return "sect193r1";
    break;
  case 0x0005:
    return "sect193r2";
    break;
  case 0x0006:
    return "sect233k1 (K-233)";
    break;
  case 0x0007:
    return "sect233r1 (B-233)";
    break;
  case 0x0008:
    return "sect239k1";
    break;
  case 0x0009:
    return "sect283k1 (K-283)";
    break;
  case 0x000a:
    return "sect283r1 (B-283)";
    break;
  case 0x000b:
    return "sect409k1 (K-409)";
    break;
  case 0x000c:
    return "sect409r1 (B-409)";
    break;
  case 0x000d:
    return "sect571k1 (K-571)";
    break;
  case 0x000e:
    return "sect571r1 (B-571)";
    break;
  case 0x000f:
    return "secp160k1";
    break;
  case 0x0010:
    return "secp160r1";
    break;
  case 0x0011:
    return "secp160r2";
    break;
  case 0x0012:
    return "secp192k1";
    break;
  case 0x0013:
    return "secp192r1 (P-192)";
    break;
  case 0x0014:
    return "secp224k1";
    break;
  case 0x0015:
    return "secp224r1 (P-224)";
    break;
  case 0x0016:
    return "secp256k1";
    break;
  case 0x0017:
    return "secp256r1 (P-256)";
    break;
  case 0x0018:
    return "secp384r1 (P-384)";
    break;
  case 0x0019:
    return "secp521r1 (P-521)";
    break;
  case 0x001a:
    return "brainpoolP256r1";
    break;
  case 0x001b:
    return "brainpoolP384r1";
    break;
  case 0x001c:
    return "brainpoolP512r1";
    break;
  case 0x001d:
    return "ecdh_x25519";
    break;
  case 0x0100:
    return "ffdhe2048";
    break;
  case 0x0101:
    return "ffdhe3072";
    break;
  case 0x0102:
    return "ffdhe4096";
    break;
  case 0x0103:
    return "ffdhe6144";
    break;
  case 0x0104:
    return "ffdhe8192";
    break;
  case 0xff01:
    return "arbitrary_explicit_prime_curves";
    break;
  case 0xff02:
    return "arbitrary_explicit_char2_curves";
    break;
  case 0x0a0a:
  case 0x1a1a:
  case 0x2a2a:
  case 0x3a3a:
  case 0x4a4a:
  case 0x5a5a:
  case 0x6a6a:
  case 0x7a7a:
  case 0x8a8a:
  case 0x9a9a:
  case 0xaaaa:
  case 0xbaba:
  case 0xcaca:
  case 0xdada:
  case 0xeaea:
  case 0xfafa:
    return "GOOGLE_GREASE";
  }
}


x86 assembly (clang, -O0):
<key_share_group_name>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
sub    $0x1,%eax
je     14bc <key_share_group_name+0x3bc>
jmp    111b <key_share_group_name+0x1b>
mov    -0x10(%rbp),%eax
sub    $0x2,%eax
je     14cc <key_share_group_name+0x3cc>
jmp    112c <key_share_group_name+0x2c>
mov    -0x10(%rbp),%eax
sub    $0x3,%eax
je     14dc <key_share_group_name+0x3dc>
jmp    113d <key_share_group_name+0x3d>
mov    -0x10(%rbp),%eax
sub    $0x4,%eax
je     14ec <key_share_group_name+0x3ec>
jmp    114e <key_share_group_name+0x4e>
mov    -0x10(%rbp),%eax
sub    $0x5,%eax
je     14fc <key_share_group_name+0x3fc>
jmp    115f <key_share_group_name+0x5f>
mov    -0x10(%rbp),%eax
sub    $0x6,%eax
je     150c <key_share_group_name+0x40c>
jmp    1170 <key_share_group_name+0x70>
mov    -0x10(%rbp),%eax
sub    $0x7,%eax
je     151c <key_share_group_name+0x41c>
jmp    1181 <key_share_group_name+0x81>
mov    -0x10(%rbp),%eax
sub    $0x8,%eax
je     152c <key_share_group_name+0x42c>
jmp    1192 <key_share_group_name+0x92>
mov    -0x10(%rbp),%eax
sub    $0x9,%eax
je     153c <key_share_group_name+0x43c>
jmp    11a3 <key_share_group_name+0xa3>
mov    -0x10(%rbp),%eax
sub    $0xa,%eax
je     154c <key_share_group_name+0x44c>
jmp    11b4 <key_share_group_name+0xb4>
mov    -0x10(%rbp),%eax
sub    $0xb,%eax
je     155c <key_share_group_name+0x45c>
jmp    11c5 <key_share_group_name+0xc5>
mov    -0x10(%rbp),%eax
sub    $0xc,%eax
je     156c <key_share_group_name+0x46c>
jmp    11d6 <key_share_group_name+0xd6>
mov    -0x10(%rbp),%eax
sub    $0xd,%eax
je     157c <key_share_group_name+0x47c>
jmp    11e7 <key_share_group_name+0xe7>
mov    -0x10(%rbp),%eax
sub    $0xe,%eax
je     158c <key_share_group_name+0x48c>
jmp    11f8 <key_share_group_name+0xf8>
mov    -0x10(%rbp),%eax
sub    $0xf,%eax
je     159c <key_share_group_name+0x49c>
jmp    1209 <key_share_group_name+0x109>
mov    -0x10(%rbp),%eax
sub    $0x10,%eax
je     15ac <key_share_group_name+0x4ac>
jmp    121a <key_share_group_name+0x11a>
mov    -0x10(%rbp),%eax
sub    $0x11,%eax
je     15bc <key_share_group_name+0x4bc>
jmp    122b <key_share_group_name+0x12b>
mov    -0x10(%rbp),%eax
sub    $0x12,%eax
je     15cc <key_share_group_name+0x4cc>
jmp    123c <key_share_group_name+0x13c>
mov    -0x10(%rbp),%eax
sub    $0x13,%eax
je     15dc <key_share_group_name+0x4dc>
jmp    124d <key_share_group_name+0x14d>
mov    -0x10(%rbp),%eax
sub    $0x14,%eax
je     15ec <key_share_group_name+0x4ec>
jmp    125e <key_share_group_name+0x15e>
mov    -0x10(%rbp),%eax
sub    $0x15,%eax
je     15fc <key_share_group_name+0x4fc>
jmp    126f <key_share_group_name+0x16f>
mov    -0x10(%rbp),%eax
sub    $0x16,%eax
je     160c <key_share_group_name+0x50c>
jmp    1280 <key_share_group_name+0x180>
mov    -0x10(%rbp),%eax
sub    $0x17,%eax
je     161c <key_share_group_name+0x51c>
jmp    1291 <key_share_group_name+0x191>
mov    -0x10(%rbp),%eax
sub    $0x18,%eax
je     162c <key_share_group_name+0x52c>
jmp    12a2 <key_share_group_name+0x1a2>
mov    -0x10(%rbp),%eax
sub    $0x19,%eax
je     163c <key_share_group_name+0x53c>
jmp    12b3 <key_share_group_name+0x1b3>
mov    -0x10(%rbp),%eax
sub    $0x1a,%eax
je     164c <key_share_group_name+0x54c>
jmp    12c4 <key_share_group_name+0x1c4>
mov    -0x10(%rbp),%eax
sub    $0x1b,%eax
je     165c <key_share_group_name+0x55c>
jmp    12d5 <key_share_group_name+0x1d5>
mov    -0x10(%rbp),%eax
sub    $0x1c,%eax
je     166c <key_share_group_name+0x56c>
jmp    12e6 <key_share_group_name+0x1e6>
mov    -0x10(%rbp),%eax
sub    $0x1d,%eax
je     167c <key_share_group_name+0x57c>
jmp    12f7 <key_share_group_name+0x1f7>
mov    -0x10(%rbp),%eax
sub    $0x100,%eax
je     168c <key_share_group_name+0x58c>
jmp    130a <key_share_group_name+0x20a>
mov    -0x10(%rbp),%eax
sub    $0x101,%eax
je     169c <key_share_group_name+0x59c>
jmp    131d <key_share_group_name+0x21d>
mov    -0x10(%rbp),%eax
sub    $0x102,%eax
je     16ac <key_share_group_name+0x5ac>
jmp    1330 <key_share_group_name+0x230>
mov    -0x10(%rbp),%eax
sub    $0x103,%eax
je     16bc <key_share_group_name+0x5bc>
jmp    1343 <key_share_group_name+0x243>
mov    -0x10(%rbp),%eax
sub    $0x104,%eax
je     16cc <key_share_group_name+0x5cc>
jmp    1356 <key_share_group_name+0x256>
mov    -0x10(%rbp),%eax
sub    $0xa0a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    1369 <key_share_group_name+0x269>
mov    -0x10(%rbp),%eax
sub    $0x1a1a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    137c <key_share_group_name+0x27c>
mov    -0x10(%rbp),%eax
sub    $0x2a2a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    138f <key_share_group_name+0x28f>
mov    -0x10(%rbp),%eax
sub    $0x3a3a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    13a2 <key_share_group_name+0x2a2>
mov    -0x10(%rbp),%eax
sub    $0x4a4a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    13b5 <key_share_group_name+0x2b5>
mov    -0x10(%rbp),%eax
sub    $0x5a5a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    13c8 <key_share_group_name+0x2c8>
mov    -0x10(%rbp),%eax
sub    $0x6a6a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    13db <key_share_group_name+0x2db>
mov    -0x10(%rbp),%eax
sub    $0x7a7a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    13ee <key_share_group_name+0x2ee>
mov    -0x10(%rbp),%eax
sub    $0x8a8a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    1401 <key_share_group_name+0x301>
mov    -0x10(%rbp),%eax
sub    $0x9a9a,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    1414 <key_share_group_name+0x314>
mov    -0x10(%rbp),%eax
sub    $0xaaaa,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    1427 <key_share_group_name+0x327>
mov    -0x10(%rbp),%eax
sub    $0xbaba,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    143a <key_share_group_name+0x33a>
mov    -0x10(%rbp),%eax
sub    $0xcaca,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    144d <key_share_group_name+0x34d>
mov    -0x10(%rbp),%eax
sub    $0xdada,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    1460 <key_share_group_name+0x360>
mov    -0x10(%rbp),%eax
sub    $0xeaea,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    1473 <key_share_group_name+0x373>
mov    -0x10(%rbp),%eax
sub    $0xfafa,%eax
je     16fc <key_share_group_name+0x5fc>
jmp    1486 <key_share_group_name+0x386>
mov    -0x10(%rbp),%eax
sub    $0xff01,%eax
je     16dc <key_share_group_name+0x5dc>
jmp    1499 <key_share_group_name+0x399>
mov    -0x10(%rbp),%eax
sub    $0xff02,%eax
je     16ec <key_share_group_name+0x5ec>
jmp    14ac <key_share_group_name+0x3ac>
lea    0xb4d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb55(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb57(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb51(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb53(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb4d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb47(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb49(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb4b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb45(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb47(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb49(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb4b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb4d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb4f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb51(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb4b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb45(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb3f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb39(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb3b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb35(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb31(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb33(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb35(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb33(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb2d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb27(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb21(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb1b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb15(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb25(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1707 <key_share_group_name+0x607>
lea    0xb35(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<key_share_group_name>:
lea    0x1309(%rip),%rax
cmp    $0xa09,%edi
jg     1136 <key_share_group_name+0x36>
add    $0xffffffff,%edi
cmp    $0x103,%edi
ja     135b <key_share_group_name+0x25b>
lea    0xedb(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
lea    0x12f3(%rip),%rax
ret
cmp    $0x9a99,%edi
jg     117b <key_share_group_name+0x7b>
cmp    $0x4a49,%edi
jle    11b7 <key_share_group_name+0xb7>
cmp    $0x6a69,%edi
jle    11f1 <key_share_group_name+0xf1>
cmp    $0x6a6a,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0x7a7a,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0x8a8a,%edi
je     1244 <key_share_group_name+0x144>
jmp    135b <key_share_group_name+0x25b>
cmp    $0xdad9,%edi
jle    11d4 <key_share_group_name+0xd4>
cmp    $0xfaf9,%edi
jle    1206 <key_share_group_name+0x106>
cmp    $0xfafa,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0xff01,%edi
je     1354 <key_share_group_name+0x254>
cmp    $0xff02,%edi
jne    135b <key_share_group_name+0x25b>
lea    0x1472(%rip),%rax
ret
cmp    $0x2a29,%edi
jg     121b <key_share_group_name+0x11b>
cmp    $0xa0a,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0x1a1a,%edi
je     1244 <key_share_group_name+0x144>
jmp    135b <key_share_group_name+0x25b>
cmp    $0xbab9,%edi
jg     1230 <key_share_group_name+0x130>
cmp    $0x9a9a,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0xaaaa,%edi
je     1244 <key_share_group_name+0x144>
jmp    135b <key_share_group_name+0x25b>
cmp    $0x4a4a,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0x5a5a,%edi
je     1244 <key_share_group_name+0x144>
jmp    135b <key_share_group_name+0x25b>
cmp    $0xdada,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0xeaea,%edi
je     1244 <key_share_group_name+0x144>
jmp    135b <key_share_group_name+0x25b>
cmp    $0x2a2a,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0x3a3a,%edi
je     1244 <key_share_group_name+0x144>
jmp    135b <key_share_group_name+0x25b>
cmp    $0xbaba,%edi
je     1244 <key_share_group_name+0x144>
cmp    $0xcaca,%edi
jne    135b <key_share_group_name+0x25b>
lea    0x13fd(%rip),%rax
ret
lea    0x11e7(%rip),%rax
ret
lea    0x11e9(%rip),%rax
ret
lea    0x11f3(%rip),%rax
ret
lea    0x11f5(%rip),%rax
ret
lea    0x11f7(%rip),%rax
ret
lea    0x1201(%rip),%rax
ret
lea    0x120b(%rip),%rax
ret
lea    0x120d(%rip),%rax
ret
lea    0x1217(%rip),%rax
ret
lea    0x1221(%rip),%rax
ret
lea    0x122b(%rip),%rax
ret
lea    0x1235(%rip),%rax
ret
lea    0x123f(%rip),%rax
ret
lea    0x1249(%rip),%rax
ret
lea    0x124b(%rip),%rax
ret
lea    0x124d(%rip),%rax
ret
lea    0x124f(%rip),%rax
ret
lea    0x1251(%rip),%rax
ret
lea    0x125b(%rip),%rax
ret
lea    0x125d(%rip),%rax
ret
lea    0x1267(%rip),%rax
ret
lea    0x1269(%rip),%rax
ret
lea    0x1273(%rip),%rax
ret
lea    0x127d(%rip),%rax
ret
lea    0x1287(%rip),%rax
ret
lea    0x128f(%rip),%rax
ret
lea    0x1297(%rip),%rax
ret
lea    0x129f(%rip),%rax
ret
lea    0x12a3(%rip),%rax
ret
lea    0x12a5(%rip),%rax
ret
lea    0x12a7(%rip),%rax
ret
lea    0x12a9(%rip),%rax
ret
lea    0x12ab(%rip),%rax
ret
lea    0x12ad(%rip),%rax
ret

LLVM IR (-O0):
@.str = [24 x i8] c"KEY_SHARE_UNKNOWN_GROUP\00"
@.str.1 = [18 x i8] c"sect163k1 (K-163)\00"
@.str.2 = [10 x i8] c"sect163r1\00"
@.str.3 = [18 x i8] c"sect163r2 (B-163)\00"
@.str.4 = [10 x i8] c"sect193r1\00"
@.str.5 = [10 x i8] c"sect193r2\00"
@.str.6 = [18 x i8] c"sect233k1 (K-233)\00"
@.str.7 = [18 x i8] c"sect233r1 (B-233)\00"
@.str.8 = [10 x i8] c"sect239k1\00"
@.str.9 = [18 x i8] c"sect283k1 (K-283)\00"
@.str.10 = [18 x i8] c"sect283r1 (B-283)\00"
@.str.11 = [18 x i8] c"sect409k1 (K-409)\00"
@.str.12 = [18 x i8] c"sect409r1 (B-409)\00"
@.str.13 = [18 x i8] c"sect571k1 (K-571)\00"
@.str.14 = [18 x i8] c"sect571r1 (B-571)\00"
@.str.15 = [10 x i8] c"secp160k1\00"
@.str.16 = [10 x i8] c"secp160r1\00"
@.str.17 = [10 x i8] c"secp160r2\00"
@.str.18 = [10 x i8] c"secp192k1\00"
@.str.19 = [18 x i8] c"secp192r1 (P-192)\00"
@.str.20 = [10 x i8] c"secp224k1\00"
@.str.21 = [18 x i8] c"secp224r1 (P-224)\00"
@.str.22 = [10 x i8] c"secp256k1\00"
@.str.23 = [18 x i8] c"secp256r1 (P-256)\00"
@.str.24 = [18 x i8] c"secp384r1 (P-384)\00"
@.str.25 = [18 x i8] c"secp521r1 (P-521)\00"
@.str.26 = [16 x i8] c"brainpoolP256r1\00"
@.str.27 = [16 x i8] c"brainpoolP384r1\00"
@.str.28 = [16 x i8] c"brainpoolP512r1\00"
@.str.29 = [12 x i8] c"ecdh_x25519\00"
@.str.30 = [10 x i8] c"ffdhe2048\00"
@.str.31 = [10 x i8] c"ffdhe3072\00"
@.str.32 = [10 x i8] c"ffdhe4096\00"
@.str.33 = [10 x i8] c"ffdhe6144\00"
@.str.34 = [10 x i8] c"ffdhe8192\00"
@.str.35 = [32 x i8] c"arbitrary_explicit_prime_curves\00"
@.str.36 = [32 x i8] c"arbitrary_explicit_char2_curves\00"
@.str.37 = [14 x i8] c"GOOGLE_GREASE\00"
define i8* @key_share_group_name(i32 %0) {
%2 = alloca i8*
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %5 [
i32 1, label %6
i32 2, label %7
i32 3, label %8
i32 4, label %9
i32 5, label %10
i32 6, label %11
i32 7, label %12
i32 8, label %13
i32 9, label %14
i32 10, label %15
i32 11, label %16
i32 12, label %17
i32 13, label %18
i32 14, label %19
i32 15, label %20
i32 16, label %21
i32 17, label %22
i32 18, label %23
i32 19, label %24
i32 20, label %25
i32 21, label %26
i32 22, label %27
i32 23, label %28
i32 24, label %29
i32 25, label %30
i32 26, label %31
i32 27, label %32
i32 28, label %33
i32 29, label %34
i32 256, label %35
i32 257, label %36
i32 258, label %37
i32 259, label %38
i32 260, label %39
i32 65281, label %40
i32 65282, label %41
i32 2570, label %42
i32 6682, label %42
i32 10794, label %42
i32 14906, label %42
i32 19018, label %42
i32 23130, label %42
i32 27242, label %42
i32 31354, label %42
i32 35466, label %42
i32 39578, label %42
i32 43690, label %42
i32 47802, label %42
i32 51914, label %42
i32 56026, label %42
i32 60138, label %42
i32 64250, label %42
]
5: ; preds = %1
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0), i8** %2
br label %43
6: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %43
7: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %43
8: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %43
9: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %43
10: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %43
11: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %43
12: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %43
13: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %43
14: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %43
15: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %43
16: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %43
17: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %43
18: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %43
19: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %43
20: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %43
21: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %43
22: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %43
23: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %43
24: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %43
25: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %43
26: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %43
27: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %43
28: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %43
29: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.24, i64 0, i64 0), i8** %2
br label %43
30: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.25, i64 0, i64 0), i8** %2
br label %43
31: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), i8** %2
br label %43
32: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0), i8** %2
br label %43
33: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.28, i64 0, i64 0), i8** %2
br label %43
34: ; preds = %1
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.29, i64 0, i64 0), i8** %2
br label %43
35: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), i8** %2
br label %43
36: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.31, i64 0, i64 0), i8** %2
br label %43
37: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), i8** %2
br label %43
38: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.33, i64 0, i64 0), i8** %2
br label %43
39: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.34, i64 0, i64 0), i8** %2
br label %43
40: ; preds = %1
store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.35, i64 0, i64 0), i8** %2
br label %43
41: ; preds = %1
store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.36, i64 0, i64 0), i8** %2
br label %43
42: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.37, i64 0, i64 0), i8** %2
br label %43
43: ; preds = %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5
%44 = load i8*, i8** %2
ret i8* %44
}

LLVM IR (-O2):
@.str = [24 x i8] c"KEY_SHARE_UNKNOWN_GROUP\00"
@.str.1 = [18 x i8] c"sect163k1 (K-163)\00"
@.str.2 = [10 x i8] c"sect163r1\00"
@.str.3 = [18 x i8] c"sect163r2 (B-163)\00"
@.str.4 = [10 x i8] c"sect193r1\00"
@.str.5 = [10 x i8] c"sect193r2\00"
@.str.6 = [18 x i8] c"sect233k1 (K-233)\00"
@.str.7 = [18 x i8] c"sect233r1 (B-233)\00"
@.str.8 = [10 x i8] c"sect239k1\00"
@.str.9 = [18 x i8] c"sect283k1 (K-283)\00"
@.str.10 = [18 x i8] c"sect283r1 (B-283)\00"
@.str.11 = [18 x i8] c"sect409k1 (K-409)\00"
@.str.12 = [18 x i8] c"sect409r1 (B-409)\00"
@.str.13 = [18 x i8] c"sect571k1 (K-571)\00"
@.str.14 = [18 x i8] c"sect571r1 (B-571)\00"
@.str.15 = [10 x i8] c"secp160k1\00"
@.str.16 = [10 x i8] c"secp160r1\00"
@.str.17 = [10 x i8] c"secp160r2\00"
@.str.18 = [10 x i8] c"secp192k1\00"
@.str.19 = [18 x i8] c"secp192r1 (P-192)\00"
@.str.20 = [10 x i8] c"secp224k1\00"
@.str.21 = [18 x i8] c"secp224r1 (P-224)\00"
@.str.22 = [10 x i8] c"secp256k1\00"
@.str.23 = [18 x i8] c"secp256r1 (P-256)\00"
@.str.24 = [18 x i8] c"secp384r1 (P-384)\00"
@.str.25 = [18 x i8] c"secp521r1 (P-521)\00"
@.str.26 = [16 x i8] c"brainpoolP256r1\00"
@.str.27 = [16 x i8] c"brainpoolP384r1\00"
@.str.28 = [16 x i8] c"brainpoolP512r1\00"
@.str.29 = [12 x i8] c"ecdh_x25519\00"
@.str.30 = [10 x i8] c"ffdhe2048\00"
@.str.31 = [10 x i8] c"ffdhe3072\00"
@.str.32 = [10 x i8] c"ffdhe4096\00"
@.str.33 = [10 x i8] c"ffdhe6144\00"
@.str.34 = [10 x i8] c"ffdhe8192\00"
@.str.35 = [32 x i8] c"arbitrary_explicit_prime_curves\00"
@.str.36 = [32 x i8] c"arbitrary_explicit_char2_curves\00"
@.str.37 = [14 x i8] c"GOOGLE_GREASE\00"
define i8* @key_share_group_name(i32 %0) {
switch i32 %0, label %39 [
i32 1, label %2
i32 2, label %3
i32 3, label %4
i32 4, label %5
i32 5, label %6
i32 6, label %7
i32 7, label %8
i32 8, label %9
i32 9, label %10
i32 10, label %11
i32 11, label %12
i32 12, label %13
i32 13, label %14
i32 14, label %15
i32 15, label %16
i32 16, label %17
i32 17, label %18
i32 18, label %19
i32 19, label %20
i32 20, label %21
i32 21, label %22
i32 22, label %23
i32 23, label %24
i32 24, label %25
i32 25, label %26
i32 26, label %27
i32 27, label %28
i32 28, label %29
i32 29, label %30
i32 256, label %31
i32 257, label %32
i32 258, label %33
i32 259, label %34
i32 260, label %35
i32 65281, label %36
i32 65282, label %37
i32 2570, label %38
i32 6682, label %38
i32 10794, label %38
i32 14906, label %38
i32 19018, label %38
i32 23130, label %38
i32 27242, label %38
i32 31354, label %38
i32 35466, label %38
i32 39578, label %38
i32 43690, label %38
i32 47802, label %38
i32 51914, label %38
i32 56026, label %38
i32 60138, label %38
i32 64250, label %38
]
2: ; preds = %1
br label %39
3: ; preds = %1
br label %39
4: ; preds = %1
br label %39
5: ; preds = %1
br label %39
6: ; preds = %1
br label %39
7: ; preds = %1
br label %39
8: ; preds = %1
br label %39
9: ; preds = %1
br label %39
10: ; preds = %1
br label %39
11: ; preds = %1
br label %39
12: ; preds = %1
br label %39
13: ; preds = %1
br label %39
14: ; preds = %1
br label %39
15: ; preds = %1
br label %39
16: ; preds = %1
br label %39
17: ; preds = %1
br label %39
18: ; preds = %1
br label %39
19: ; preds = %1
br label %39
20: ; preds = %1
br label %39
21: ; preds = %1
br label %39
22: ; preds = %1
br label %39
23: ; preds = %1
br label %39
24: ; preds = %1
br label %39
25: ; preds = %1
br label %39
26: ; preds = %1
br label %39
27: ; preds = %1
br label %39
28: ; preds = %1
br label %39
29: ; preds = %1
br label %39
30: ; preds = %1
br label %39
31: ; preds = %1
br label %39
32: ; preds = %1
br label %39
33: ; preds = %1
br label %39
34: ; preds = %1
br label %39
35: ; preds = %1
br label %39
36: ; preds = %1
br label %39
37: ; preds = %1
br label %39
38: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
br label %39
39: ; preds = %1, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2
%40 = phi i8* [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.37, i64 0, i64 0), %38 ], [ getelementptr inbounds ([32 x i8], [32 x i8]* @.str.36, i64 0, i64 0), %37 ], [ getelementptr inbounds ([32 x i8], [32 x i8]* @.str.35, i64 0, i64 0), %36 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.34, i64 0, i64 0), %35 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.33, i64 0, i64 0), %34 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), %33 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.31, i64 0, i64 0), %32 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), %31 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.29, i64 0, i64 0), %30 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.28, i64 0, i64 0), %29 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0), %28 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), %27 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.25, i64 0, i64 0), %26 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.24, i64 0, i64 0), %25 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.23, i64 0, i64 0), %24 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.22, i64 0, i64 0), %23 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.21, i64 0, i64 0), %22 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0), %21 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), %20 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0), %19 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), %18 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), %17 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.15, i64 0, i64 0), %16 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.14, i64 0, i64 0), %15 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0), %14 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0), %13 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), %12 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0), %11 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), %10 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.8, i64 0, i64 0), %9 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), %8 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), %7 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.5, i64 0, i64 0), %6 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.4, i64 0, i64 0), %5 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0), %4 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), %3 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), %2 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0), %1 ]
ret i8* %40
}