typedef unsigned long u32;
typedef unsigned short u16;
typedef long double f64;

typedef struct {
	 u32 hi;
	 u32 lo;
} u64;

typedef struct {
	 u64 hi;
	 u64 lo;
} u128;

typedef struct {
	u32 eax, ebx, ecx, edx;
	u32 *esi, edi, ebp, esp;
	u16 cs, ds, ss, es, fs, gs;
	u32 eflags;
	u32 *eip;
	union {
		f64 st[8];
		u64 mm[8];
	} u;
	u128 xmm[8];
} X86REG;