Deciphering obfuscated javascript code (websocket response)

I have such a code, it is a response from websocket after performing some action on the page, I would like to dig into how it is executed and decrypt this code.

function a0_0x16f1(_0x28eca6,_0x47708f){const _0x42d027=a0_0x42d0();return a0_0x16f1=function(_0x16f13b,_0x164dbe){_0x16f13b=_0x16f13b-0x114;let _0x4049a6=_0x42d027[_0x16f13b];if(a0_0x16f1['MrNQPy']===undefined){var _0x47a4d1=function(_0x3d1e62){const _0x1a0f90='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x56bb9d='',_0x5a534c='';for(let _0x30b786=0x0,_0x22dbb4,_0x13c340,_0xd065b9=0x0;_0x13c340=_0x3d1e62['charAt'](_0xd065b9++);~_0x13c340&&(_0x22dbb4=_0x30b786%0x4?_0x22dbb4*0x40+_0x13c340:_0x13c340,_0x30b786++%0x4)?_0x56bb9d+=String['fromCharCode'](0xff&_0x22dbb4>>(-0x2*_0x30b786&0x6)):0x0){_0x13c340=_0x1a0f90['indexOf'](_0x13c340);}for(let _0x23c6be=0x0,_0x94b667=_0x56bb9d['length'];_0x23c6be<_0x94b667;_0x23c6be++){_0x5a534c+='%'+('00'+_0x56bb9d['charCodeAt'](_0x23c6be)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5a534c);};const _0x3ab817=function(_0x4e144e,_0x3e311d){let _0x3050da=[],_0x4ec2e4=0x0,_0x15baef,_0x41fc07='';_0x4e144e=_0x47a4d1(_0x4e144e);let _0x5eeca0;for(_0x5eeca0=0x0;_0x5eeca0<0x100;_0x5eeca0++){_0x3050da[_0x5eeca0]=_0x5eeca0;}for(_0x5eeca0=0x0;_0x5eeca0<0x100;_0x5eeca0++){_0x4ec2e4=(_0x4ec2e4+_0x3050da[_0x5eeca0]+_0x3e311d['charCodeAt'](_0x5eeca0%_0x3e311d['length']))%0x100,_0x15baef=_0x3050da[_0x5eeca0],_0x3050da[_0x5eeca0]=_0x3050da[_0x4ec2e4],_0x3050da[_0x4ec2e4]=_0x15baef;}_0x5eeca0=0x0,_0x4ec2e4=0x0;for(let _0x4f9997=0x0;_0x4f9997<_0x4e144e['length'];_0x4f9997++){_0x5eeca0=(_0x5eeca0+0x1)%0x100,_0x4ec2e4=(_0x4ec2e4+_0x3050da[_0x5eeca0])%0x100,_0x15baef=_0x3050da[_0x5eeca0],_0x3050da[_0x5eeca0]=_0x3050da[_0x4ec2e4],_0x3050da[_0x4ec2e4]=_0x15baef,_0x41fc07+=String['fromCharCode'](_0x4e144e['charCodeAt'](_0x4f9997)^_0x3050da[(_0x3050da[_0x5eeca0]+_0x3050da[_0x4ec2e4])%0x100]);}return _0x41fc07;};a0_0x16f1['RLIrdR']=_0x3ab817,_0x28eca6=arguments,a0_0x16f1['MrNQPy']=!![];}const _0x4d0c1a=_0x42d027[0x0],_0x4c9c3d=_0x16f13b+_0x4d0c1a,_0x432e61=_0x28eca6[_0x4c9c3d];return!_0x432e61?(a0_0x16f1['GPUBEQ']===undefined&&(a0_0x16f1['GPUBEQ']=!![]),_0x4049a6=a0_0x16f1['RLIrdR'](_0x4049a6,_0x164dbe),_0x28eca6[_0x4c9c3d]=_0x4049a6):_0x4049a6=_0x432e61,_0x4049a6;},a0_0x16f1(_0x28eca6,_0x47708f);}

I have tried programs to decrypt obfuscated code online, but nothing is able to decrypt. Is anyone able to step-by-step how to go about decrypting, what programs to use, etc.?