diff --git a/system/main/shim/hci_layer.cc b/system/main/shim/hci_layer.cc
index f74a6616e3f3cfe8ed8e444144fb14e0603d80b1..bca7e3b7ae5dfe29276e3cf46e92ca9a1833004b 100644
--- a/system/main/shim/hci_layer.cc
+++ b/system/main/shim/hci_layer.cc
@@ -54,8 +54,7 @@ static base::Callback<void(const base::Location&, BT_HDR*)> send_data_upwards;
 static const packet_fragmenter_t* packet_fragmenter;
 
 namespace {
-bool is_valid_event_code(uint8_t event_code_raw) {
-  auto event_code = static_cast<bluetooth::hci::EventCode>(event_code_raw);
+bool is_valid_event_code(bluetooth::hci::EventCode event_code) {
   switch (event_code) {
     case bluetooth::hci::EventCode::INQUIRY_COMPLETE:
     case bluetooth::hci::EventCode::INQUIRY_RESULT:
@@ -116,9 +115,7 @@ bool is_valid_event_code(uint8_t event_code_raw) {
   return false;
 };
 
-bool is_valid_subevent_code(uint8_t subevent_code_raw) {
-  auto subevent_code =
-      static_cast<bluetooth::hci::SubeventCode>(subevent_code_raw);
+bool is_valid_subevent_code(bluetooth::hci::SubeventCode subevent_code) {
   switch (subevent_code) {
     case bluetooth::hci::SubeventCode::CONNECTION_COMPLETE:
     case bluetooth::hci::SubeventCode::CONNECTION_UPDATE_COMPLETE:
@@ -472,11 +469,12 @@ static void on_shutting_down() {
         !bluetooth::shim::is_gd_l2cap_enabled()) {
       hci_queue_end->UnregisterDequeue();
     }
-    for (uint8_t event_code_raw = 0; event_code_raw < 0xFF; event_code_raw++) {
-      if (!is_valid_event_code(event_code_raw)) {
+    for (uint16_t event_code_raw = 0; event_code_raw < 0x100;
+         event_code_raw++) {
+      auto event_code = static_cast<bluetooth::hci::EventCode>(event_code_raw);
+      if (!is_valid_event_code(event_code)) {
         continue;
       }
-      auto event_code = static_cast<bluetooth::hci::EventCode>(event_code_raw);
       if (event_already_registered_in_hci_layer(event_code)) {
         continue;
       } else if (event_already_registered_in_le_advertising_manager(
@@ -715,11 +713,11 @@ void bluetooth::shim::hci_on_reset_complete() {
     ::rust::hci_on_reset_complete();
   }
 
-  for (uint8_t event_code_raw = 0; event_code_raw < 0xFF; event_code_raw++) {
-    if (!is_valid_event_code(event_code_raw)) {
+  for (uint16_t event_code_raw = 0; event_code_raw < 0x100; event_code_raw++) {
+    auto event_code = static_cast<bluetooth::hci::EventCode>(event_code_raw);
+    if (!is_valid_event_code(event_code)) {
       continue;
     }
-    auto event_code = static_cast<bluetooth::hci::EventCode>(event_code_raw);
     if (event_already_registered_in_acl_layer(event_code)) {
       continue;
     } else if (event_already_registered_in_controller_layer(event_code)) {
@@ -739,13 +737,13 @@ void bluetooth::shim::hci_on_reset_complete() {
     }
   }
 
-  for (uint8_t subevent_code_raw = 0; subevent_code_raw < 0xFF;
+  for (uint16_t subevent_code_raw = 0; subevent_code_raw < 0x100;
        subevent_code_raw++) {
-    if (!is_valid_subevent_code(subevent_code_raw)) {
-      continue;
-    }
     auto subevent_code =
         static_cast<bluetooth::hci::SubeventCode>(subevent_code_raw);
+    if (!is_valid_subevent_code(subevent_code)) {
+      continue;
+    }
     if (subevent_already_registered_in_le_hci_layer(subevent_code)) {
       continue;
     }