Complete IA32/x64 conversion.
diff --git a/sections/cper-section-ia32x64.c b/sections/cper-section-ia32x64.c
index aaf51fc..784a25c 100644
--- a/sections/cper-section-ia32x64.c
+++ b/sections/cper-section-ia32x64.c
@@ -543,11 +543,88 @@
 //Converts a single CPER-JSON IA32 register array into CPER binary, outputting to the given stream.
 void ir_ia32x64_ia32_registers_to_cper(json_object* registers, FILE* out)
 {
-    //...
+    EFI_CONTEXT_IA32_REGISTER_STATE register_state;
+    register_state.Eax = (UINT32)json_object_get_uint64(json_object_object_get(registers, "eax"));
+    register_state.Ebx = (UINT32)json_object_get_uint64(json_object_object_get(registers, "ebx"));
+    register_state.Ecx = (UINT32)json_object_get_uint64(json_object_object_get(registers, "ecx"));
+    register_state.Edx = (UINT32)json_object_get_uint64(json_object_object_get(registers, "edx"));
+    register_state.Esi = (UINT32)json_object_get_uint64(json_object_object_get(registers, "esi"));
+    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.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.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"));
+    register_state.Cr1 = (UINT32)json_object_get_uint64(json_object_object_get(registers, "cr1"));
+    register_state.Cr2 = (UINT32)json_object_get_uint64(json_object_object_get(registers, "cr2"));
+    register_state.Cr3 = (UINT32)json_object_get_uint64(json_object_object_get(registers, "cr3"));
+    register_state.Cr4 = (UINT32)json_object_get_uint64(json_object_object_get(registers, "cr4"));
+
+    //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;
+    UINT64 idtr = json_object_get_uint64(json_object_object_get(registers, "idtr"));
+    register_state.Idtr[0] = idtr >> 32;
+    register_state.Idtr[1] = idtr & 0xFFFFFFFF;
+
+    //16-bit registers.
+    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"));
+
+    //Write out to stream.
+    fwrite(&register_state, sizeof(EFI_CONTEXT_IA32_REGISTER_STATE), 1, out);
+    fflush(out);
 }
 
 //Converts a single CPER-JSON x64 register array into CPER binary, outputting to the given stream.
 void ir_ia32x64_x64_registers_to_cper(json_object* registers, FILE* out)
 {
-    //...
+    EFI_CONTEXT_X64_REGISTER_STATE register_state;
+    register_state.Rax = json_object_get_uint64(json_object_object_get(registers, "rax"));
+    register_state.Rbx = json_object_get_uint64(json_object_object_get(registers, "rbx"));
+    register_state.Rcx = json_object_get_uint64(json_object_object_get(registers, "rcx"));
+    register_state.Rdx = json_object_get_uint64(json_object_object_get(registers, "rdx"));
+    register_state.Rsi = json_object_get_uint64(json_object_object_get(registers, "rsi"));
+    register_state.Rdi = json_object_get_uint64(json_object_object_get(registers, "rdi"));
+    register_state.Rbp = json_object_get_uint64(json_object_object_get(registers, "rbp"));
+    register_state.Rsp = json_object_get_uint64(json_object_object_get(registers, "rsp"));
+    register_state.R8 = json_object_get_uint64(json_object_object_get(registers, "r8"));
+    register_state.R9 = json_object_get_uint64(json_object_object_get(registers, "r9"));
+    register_state.R10 = json_object_get_uint64(json_object_object_get(registers, "r10"));
+    register_state.R11 = json_object_get_uint64(json_object_object_get(registers, "r11"));
+    register_state.R12 = json_object_get_uint64(json_object_object_get(registers, "r12"));
+    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.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"));
+    register_state.Cr1 = json_object_get_uint64(json_object_object_get(registers, "cr1"));
+    register_state.Cr2 = json_object_get_uint64(json_object_object_get(registers, "cr2"));
+    register_state.Cr3 = json_object_get_uint64(json_object_object_get(registers, "cr3"));
+    register_state.Cr4 = json_object_get_uint64(json_object_object_get(registers, "cr4"));
+    register_state.Cr8 = json_object_get_uint64(json_object_object_get(registers, "cr8"));
+    register_state.Gdtr[0] = json_object_get_uint64(json_object_object_get(registers, "gdtr_0"));
+    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"));
+
+    //Write out to stream.
+    fwrite(&register_state, sizeof(EFI_CONTEXT_IA32_REGISTER_STATE), 1, out);
+    fflush(out);
 }
\ No newline at end of file