diff --git a/generator/sections/gen-section-ia32x64.c b/generator/sections/gen-section-ia32x64.c
index 2fb6585..a4470a8 100644
--- a/generator/sections/gen-section-ia32x64.c
+++ b/generator/sections/gen-section-ia32x64.c
@@ -6,7 +6,6 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include <stdio.h>
 #include "../../edk/Cper.h"
 #include "../gen-utils.h"
 #include "gen-sections.h"
@@ -132,20 +131,33 @@
 
     //Set register size.
     if (reg_type == 2)
+    {
         reg_size = 92; //IA32 registers.
-    if (reg_type == 3)
+    }
+    else if (reg_type == 3)
+    {
         reg_size = 244; //x64 registers.
+    }
     else
-        reg_size = (rand() % 5) * 32; //Not table defined.
+    {
+        reg_size = (rand() % 5 + 1) * 32; //Not table defined.
+    }
 
     //Create structure randomly.
     int total_size = 16 + reg_size;
     UINT16* context_structure = (UINT16*)generate_random_bytes(total_size);
 
+    //If it is x64 registers, set reserved area accordingly.
+    if (reg_type == 3)
+    {
+        UINT8* reg_bytes = (UINT8*)(context_structure + 8);
+        UINT32* reserved = (UINT32*)(reg_bytes + 140);
+        *reserved = 0;
+    }
+
     //Set header information.
     *(context_structure) = reg_type;
     *(context_structure + 1) = reg_size;
-    printf("set reg size to %d (for type %d).\n", reg_size, reg_type);
 
     //Set return values and exit.
     *location = context_structure;
diff --git a/sections/cper-section-ia32x64.c b/sections/cper-section-ia32x64.c
index 5102a33..a2f806a 100644
--- a/sections/cper-section-ia32x64.c
+++ b/sections/cper-section-ia32x64.c
@@ -567,12 +567,12 @@
     register_state.Edi = (UINT32)json_object_get_uint64(json_object_object_get(registers, "edi"));
     register_state.Ebp = (UINT32)json_object_get_uint64(json_object_object_get(registers, "ebp"));
     register_state.Esp = (UINT32)json_object_get_uint64(json_object_object_get(registers, "esp"));
-    register_state.Cs = (UINT32)json_object_get_uint64(json_object_object_get(registers, "cs"));
+    register_state.Cs = (UINT16)json_object_get_uint64(json_object_object_get(registers, "cs"));
     register_state.Ds = (UINT32)json_object_get_uint64(json_object_object_get(registers, "ds"));
-    register_state.Ss = (UINT32)json_object_get_uint64(json_object_object_get(registers, "ss"));
-    register_state.Es = (UINT32)json_object_get_uint64(json_object_object_get(registers, "es"));
-    register_state.Fs = (UINT32)json_object_get_uint64(json_object_object_get(registers, "fs"));
-    register_state.Gs = (UINT32)json_object_get_uint64(json_object_object_get(registers, "gs"));
+    register_state.Ss = (UINT16)json_object_get_uint64(json_object_object_get(registers, "ss"));
+    register_state.Es = (UINT16)json_object_get_uint64(json_object_object_get(registers, "es"));
+    register_state.Fs = (UINT16)json_object_get_uint64(json_object_object_get(registers, "fs"));
+    register_state.Gs = (UINT16)json_object_get_uint64(json_object_object_get(registers, "gs"));
     register_state.Eflags = (UINT32)json_object_get_uint64(json_object_object_get(registers, "eflags"));
     register_state.Eip = (UINT32)json_object_get_uint64(json_object_object_get(registers, "eip"));
     register_state.Cr0 = (UINT32)json_object_get_uint64(json_object_object_get(registers, "cr0"));
@@ -583,11 +583,11 @@
 
     //64-bit registers are split into two 32-bit parts.
     UINT64 gdtr = json_object_get_uint64(json_object_object_get(registers, "gdtr"));
-    register_state.Gdtr[0] = gdtr >> 32;
-    register_state.Gdtr[1] = gdtr & 0xFFFFFFFF;
+    register_state.Gdtr[0] = gdtr & 0xFFFFFFFF;
+    register_state.Gdtr[1] = gdtr >> 32;
     UINT64 idtr = json_object_get_uint64(json_object_object_get(registers, "idtr"));
-    register_state.Idtr[0] = idtr >> 32;
-    register_state.Idtr[1] = idtr & 0xFFFFFFFF;
+    register_state.Idtr[0] = idtr & 0xFFFFFFFF;
+    register_state.Idtr[1] = idtr >> 32;
 
     //16-bit registers.
     register_state.Ldtr = (UINT16)json_object_get_uint64(json_object_object_get(registers, "ldtr"));
@@ -618,12 +618,13 @@
     register_state.R13 = json_object_get_uint64(json_object_object_get(registers, "r13"));
     register_state.R14 = json_object_get_uint64(json_object_object_get(registers, "r14"));
     register_state.R15 = json_object_get_uint64(json_object_object_get(registers, "r15"));
-    register_state.Cs = json_object_get_uint64(json_object_object_get(registers, "cs"));
-    register_state.Ds = json_object_get_uint64(json_object_object_get(registers, "ds"));
-    register_state.Ss = json_object_get_uint64(json_object_object_get(registers, "ss"));
-    register_state.Es = json_object_get_uint64(json_object_object_get(registers, "es"));
-    register_state.Fs = json_object_get_uint64(json_object_object_get(registers, "fs"));
-    register_state.Gs = json_object_get_uint64(json_object_object_get(registers, "gs"));
+    register_state.Cs = (UINT16)json_object_get_int(json_object_object_get(registers, "cs"));
+    register_state.Ds = (UINT16)json_object_get_int(json_object_object_get(registers, "ds"));
+    register_state.Ss = (UINT16)json_object_get_int(json_object_object_get(registers, "ss"));
+    register_state.Es = (UINT16)json_object_get_int(json_object_object_get(registers, "es"));
+    register_state.Fs = (UINT16)json_object_get_int(json_object_object_get(registers, "fs"));
+    register_state.Gs = (UINT16)json_object_get_int(json_object_object_get(registers, "gs"));
+    register_state.Resv1 = 0;
     register_state.Rflags = json_object_get_uint64(json_object_object_get(registers, "rflags"));
     register_state.Rip = json_object_get_uint64(json_object_object_get(registers, "eip"));
     register_state.Cr0 = json_object_get_uint64(json_object_object_get(registers, "cr0"));
@@ -636,10 +637,10 @@
     register_state.Gdtr[1] = json_object_get_uint64(json_object_object_get(registers, "gdtr_1"));
     register_state.Idtr[0] = json_object_get_uint64(json_object_object_get(registers, "idtr_0"));
     register_state.Idtr[1] = json_object_get_uint64(json_object_object_get(registers, "idtr_1"));
-    register_state.Ldtr = (UINT16)json_object_get_uint64(json_object_object_get(registers, "ldtr"));
-    register_state.Tr = (UINT16)json_object_get_uint64(json_object_object_get(registers, "tr"));
+    register_state.Ldtr = (UINT16)json_object_get_int(json_object_object_get(registers, "ldtr"));
+    register_state.Tr = (UINT16)json_object_get_int(json_object_object_get(registers, "tr"));
 
     //Write out to stream.
-    fwrite(&register_state, sizeof(EFI_CONTEXT_IA32_REGISTER_STATE), 1, out);
+    fwrite(&register_state, sizeof(EFI_CONTEXT_X64_REGISTER_STATE), 1, out);
     fflush(out);
 }
\ No newline at end of file
