Find the HTTP status code
Node.js,  135 126 125  123 bytes, score 40
Saved 2 bytes by using unprintable characters, as suggested by @dingledooper
s=&gt;Buffer('~&gt;/6%sH~~d4~\\~i~~,~~~~~.~~~~n)W*~~~~;~CR@M&quot;~1E~$~ _Z9~')[parseInt(s[0]+s[4]+s[19],34)*57%65]*209%523

Try it online!
Decoding example
Let's consider the input string &quot;Internal Server Error&quot;.
We extract the characters at indices \$0\$, \$4\$ and \$19\$ and concatenate them together:
Internal Server Error
^   ^              ^
This gives &quot;Iro&quot;.
We parse this string as a base-34 value, leading to \$\color{blue}{21750}\$.
Note: For many shorter entries, some characters are undefined. This leads to strings such as &quot;Piundefined&quot; and much higher integers.
We apply the hash formula:
$$(\color{blue}{21750}\times57)\bmod65=5$$
We extract the corresponding character from the lookup string (which is a &quot;s&quot;) and take its ASCII code, leading to \$\color{blue}{115}\$.
We apply another black magic formula to turn this into the final HTTP status code:
$$(\color{blue}{115}\times209)\bmod 523=500$$
Given an HTTP status code \$c\$, the ASCII code \$k\$ of the encoding character is given by the following reverse formula:
$$k = \lfloor c / 100\rfloor \times 23 - (c \bmod 100) \times 5$$
Try it online!

Node.js, 84 bytes, score 40
With a built-in.
s=&gt;Object.keys(c=require('http').STATUS_CODES).find(k=&gt;c[k]==s)||413+(~s.length/6&amp;3)

Try it online!
How?
There are 3 strings that do not match the values stored in STATUS_CODES for codes 413, 414 and 416. For these ones, we use the length of the input to figure out the correct answer.
 string                            | len | ~len/6  | &amp;3 | +413
-----------------------------------+-----+---------+----+------
 &quot;Request Entity Too Large&quot;        |  24 | -4.1667 |  0 |  413
 &quot;Request-URI Too Long&quot;            |  20 | -3.5000 |  1 |  414
 &quot;Requested Range Not Satisfiable&quot; |  31 | -5.3333 |  3 |  416