void func0(void* input_addr); void func1(void* input_addr); void func2(void* input_addr); void func3(void* input_addr); void func4(); int main(void) { void* input_addr = 0x20000; func0(input_addr); } void func0(void* input_addr) { if (*(char *)(input_addr) == 'l') { func1(input_addr); } } void func1(void* input_addr) { if (*(char *)(input_addr + 1) == 'y') { func2(input_addr); } } void func2(void* input_addr) { if (*(char *)(input_addr + 2) == 't') { func3(input_addr); } } void func3(void* input_addr) { if (*(char *)(input_addr + 3) == 'e') { func4(); } } void func4() { *(unsigned int*)0xdeadbeef = 0xcafec0c0; }