I was reading the [code of the bitcoin trezor MCU](https://github.com/trezor/trezor-mcu/blob/master/bootloader/bootloader.c#L63) and found this:

```
(*(void (**)())(FLASH_APP_START + 4))();

```

By breaking down some things, I tried to analyze what this line meant:

```
(   *(void (**)())(FLASH_APP_START + 4)    )      ();

```

I can see that this is a function call with no arguments, due to the `()` at the end, and that the function is whatever

```
*(void (**)())(FLASH_APP_START + 4)

```

points to.

I know that `FLASH_APP_START + 4` will resolve into something, so I just need to figure out what is this:

```
*(void (**)())

```

It is resolving to whatever `void (**)()` points to. But what is `void (**)()`? It looks like a casting to a function, maybe. But I'm not sure. Could you give me an example of what is this calling? Why would you need that?