Function at 0x409400
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x844
mov eax, dword [0x427178]
xor eax, esp
mov dword [esp + 0x840], eax
push ebx
push esi
push edi
xor eax, eax
mov dword [esp + 0x10], 0
push 0x206
push eax
mov word [esp + 0x30], ax
mov edi, ecx
lea eax, [esp + 0x32]
mov dword [esp + 0x14], 0
push eax
mov dword [esp + 0x20], 0
call fcn.00418440
add esp, 0xc
xor eax, eax
mov word [esp + 0x230], ax
push 0x206
push eax
lea eax, [esp + 0x23a]
push eax
call fcn.00418440
add esp, 0xc
xor eax, eax
mov word [esp + 0x438], ax
push 0x206
push eax
lea eax, [esp + 0x442]
push eax
call fcn.00418440
add esp, 0xc
xor eax, eax
mov word [esp + 0x640], ax
push 0x206
push eax
lea eax, [esp + 0x64a]
push eax
call fcn.00418440
add esp, 0xc
lea eax, [esp + 0x28]
push 0x423f5c
push 0x104
push eax
call fcn.00410465
add esp, 0xc
lea eax, [esp + 0x28]
push str.IJNetworkScannerSelectorEX2Devices
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
lea eax, [esp + 0x44]
push eax
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
jne 0x40963f
mov esi, dword [edi + 4]
cmp esi, dword [edi + 8]
je 0x409635
lea esp, [esp]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x10]
push eax
mov eax, dword [esi]
push 0
push 0xf003f
push 0
push 0
push 0
add eax, 0x34
push eax
push dword [esp + 0x30]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x409629
mov eax, dword [esi]
push 4
add eax, 0xc
push eax
push 4
push 0
push str.Check
push dword [esp + 0x20]
call ebx
mov eax, dword [esi]
push 4
add eax, 0x10
push eax
push 4
push 0
push str.Select
push dword [esp + 0x20]
call ebx
mov ecx, dword [esi]
lea edx, [esp + 0x18]
add ecx, 0x34
call fcn.004033c0
test eax, eax
jne 0x4095a1
mov ecx, dword [esi]
lea edx, [esp + 0x18]
add ecx, 0x34
call fcn.004034c0
test eax, eax
je 0x40961f
movzx eax, word [esp + 0x26]
push eax
movzx eax, word [esp + 0x28]
push eax
movzx eax, word [esp + 0x2a]
push eax
movzx eax, word [esp + 0x2c]
push eax
movzx eax, word [esp + 0x2c]
push eax
movzx eax, word [esp + 0x32]
push eax
movzx eax, word [esp + 0x32]
push eax
movzx eax, word [esp + 0x34]
push eax
push str._04d__02d__02d__d__02d__02d__02d__03d
lea eax, [esp + 0x254]
push 0x104
push eax
call fcn.0040fd8c
add esp, 0x2c
lea eax, [esp + 0x230]
push 0x104
push eax
call fcn.0040f984
add esp, 8
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x234]
push eax
push 1
push 0
push str.LatestAccess
push dword [esp + 0x20]
call ebx
push dword [esp + 0xc]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add esi, 4
cmp esi, dword [edi + 8]
jne 0x409520
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x208
lea eax, [esp + 0x2c]
mov dword [esp + 0x14], 0
push 0
push eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 0
call fcn.00418440
add esp, 0xc
lea eax, [esp + 0x28]
push 0x423f5c
push 0x104
push eax
call fcn.00410465
add esp, 0xc
lea eax, [esp + 0x28]
push str.IJNetworkScannerSelectorEX2Model
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
lea eax, [esp + 0x44]
push eax
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x4097fc
mov esi, dword [edi + 4]
cmp esi, dword [edi + 8]
je 0x4097f2
lea ecx, [ecx]
mov eax, dword [esi]
cmp dword [eax + 0x10], 1
jne 0x4097e6
lea ecx, [esp + 0x14]
add eax, 0x144
push ecx
lea ecx, [esp + 0x10]
push ecx
push 0
push 0xf003f
push 0
push 0
push 0
push eax
push dword [esp + 0x30]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x4097e6
mov eax, dword [esi]
add eax, 0x344
push eax
lea eax, [esp + 0x43c]
push 0x104
push eax
call fcn.00410465
add esp, 0xc
lea eax, [esp + 0x438]
push 0x104
push eax
call fcn.0040f984
add esp, 8
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x43c]
push eax
push 1
push 0
push str.Pull
push dword [esp + 0x20]
call ebx
mov ecx, dword [esi]
movzx eax, byte [ecx + 0x55b]
push eax
movzx eax, byte [ecx + 0x55a]
push eax
movzx eax, byte [ecx + 0x559]
push eax
movzx eax, byte [ecx + 0x558]
push eax
movzx eax, byte [ecx + 0x557]
push eax
movzx eax, byte [ecx + 0x556]
push eax
push str._02X_02X_02X_02X_02X_02X
lea eax, [esp + 0x65c]
push 0x104
push eax
call fcn.0040fd8c
add esp, 0x24
lea eax, [esp + 0x640]
push 0x104
push eax
call fcn.0040f984
add esp, 8
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x644]
push eax
push 1
push 0
push 0x423f1c
push dword [esp + 0x20]
call ebx
push dword [esp + 0xc]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add esi, 4
cmp esi, dword [edi + 8]
jne 0x4096d0
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x84c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040f324
mov esp, ebp
pop ebp
ret