1//
2//  11588.cpp
3//
4
5#include <iostream>
6
7class StgInfoTable {};
8
9class StgHeader
10{
11private:
12	StgInfoTable* info;
13public:
14	StgHeader()
15	{
16		info = new StgInfoTable();
17	}
18	~StgHeader()
19	{
20		delete info;
21	}
22};
23
24class StgClosure
25{
26private:
27	StgHeader header;
28	StgClosure* payload[1];
29public:
30	StgClosure(bool make_payload = true)
31	{
32		if (make_payload)
33			payload[0] = new StgClosure(false);
34		else
35			payload[0] = NULL;
36	}
37	~StgClosure()
38	{
39		if (payload[0])
40			delete payload[0];
41	}
42};
43
44typedef unsigned long long int ptr_type;
45
46int main()
47{
48	StgClosure* r14_ = new StgClosure();
49	r14_ = (StgClosure*)(((ptr_type)r14_ | 0x01)); // set the LSB to 1 for tagging
50	ptr_type r14 = (ptr_type)r14_;
51	int x = 0;
52	x = 3;
53	return (x-1); // Set breakpoint here.
54}
55