diff --git a/build_tools/gen_mlmodel_input.py b/build_tools/gen_mlmodel_input.py
index a79afc2..cc9a352 100755
--- a/build_tools/gen_mlmodel_input.py
+++ b/build_tools/gen_mlmodel_input.py
@@ -55,8 +55,8 @@
     input_ext = os.path.splitext(input_name)[1]
     if (not input_ext) or (input_ext == '.bin'):
         with open(input_name, mode='rb') as f:
-            input = np.fromfile(f, dtype=np.uint8 if is_quant else np.float32).reshape(
-                np.prod(input_shape))
+            input = np.fromfile(f, dtype=np.uint8 if is_quant else np.float32)
+            input = input[:np.prod(input_shape)].reshape(np.prod(input_shape))
     else:
         resized_img = Image.open(input_name).resize(
             (input_shape[1], input_shape[2]))
diff --git a/samples/quant_model/CMakeLists.txt b/samples/quant_model/CMakeLists.txt
index d7316db..95f2456 100644
--- a/samples/quant_model/CMakeLists.txt
+++ b/samples/quant_model/CMakeLists.txt
@@ -163,6 +163,16 @@
 
 iree_model_input(
   NAME
+    daredevil_quant_input
+  SHAPE
+    "1, 96, 64"
+  SRC
+    "$ENV{ROOTDIR}/ml/ml-models/test_data/golden_whistle_spectrogram"
+  QUANT
+)
+
+iree_model_input(
+  NAME
     fssd_quant_input
   SHAPE
     "1, 480, 640, 1"
@@ -328,6 +338,7 @@
   DEPS
     ::daredevil_bytecode_module_static
     ::daredevil_bytecode_module_static_c
+    ::daredevil_quant_input_c
     iree::vm::bytecode_module
     samples::util::util
   LINKOPTS
@@ -343,6 +354,7 @@
   DEPS
     ::daredevil_c_module_static_c
     ::daredevil_c_module_static_emitc
+    ::daredevil_quant_input_c
     samples::util::util
   LINKOPTS
     "LINKER:--defsym=__itcm_length__=1M"
diff --git a/samples/quant_model/daredevil.c b/samples/quant_model/daredevil.c
index cb62305..178dc7e 100644
--- a/samples/quant_model/daredevil.c
+++ b/samples/quant_model/daredevil.c
@@ -20,11 +20,13 @@
 
 #include <springbok.h>
 
+#include "daredevil.h"
 #include "iree/base/api.h"
 #include "iree/hal/api.h"
 #include "samples/util/util.h"
 
 // Compiled module embedded here to avoid file IO:
+#include "samples/quant_model/daredevil_quant_input_c.h"
 #if !defined(BUILD_EMITC)
 #include "samples/quant_model/daredevil_bytecode_module_static.h"
 #include "samples/quant_model/daredevil_bytecode_module_static_c.h"
@@ -47,6 +49,8 @@
     .model_name = "daredevil_quant",
 };
 
+DaredevilOutput score;
+
 iree_status_t create_module(iree_vm_module_t **module) {
 #if !defined(BUILD_EMITC)
   const struct iree_file_toc_t *module_file_toc =
@@ -69,22 +73,37 @@
 
 iree_status_t load_input_data(const MlModel *model, void **buffer,
                               iree_const_byte_span_t **byte_span) {
-  iree_status_t result = alloc_input_buffer(model, buffer);
-  // Populate initial value
-  srand(3689964);
-  if (iree_status_is_ok(result)) {
-    for (int i = 0; i < model->input_length[0]; ++i) {
-      ((uint8_t *)*buffer)[i] = (uint8_t)rand();
-    }
-  }
   byte_span[0] = malloc(sizeof(iree_const_byte_span_t));
   *byte_span[0] = iree_make_const_byte_span(
-      buffer[0], model->input_size_bytes[0] * model->input_length[0]);
-  return result;
+      daredevil_quant_input,
+      model->input_size_bytes[0] * model->input_length[0]);
+
+
+
+  return iree_ok_status();
 }
 
 iree_status_t process_output(const MlModel *model,
                              iree_hal_buffer_mapping_t *buffers,
                              MlOutput *output) {
-  return iree_ok_status();
+  iree_status_t result = iree_ok_status();
+  // find the label index with best prediction
+  int best_out = 0;
+  int best_idx = -1;
+  for (int i = 0; i < model->output_length[0]; ++i) {
+    uint8_t out = ((uint8_t *)buffers[0].contents.data)[i];
+    if (out > best_out) {
+      best_out = out;
+      best_idx = i;
+    }
+  }
+  score.best_out = best_out;
+  score.best_idx = best_idx;
+
+  LOG_INFO("Best prediction result is: id: %d", best_idx + 1);
+  LOG_INFO("Id # 41 is Whistling");
+
+  output->result = &score;
+  output->len = sizeof(score);
+  return result;
 }
diff --git a/samples/quant_model/daredevil.h b/samples/quant_model/daredevil.h
new file mode 100644
index 0000000..fdaf5c8
--- /dev/null
+++ b/samples/quant_model/daredevil.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SAMPLES_QUANT_MODEL_DAREDEVIL_H_
+#define SAMPLES_QUANT_MODEL_DAREDEVIL_H_
+
+#include <stdint.h>
+
+typedef struct {
+    int best_idx;
+    int best_out;
+} DaredevilOutput;
+
+#endif
diff --git a/samples/quant_model/daredevil_bytecode_static_test.txt b/samples/quant_model/daredevil_bytecode_static_test.txt
new file mode 100644
index 0000000..34c3e3f
--- /dev/null
+++ b/samples/quant_model/daredevil_bytecode_static_test.txt
@@ -0,0 +1,4 @@
+// RUN: ${TEST_RUNNER_CMD} ${OUT}/springbok_iree/samples/quant_model/daredevil_bytecode_static 2>&1 | tee %t
+// RUN: cat %t | FileCheck %s
+// CHECK: {{Best prediction result is: id: 41}}
+// REQUIRES: internal
diff --git a/samples/quant_model/daredevil_emitc_static_test.txt b/samples/quant_model/daredevil_emitc_static_test.txt
new file mode 100644
index 0000000..25fc487
--- /dev/null
+++ b/samples/quant_model/daredevil_emitc_static_test.txt
@@ -0,0 +1,4 @@
+// RUN: ${TEST_RUNNER_CMD} ${OUT}/springbok_iree/samples/quant_model/daredevil_emitc_static 2>&1 | tee %t
+// RUN: cat %t | FileCheck %s
+// CHECK: {{Best prediction result is: id: 41}}
+// REQUIRES: internal
diff --git a/samples/quant_model/daredevil_test.txt b/samples/quant_model/daredevil_test.txt
deleted file mode 100644
index b710964..0000000
--- a/samples/quant_model/daredevil_test.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// RUN: ${TEST_RUNNER_CMD} ${OUT}/springbok_iree/samples/quant_model/daredevil_bytecode_static
-// RUN: ${TEST_RUNNER_CMD} ${OUT}/springbok_iree/samples/quant_model/daredevil_emitc_static
-// REQUIRES: internal
