+/*
+ *
+ */
+Disassembler * createLLVMDisassembler(const std::string& filename, InformationManager* manager) {
+ std::unique_ptr<Binary> o;
+ o.reset(createBinary(filename).get());
+ const Binary * op = o.get();
+
+ // ELFType<endian, maxalign, 64bit>
+ if (const ELF32LEObjectFile * _ = dyn_cast<ELF32LEObjectFile>(op)) {
+#pragma unused(_)
+ return new LLVMDisassembler<ELFType<support::little, 2, false>>(filename, manager);
+ }
+ if (const ELF64LEObjectFile * _ = dyn_cast<ELF64LEObjectFile>(op)) {
+#pragma unused(_)
+ return new LLVMDisassembler<ELFType<support::little, 2, true>>(filename, manager);
+ }
+ if (const ELF32BEObjectFile * _ = dyn_cast<ELF32BEObjectFile>(op)) {
+#pragma unused(_)
+ return new LLVMDisassembler<ELFType<support::big, 2, false>>(filename, manager);
+ }
+ if (const ELF64BEObjectFile * _ = dyn_cast<ELF64BEObjectFile>(op)) {
+#pragma unused(_)
+ return new LLVMDisassembler<ELFType<support::big, 2, true>>(filename, manager);
+ }
+
+ return NULL;
+}
+