#include <stdio.h>

void *inside_ptr;
void *outside_ptr;

void my_function() {
    volatile int force_keep = 0;
    if (force_keep) {
        inside_ptr = &&unused;
    }
    inside_ptr = &&target;
    if (force_keep == 0) {
        return;
    }
target:
    printf("Inside!\n");
    goto *outside_ptr;
unused:
    return;
}

int main() {
    my_function();
    volatile int force_keep = 0;
    if (force_keep) {
        outside_ptr = &&unused;
    }
    outside_ptr = &&escape;
    goto *inside_ptr;
escape:
    printf("Back!\n");
    return 0;
unused:
    return 0;
}
