From 40be30a61e3e94152b1c4b71947472f5af486130 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Thu, 4 Jun 2026 19:13:28 +0700 Subject: [PATCH] Factor init setup path switches --- src/payload_377bed/entry1_type0x09.m | 66 ++++++++++++++-------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/src/payload_377bed/entry1_type0x09.m b/src/payload_377bed/entry1_type0x09.m index 9d41b0c..1e0ae25 100644 --- a/src/payload_377bed/entry1_type0x09.m +++ b/src/payload_377bed/entry1_type0x09.m @@ -823,6 +823,38 @@ static bool krw_has_any_ready_method(struct_krwCtx *krwCtx) return hasThreadStateKrw || hasIOConnectKrw || hasPipePairKrw || hasTargetPortKrw; } +static bool krw_prepare_selected_setup_path(struct_krwCtx *krwCtx, krw_setup_path_t setupPath, uint32_t *needsSecondStage) +{ + switch ( setupPath ) + { + case KRW_SETUP_PATH_VOUCHER: + return krw_setup_with_stat((__int64)krwCtx, needsSecondStage); + case KRW_SETUP_PATH_PORTS_VM: + return krw_setup_ports_vm((__int64)krwCtx, needsSecondStage); + case KRW_SETUP_PATH_IOGPU: + return iogpu_krw_ctx_setup((__int64)krwCtx, needsSecondStage) == 0; + case KRW_SETUP_PATH_IOSURFACE: + default: + return krw_setup_iosurface_v2((__int64)krwCtx, needsSecondStage); + } +} + +static bool krw_finish_selected_setup_path(struct_krwCtx *krwCtx, krw_setup_path_t setupPath) +{ + switch ( setupPath ) + { + case KRW_SETUP_PATH_VOUCHER: + return krw_setup_voucher(krwCtx); + case KRW_SETUP_PATH_PORTS_VM: + return krw_setup_physmap((__int64)krwCtx); + case KRW_SETUP_PATH_IOGPU: + return iogpu_physmap_init((__int64)krwCtx) == 0; + case KRW_SETUP_PATH_IOSURFACE: + default: + return krw_setup_iosurface((__int64)krwCtx); + } +} + static uint64_t driver_dispatch_finish(uint64_t status, bool commandSucceeded) { if ( (uint32_t)status || commandSucceeded ) @@ -45268,22 +45300,7 @@ LABEL_96: if ( something ) { setupPath = krw_select_setup_path(krwCtx); - switch ( setupPath ) - { - case KRW_SETUP_PATH_VOUCHER: - v39 = krw_setup_with_stat((__int64)krwCtx, &v96); - break; - case KRW_SETUP_PATH_PORTS_VM: - v39 = krw_setup_ports_vm((__int64)krwCtx, &v96); - break; - case KRW_SETUP_PATH_IOGPU: - v39 = iogpu_krw_ctx_setup((__int64)krwCtx, &v96) == 0; - break; - case KRW_SETUP_PATH_IOSURFACE: - default: - v39 = krw_setup_iosurface_v2((__int64)krwCtx, &v96); - break; - } + v39 = krw_prepare_selected_setup_path(krwCtx, setupPath, &v96); if ( !v39 ) return 163869; if ( v96 && krw_has_any_ready_method(krwCtx) ) @@ -45714,22 +45731,7 @@ LABEL_291: if ( v96 || !something ) return 0; setupPath = krw_select_setup_path(krwCtx); - switch ( setupPath ) - { - case KRW_SETUP_PATH_VOUCHER: - v92 = krw_setup_voucher((__int64)krwCtx); - break; - case KRW_SETUP_PATH_PORTS_VM: - v92 = krw_setup_physmap((__int64)krwCtx); - break; - case KRW_SETUP_PATH_IOGPU: - v92 = iogpu_physmap_init((__int64)krwCtx) == 0; - break; - case KRW_SETUP_PATH_IOSURFACE: - default: - v92 = krw_setup_iosurface((__int64)krwCtx); - break; - } + v92 = krw_finish_selected_setup_path(krwCtx, setupPath); if ( !v92 ) return 163868; return 0;