IDA代码修复的问题

在IDA中经常碰到源码应该是类似switch语句的架构,
汇编为
ADR X9, A
LDRH W10, [X25,X8,LSL#1]
ADD X9, X9, X10,LSL#2
BR x9
但是F5之后得到的是
JUMPOUT(CS, (char *)&A + 4 * B[v13]);
这样的结果
如何修复将其修改成switch的伪码那?

一般都是用X8做目标函数地址寄存器的,这种用X9的似乎是动态变化的

是动态变化的,这里是碰到数组结果赋值给x9;
还有直接是一个函数返回值赋值给寄存器,然后利用br 跳转的,这2种我都不知道怎么进行恢复,switch。

看雪上有关于jumpout的对抗方法,分享一个对抗JUMPOUT的小技巧,不过似乎只是单独一个地址的跳转。你这种地址数组(多个可能地址)的跳转的话,感觉弄成switch是个不错的办法。只是我也不会弄这个 :broken_heart:

如何恢复成switch的,或者别的什么方法,能看出伪码就行啊,暂时还没找到什么解决办法。