Function at 0x404460
Capabilities:
Check os version
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xac4
push ebx
push esi
push edi
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
xor eax, eax
cmp esi, eax
jne 0x40448f
mov dword [0x430214], eax
jmp 0x4044a4
push str.RegisterDeviceNotificationA
push esi
call ebx
push str.UnregisterDeviceNotification
push esi
mov dword [0x430214], eax
call ebx
mov dword [0x430200], eax
lea eax, [esp + 0x430]
push eax
mov dword [esp + 0x434], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
xor eax, eax
mov ecx, 0x100
lea edi, [esp + 0x4c8]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp + 0x10]
push 0x3ff
push ecx
lea edx, [esp + 0x4d0]
push edx
call fcn.00405920
lea eax, [esp + 0x4d4]
push eax
call fcn.00410a29
add esp, 0x10
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
lea ecx, [esp + 0x4c8]
push str._LANG:
push ecx
mov esi, eax
call fcn.00405330
add esp, 8
test eax, eax
je 0x404527
add eax, 6
push eax
call fcn.00405863
add esp, 4
mov esi, eax
movzx eax, si
mov edx, eax
and edx, 0x3ff
lea ecx, [edx - 4]
cmp ecx, 0x12
ja case.0x404541.5
movzx ecx, byte [ecx + 0x404f7c]
jmp dword [ecx*4 + 0x404f58]
shr eax, 0xa
dec eax
je 0x40455a
sub eax, 2
je 0x40455a
mov esi, 2
jmp 0x404597
mov esi, 3
jmp 0x404597
mov esi, 4
jmp 0x404597
mov esi, 5
jmp 0x404597
mov esi, 6
jmp 0x404597
mov esi, 7
jmp 0x404597
mov esi, 8
jmp 0x404597
mov esi, 9
jmp 0x404597
mov esi, 0xa
jmp 0x404597
mov esi, 1
lea edx, [esp + 0x4c8]
push str._REGISTER
push edx
call fcn.00405330
add esp, 8
test eax, eax
jne 0x4045cd
lea eax, [esp + 0x4c8]
push str._UNREGISTER
push eax
call fcn.00405330
add esp, 8
test eax, eax
je 0x4046d5
push str.STI.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
je 0x4046d5
push str.StiCreateInstanceW
push eax
call ebx
mov edi, eax
test edi, edi
je 0x4046d5
push 0
lea ecx, [esp + 0x10]
push ecx
push 2
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call edi
test eax, eax
jl 0x4046d5
lea edx, [esp + 0x4c8]
push str._UNREGISTER
push edx
call fcn.00405330
add esp, 8
test eax, eax
je 0x404644
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
push str.Kodak_Button_Manager
push eax
call dword [ecx + 0x2c]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea edx, [esp + 0x4c8]
push str._REGISTER
push edx
call fcn.00405330
add esp, 8
test eax, eax
je 0x4046d5
push 0x208
lea eax, [esp + 0x8cc]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea ecx, [esp + 0x4c8]
push str._REGISTER
push ecx
call fcn.00405330
add esp, 8
add eax, 9
push eax
lea edx, [esp + 0x8cc]
push 0x419e1c
push edx
call fcn.004057bd
lea eax, [esp + eax*2 + 0x8d4]
add esp, 4
push eax
call fcn.0040571d
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
add esp, 0xc
lea edx, [esp + 0x8c8]
push edx
push str.Kodak_Button_Manager
push eax
call dword [ecx + 0x28]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea eax, [esp + 0x4c8]
push str._TEST
push eax
call fcn.00405330
add esp, 8
test eax, eax
je 0x404d82
lea ecx, [esp + 0x10]
push ecx
push 0
call fcn.00403320
lea edx, [esp + 0x4d0]
push str._FORCE
push edx
call fcn.00405330
add esp, 0x10
test eax, eax
je 0x404788
lea eax, [esp + 0x4c8]
push str._FORCE
push eax
call fcn.00405330
mov dl, byte [eax + 6]
xor ecx, ecx
cmp dl, 0x34
setne cl
lea edx, [esp + 0x4d0]
push str._FORCE
push edx
add ecx, 4
mov dword [esp + 0x444], ecx
call fcn.00405330
mov bl, byte [eax + 7]
xor ecx, ecx
cmp bl, 0x4e
sete cl
lea edx, [esp + 0x4d8]
push str._FORCE
push edx
inc ecx
mov dword [esp + 0x458], ecx
call fcn.00405330
add eax, 8
push eax
call fcn.00405863
add esp, 0x1c
mov dword [0x42fa40], eax
jmp 0x40478d
mov eax, dword [0x42fa40]
test eax, eax
je 0x404a36
cmp eax, 0xb
je 0x40493d
add esi, 0xfffffffe
cmp eax, 0x14
je 0x4048aa
cmp esi, 8
ja case.default.0x4047b3
jmp dword [esi*4 + 0x404f90]
push eax
lea eax, [esp + 0x34]
push 0x419de4
push eax
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea ecx, [esp + 0x34]
push 0x419dc0
push ecx
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea edx, [esp + 0x34]
push str.Impossible_didentifier_la_version_dUSB_install
push edx
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea eax, [esp + 0x34]
push str.Es_konnte_nicht_ermittelt_werden__welche_USB_Version_installiert_ist..._d
push eax
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea ecx, [esp + 0x34]
push str.Impossibile_determinare_la_versione_di_USB_installata..._d
push ecx
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea edx, [esp + 0x34]
push 0x419cbc
push edx
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea eax, [esp + 0x34]
push str.Het_kan_niet_worden_vastgesteld_welke_versie_van_USB_is_ge
push eax
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea ecx, [esp + 0x34]
push 0x419c30
push ecx
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea edx, [esp + 0x34]
push str.Imposible_determinar_la_versi
push edx
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
push eax
lea eax, [esp + 0x34]
push str.Unable_to_determine_what_version_of_USB_is_installed..._d
push eax
call fcn.00405299
add esp, 0xc
jmp 0x404c1e
cmp esi, 8
ja case.default.0x4048af
jmp dword [esi*4 + 0x404fb4]
push 0x419b60
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push 0x419b00
jmp 0x404c11
push str.Le_syst
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.Ihr_Betriebssystem_unterst
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.Il_sistema_operativo_supporta_USB_2.0_ed
jmp 0x404c11
push 0x4198b8
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.Het_besturingssysteem_biedt_ondersteuning_voor_USB_2.0_en_er_is_een_USB_2.0_poort_gevonden._r_n_r_nZorg_dat_u_de_scanner_op_een_USB_2.0_poort_aansluit.
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.O_seu_sistema_operacional_oferece_suporte
jmp 0x404c11
push str.El_sistema_operativo_admite_USB_2.0__y_se_detect
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.Your_Operating_System_supports_USB_2.0__and_a_USB_2.0_port_was_found._r_n_r_nPlease_be_sure_to_plug_your_scanner_into_a_USB_2.0_port.
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
cmp dword [esp + 0x440], 2
jne 0x4049a0
cmp dword [esp + 0x434], 5
jb 0x4049a0
add esi, 0xfffffffe
cmp esi, 8
ja case.default.0x404a68
jmp dword [esi*4 + 0x404fd8]
push 0x419628
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push 0x4195a8
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push 0x419518
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.El_sistema_operativo_admite_USB_2.0__pero_no_se_detect
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
add esi, 0xfffffffe
cmp esi, 8
ja case.default.0x4049a8
jmp dword [esi*4 + 0x404ffc]
push 0x419448
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push 0x4193e8
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push 0x419348
jmp 0x404c11
push 0x419298
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.Il_sistema_operativo_supporta_USB_1.1_ed
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push 0x419168
jmp 0x404c11
push str.Het_besturingssysteem_biedt_alleen_ondersteuning_voor_USB_1.1_en_er_is_een_USB_1.1_poort_gevonden._r_n_r_nOPMERKING:_Het_is_mogelijk_dat_de_scanner_niet_op_volledige_snelheid_werkt.
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.O_seu_sistema_operacional_oferece_suporte_somente
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.El_sistema_operativo_s
jmp 0x404c11
push str.Your_Operating_System_only_supports_USB_1.1__and_a_USB_1.1_port_was_found._r_n_r_nNOTE:_The_scanner_may_not_run_at_full_rated_speed.
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
cmp dword [esp + 0x440], 2
jne 0x404ae2
mov eax, dword [esp + 0x434]
add esi, 0xfffffffe
cmp eax, 5
jae 0x404a63
cmp esi, 8
ja case.default.0x404b15
jmp dword [esi*4 + 0x405020]
cmp esi, 8
ja case.default.0x404a68
jmp dword [esi*4 + 0x405044]
push 0x418e90
jmp 0x404c11
push 0x4195a8
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push 0x418e08
jmp 0x404c11
push str.Il_sistema_operativo_supporta_USB_2.0_ma_non_sono_state_rilevate_porte_di_questo_tipo._r_n_r_nInstallare_una_scheda_USB_2.0.
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push 0x419518
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.Het_besturingssysteem_biedt_ondersteuning_voor_USB_2.0__maar_er_is_geen_USB_2.0_poort_gevonden._r_n_r_nInstalleer_een_USB_2.0_kaart.
jmp 0x404c11
push 0x418c78
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.El_sistema_operativo_admite_USB_2.0__pero_no_se_detect
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.Your_Operating_System_supports_USB_2.0__but_no_USB_2.0_port_was_found._r_n_r_nPlease_install_a_USB_2.0_card.
jmp 0x404c11
cmp dword [esp + 0x438], 0x5a
jae 0x404ba0
lea eax, [esp + 0x444]
push 0x418c04
push eax
call fcn.00405330
add esp, 8
test eax, eax
jne 0x404ba0
add esi, 0xfffffffe
cmp esi, 8
ja case.default.0x404b15
jmp dword [esi*4 + 0x405068]
push 0x418bc8
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push 0x418b8c
jmp 0x404c11
push 0x418b18
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.Ihr_Betriebssystem_ist_nicht_mit_diesem_Scanner_kompatibel._r_n_r_nBitte_verwenden_Sie_ein_unterst
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.Il_sistema_operativo_in_uso_non
jmp 0x404c11
push 0x4189a8
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.Het_besturingssysteem_is_niet_compatibel_met_deze_scanner._r_n_r_nGebruik_een_ondersteund_besturingssysteem.
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.O_seu_sistema_operacional_n
jmp 0x404c11
push str.El_sistema_operativo_no_es_compatible_con_este_esc
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push str.Your_Operating_System_is_not_compatible_with_this_scanner._r_n_r_nPlease_use_a_supported_Operating_System.
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
add esi, 0xfffffffe
cmp esi, 8
ja case.default.0x404ba8
jmp dword [esi*4 + 0x40508c]
push 0x418790
jmp 0x404c11
push 0x418720
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push 0x418660
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push 0x418588
jmp 0x404c11
push str.Il_sistema_operativo_supporta_solo_USB_1.1_ma_non_sono_state_rilevate_porte_di_questo_tipo._r_n_r_nInstallare_una_scheda_USB._r_n_r_nNOTA:_lo_scanner_pu
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push 0x418408
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.Het_besturingssysteem_biedt_alleen_ondersteuning_voor_USB_1.1__maar_er_is_geen_USB_1.1_poort_gevonden._r_n_r_nInstalleer_een_USB_kaart._r_n_r_nOPMERKING:_Het_is_mogelijk_dat_de_scanner_niet_op_volledige_snelheid_werkt.
jmp 0x404c11
push 0x418260
lea eax, [esp + 0x34]
push eax
jmp 0x404c16
push 0x4181a0
lea ecx, [esp + 0x34]
push ecx
jmp 0x404c16
push str.Your_Operating_System_only_supports_USB_1.1__but_no_USB_1.1_port_was_found._r_n_r_nPlease_install_a_USB_card._r_n_r_nNOTE:_The_scanner_may_not_run_at_full_rated_speed.
lea edx, [esp + 0x34]
push edx
call fcn.00405299
add esp, 8
cmp esi, 8
ja case.default.0x404c27
jmp dword [esi*4 + 0x4050b0]
push 0
push str.USB
lea eax, [esp + 0x38]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push 0x4180e4
lea ecx, [esp + 0x38]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push str.Test_USB
lea edx, [esp + 0x38]
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push str.USB_Test
lea eax, [esp + 0x38]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push str.Test_USB
lea ecx, [esp + 0x38]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push 0x4180c0
lea edx, [esp + 0x38]
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push str.USB_Testen
lea eax, [esp + 0x38]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push str.Teste_da_USB
lea ecx, [esp + 0x38]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push str.Prueba_USB
lea edx, [esp + 0x38]
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push 0x41808c
lea eax, [esp + 0x38]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea ecx, [esp + 0x4c8]
push str._BUTTON
push ecx
call fcn.00405330
add esp, 8
test eax, eax
je 0x404e81
lea eax, [esi - 2]
cmp eax, 8
ja case.default.0x404da7
jmp dword [eax*4 + 0x4050d4]
push 0x418040
jmp 0x404e10
push 0x418000
lea eax, [esp + 0x34]
push eax
jmp 0x404e15
push str.Cette_fonction_est_actuellement_indisponible._r_n_r_nV
lea ecx, [esp + 0x34]
push ecx
jmp 0x404e15
push str.Diese_Funktion_ist_leider_noch_nicht_implementiert._r_n_r_nBitte_pr
jmp 0x404e10
push str.Questa_funzione_non
lea eax, [esp + 0x34]
push eax
jmp 0x404e15
push 0x417e30
lea ecx, [esp + 0x34]
push ecx
jmp 0x404e15
push str.Deze_functie_is_nog_niet_ge
jmp 0x404e10
push str.Este_recurso_ainda_n
lea eax, [esp + 0x34]
push eax
jmp 0x404e15
push str.Esta_funci
lea ecx, [esp + 0x34]
push ecx
jmp 0x404e15
push str.Sorry__this_feature_is_not_yet_implemented._r_n_r_nPlease_check_the_Kodak_website_for_any_updates.
lea edx, [esp + 0x34]
push edx
call fcn.00405299
add esp, 8
lea eax, [esp + 0x4c8]
push str._VERBOSE
push eax
call fcn.00405330
add esp, 8
test eax, eax
je 0x404e5f
lea eax, [esp + 0x30]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404e40
mov ecx, dword [ebp + 0x10]
push ecx
sub eax, edx
lea edx, [esp + eax + 0x34]
push str._r_n_r_n_s
push edx
call fcn.00405299
add esp, 0xc
push 0
push str.Kodak_i30_i40_Scanner
lea eax, [esp + 0x38]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp + 8]
push 0x69
push eax
mov dword [0x430204], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
test eax, eax
mov dword [0x430210], eax
je 0x404ec9
mov ecx, dword [0x430204]
push 0x6a
push ecx
call dword [sym.imp.USER32.dll_LoadAcceleratorsA]
mov esi, eax
test esi, esi
je 0x404ec9
call fcn.00401e40
test eax, eax
je 0x404ec9
mov edx, dword [ebp + 0x14]
push edx
call fcn.004043c0
add esp, 4
test eax, eax
jne 0x404ed4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0
push 0
push 0
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x404f45
mov edi, dword [sym.imp.USER32.dll_TranslateAcceleratorA]
mov ebx, dword [sym.imp.USER32.dll_TranslateMessage]
mov edx, dword [0x43021c]
lea ecx, [esp + 0x14]
push ecx
push esi
push edx
call edi
test eax, eax
jne 0x404f30
mov ecx, dword [0x43021c]
lea eax, [esp + 0x14]
push eax
push ecx
call dword [sym.imp.USER32.dll_IsDialogMessageA]
test eax, eax
jne 0x404f30
lea edx, [esp + 0x14]
push edx
call ebx
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push 0
push 0
push 0
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
jne 0x404ef5
call fcn.00401e80
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x10