Function at 0x401410
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
sub esp, 0x104
cmp word [0x405879], 0
push ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push ebp
mov ebp, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
push esi
push edi
mov dword [esp + 0x10], 0
je 0x401507
mov ecx, 0x3f
xor eax, eax
mov edi, 0x4831c0
push 0x482868
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x483340
push 0x80000002
stosb byte es:[edi], al
call ebp
mov eax, dword [0x482868]
push 0x482870
push 0x4831c0
push 0x482854
push 0
push 0x40511c
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ecx, dword [0x482868]
push ecx
call ebx
push 0x4831c0
call sub.MSVCRT.dll_atoi
xor edx, edx
add esp, 4
mov dx, word [0x405879]
mov dword [0x48286c], eax
cmp eax, edx
jb 0x401507
push str.SoftError_0x81__
call fcn.00401000
mov eax, dword [0x482864]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
add esp, 4
push 0
push 0x285a
push eax
call esi
mov edi, dword [sym.imp.USER32.dll_EnableWindow]
push eax
call edi
mov ecx, dword [0x482864]
push 0
push 0x3ec
push ecx
call esi
push eax
call edi
mov edx, dword [0x482864]
push 0
push 0x285a
push edx
call dword [sym.imp.USER32.dll_CheckDlgButton]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x104
ret
mov eax, dword [0x482858]
push 0x2000
push 0
push 0
push 0
push 0x70
push eax
call dword [sym.imp.USER32.dll_LoadImageA]
mov ecx, dword [0x482864]
push eax
push 0
push 0x172
push 0x2865
push ecx
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov dword [0x482874], 1
call fcn.00401260
test eax, eax
jne 0x40155a
push str.Set_isp_option_failure.
call fcn.00401000
add esp, 4
mov edi, dword [esp + 0x118]
mov eax, dword [0x405844]
cmp edi, eax
jb 0x401585
push edi
push str.Invalid_device_index__d_
call fcn.00401000
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret
lea esi, [edi + edi*8]
xor edx, edx
shl esi, 3
sub esi, edi
xor eax, eax
add esi, 0x482880
xor ecx, ecx
mov dl, byte [esi + 0x12]
mov al, byte [esi + 0x11]
mov cl, byte [esi + 0x10]
push edx
push eax
xor edx, edx
mov dl, byte [esi + 0xf]
push ecx
xor eax, eax
xor ecx, ecx
mov al, byte [esi + 0xe]
mov cl, byte [esi + 0xd]
push edx
mov edx, dword [esi]
push eax
push ecx
push edx
push str._dISP_DEV:_02X__02X__02X__02X__02X__02X
push 0x4832c0
call sub.MSVCRT.dll_sprintf
push 0x4832c0
push str.__s__begin_download...
call fcn.00401000
mov eax, dword [0x482864]
add esp, 0x2c
push 0
push 0x3ef
push eax
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
mov ecx, dword [0x482864]
push 0
push 0x3ec
push ecx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
mov ecx, dword [0x4830b4]
mov eax, dword [0x483041]
inc ecx
test eax, eax
mov dword [0x4830b4], ecx
je 0x40163d
push 1
lea edx, [esp + 0x14]
push str.CLEAR
push edx
push 0
push edi
call sub.SV00XISPDLL.DLL_SV00x_WriteDataFlash
add esp, 0x14
mov eax, dword [0x40588a]
mov ecx, dword [esi]
push 0
push 0
push 0
push 1
push eax
push 0x40588e
push ecx
call sub.SV00XISPDLL.DLL_SV00x_FlashProgramB
test eax, eax
jne 0x4016ac
push 0x4832c0
push str.__s__download_failure.
call fcn.00401000
mov edx, dword [0x482858]
add esp, 8
push 0x2000
push 0
push 0
push 0
push 0x70
push edx
call dword [sym.imp.USER32.dll_LoadImageA]
push eax
mov eax, dword [0x482864]
push 0
push 0x172
push 0x2865
push eax
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
inc dword [0x4830bc]
jmp 0x4017d3
mov ecx, dword [0x4830b8]
push 0x4832c0
inc ecx
push str.__s__download_succ
mov dword [0x4830b8], ecx
call fcn.00401000
mov ecx, dword [0x482858]
add esp, 8
push 0x2000
push 0
push 0
push 0
push 0x71
push ecx
call dword [sym.imp.USER32.dll_LoadImageA]
mov edx, dword [0x482864]
push eax
push 0
push 0x172
push 0x2865
push edx
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
cmp word [0x405879], 0
je 0x4017d3
mov ecx, 0x3f
xor eax, eax
mov edi, 0x4831c0
push 0x482868
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x483340
push 0x80000002
stosb byte es:[edi], al
call ebp
mov eax, dword [0x482868]
push 0x482870
push 0x4831c0
push 0x482854
push 0
push 0x40511c
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ecx, dword [0x482868]
push ecx
call ebx
push 0x4831c0
call sub.MSVCRT.dll_atoi
mov edx, eax
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x19]
mov byte [esp + 0x18], 0
inc edx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [esp + 0x18]
push 0xa
push eax
push edx
mov dword [0x48286c], edx
call sub.MSVCRT.dll__itoa
add esp, 0x10
push 0x482868
push 0x483340
push 0x80000002
call ebp
lea edi, [esp + 0x14]
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x482868]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
push 1
push eax
push 0x40511c
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [0x482868]
push eax
call ebx
mov ecx, dword [0x482864]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
push 1
push 0x3ef
push ecx
call esi
mov edi, dword [sym.imp.USER32.dll_EnableWindow]
push eax
call edi
mov edx, dword [0x482864]
push 1
push 0x3ec
push edx
call esi
push eax
call edi
mov al, byte [0x405838]
mov ecx, 0x1f
mov byte [esp + 0x14], al
xor eax, eax
lea edi, [esp + 0x15]
mov edx, dword [0x4830b8]
rep stosd dword es:[edi], eax
mov ecx, dword [0x4830bc]
mov dword [0x482874], 0
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [0x4830b4]
push ecx
push edx
push eax
lea ecx, [esp + 0x20]
push str.Dl_Cnt:_d_suc:_d__fal:_d
push ecx
call sub.MSVCRT.dll_sprintf
mov eax, dword [0x482864]
add esp, 0x14
lea edx, [esp + 0x14]
push edx
push 0x285c
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
lea ecx, [esp + 0x14]
push ecx
push 0x40503c
call fcn.00401000
mov eax, dword [0x482878]
add esp, 8
test eax, eax
je 0x40189d
mov edx, dword [0x482864]
push 0
push 0
push 0xf5
push 0x3ef
push edx
call esi
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x104
ret