Function at 0x408ea2
Capabilities:
Get common file path
Query or enumerate registry value
Read .ini file
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45ea5b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x4d4
push esi
push edi
mov dword [ebp - 0x49c], ecx
mov al, byte [0x4796ac]
mov byte [ebp - 0x31c], al
mov ecx, 0x7c
xor eax, eax
lea edi, [ebp - 0x31b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x132
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472264
mov eax, dword [ebp - 0x49c]
add eax, 0xd8
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x154
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472268
mov eax, dword [ebp - 0x49c]
add eax, 0xdc
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x134
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x47226c
mov eax, dword [ebp - 0x49c]
add eax, 0xe0
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x135
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472270
mov eax, dword [ebp - 0x49c]
add eax, 0xe4
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x136
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472274
mov eax, dword [ebp - 0x49c]
add eax, 0xe8
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x137
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472278
mov eax, dword [ebp - 0x49c]
add eax, 0xec
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x138
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x47227c
mov eax, dword [ebp - 0x49c]
add eax, 0xf0
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x139
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472280
mov eax, dword [ebp - 0x49c]
add eax, 0xf4
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x151
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472284
mov eax, dword [ebp - 0x49c]
add eax, 0xf8
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x153
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472288
mov eax, dword [ebp - 0x49c]
add eax, 0xfc
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x16f
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x47228c
mov eax, dword [ebp - 0x49c]
add eax, 0x100
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x170
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472290
mov eax, dword [ebp - 0x49c]
add eax, 0x104
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x171
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472294
mov eax, dword [ebp - 0x49c]
add eax, 0x108
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x13a
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x472298
mov eax, dword [ebp - 0x49c]
add eax, 0x10c
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x130
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x47229c
mov eax, dword [ebp - 0x49c]
add eax, 0x110
push eax
call fcn.0044fdfe
add esp, 0xc
push 0x1f4
lea ecx, [ebp - 0x31c]
push ecx
push 0x131
mov ecx, 0x479934
call fcn.0041c0a1
lea edx, [ebp - 0x31c]
push edx
push 0x4722a0
mov eax, dword [ebp - 0x49c]
add eax, 0x114
push eax
call fcn.0044fdfe
add esp, 0xc
mov dword [ebp - 0x10], 0x4722a4
lea ecx, [ebp - 0x128]
push ecx
push 0x20019
push 0
mov edx, dword [ebp - 0x10]
push edx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x4092d8
push 0x4796b0
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.004552a9
mov dword [ebp - 0x120], 0x104
lea eax, [ebp - 0x120]
push eax
lea ecx, [ebp - 0x11c]
push ecx
push 0
push 0
push 0x4722cc
mov edx, dword [ebp - 0x128]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x409327
push 0x4796b4
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.004552a9
jmp 0x40933f
lea eax, [ebp - 0x11c]
push eax
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.004552a9
mov ecx, dword [ebp - 0x128]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.00402230
test eax, eax
je 0x409578
push 0x4796b8
lea ecx, [ebp - 0x438]
call fcn.0045518e
mov dword [ebp - 4], 0
push 0x4796bc
lea ecx, [ebp - 0x434]
call fcn.0045518e
mov byte [ebp - 4], 1
push 0
push 5
lea edx, [ebp - 0x424]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
je 0x4093b9
lea eax, [ebp - 0x424]
push eax
lea ecx, [ebp - 0x434]
call fcn.004552a9
mov ecx, dword [ebp - 0x49c]
cmp dword [ecx + 0xba0], 0
je 0x409408
mov edx, dword [ebp - 0x434]
push edx
push str._sHWScan00001.jp2
mov eax, dword [ebp - 0x49c]
add eax, 0xc04
push eax
call fcn.0044fdfe
add esp, 0xc
mov ecx, dword [ebp - 0x434]
push ecx
push 0x4722ec
lea edx, [ebp - 0x438]
push edx
call fcn.0044fdfe
add esp, 0xc
jmp 0x409490
mov eax, dword [ebp - 0x49c]
cmp dword [eax + 0xba4], 0
je 0x409455
mov ecx, dword [ebp - 0x434]
push ecx
push str._sHWScan00001.tif
mov edx, dword [ebp - 0x49c]
add edx, 0xc04
push edx
call fcn.0044fdfe
add esp, 0xc
mov eax, dword [ebp - 0x434]
push eax
push 0x472310
lea ecx, [ebp - 0x438]
push ecx
call fcn.0044fdfe
add esp, 0xc
jmp 0x409490
mov edx, dword [ebp - 0x434]
push edx
push 0x472320
mov eax, dword [ebp - 0x49c]
add eax, 0xc04
push eax
call fcn.0044fdfe
add esp, 0xc
mov ecx, dword [ebp - 0x434]
push ecx
push 0x472334
lea edx, [ebp - 0x438]
push edx
call fcn.0044fdfe
add esp, 0xc
lea ecx, [ebp - 0x438]
call fcn.00402270
push eax
mov ecx, 0x479850
call fcn.0041f5d1
lea eax, [ebp - 0x128]
push eax
push 0x20006
push 0
mov ecx, dword [ebp - 0x10]
push ecx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x428], eax
push 0
lea ecx, [ebp - 0x438]
call fcn.004554dc
mov dword [ebp - 0x320], eax
mov edx, dword [ebp - 0x320]
push edx
call fcn.004431c0
add esp, 4
mov dword [ebp - 0x42c], eax
mov eax, dword [ebp - 0x42c]
push eax
mov ecx, dword [ebp - 0x320]
push ecx
push 1
push 0
push 0x472344
mov edx, dword [ebp - 0x128]
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov dword [ebp - 0x430], eax
mov eax, dword [ebp - 0x128]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x124], 1
mov ecx, 0x479910
call fcn.00402270
push eax
push 0x472350
push 0x472354
push 0x472360
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x434]
call fcn.00455120
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x438]
call fcn.00455120
jmp 0x409d2a
mov ecx, 0x479910
call fcn.00402270
push eax
push 0
push 0x472368
push 0x472374
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x43c], 1
lea ecx, [ebp - 0x444]
call fcn.00402210
mov dword [ebp - 4], 2
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
push ecx
lea ecx, [ebp - 0x444]
call fcn.00455259
push 0x2e
lea ecx, [ebp - 0x444]
call fcn.0044fa9b
push eax
lea edx, [ebp - 0x478]
push edx
lea ecx, [ebp - 0x444]
call fcn.0044fa23
mov dword [ebp - 0x4a0], eax
mov eax, dword [ebp - 0x4a0]
mov dword [ebp - 0x4a4], eax
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x4a4]
push ecx
lea ecx, [ebp - 0x444]
call fcn.00455259
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x478]
call fcn.00455120
lea ecx, [ebp - 0x444]
call fcn.00402880
mov dword [ebp - 0x44c], eax
mov dword [ebp - 0x440], 1
jmp 0x409652
mov edx, dword [ebp - 0x440]
add edx, 1
mov dword [ebp - 0x440], edx
cmp dword [ebp - 0x440], 6
jge 0x409721
push 1
lea eax, [ebp - 0x47c]
push eax
lea ecx, [ebp - 0x444]
call fcn.0044f9a7
mov dword [ebp - 0x4a8], eax
mov ecx, dword [ebp - 0x4a8]
mov edx, dword [ecx]
push edx
push 0x47237c
lea eax, [ebp - 0x448]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea ecx, [ebp - 0x47c]
call fcn.00455120
movsx ecx, byte [ebp - 0x448]
cmp ecx, 0x30
jl 0x4096ba
movsx edx, byte [ebp - 0x448]
cmp edx, 0x39
jle 0x4096c6
mov dword [ebp - 0x43c], 0
jmp 0x409721
mov eax, dword [ebp - 0x44c]
sub eax, dword [ebp - 0x440]
push eax
lea ecx, [ebp - 0x480]
push ecx
lea ecx, [ebp - 0x444]
call fcn.0044fa23
mov dword [ebp - 0x4ac], eax
mov edx, dword [ebp - 0x4ac]
mov dword [ebp - 0x4b0], edx
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x4b0]
push eax
lea ecx, [ebp - 0x444]
call fcn.00455259
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x480]
call fcn.00455120
jmp 0x409643
cmp dword [ebp - 0x43c], 0
jne 0x4099c5
cmp dword [ebp - 0x124], 0
je 0x4099c5
lea ecx, [ebp - 0x450]
call fcn.00402210
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.00402880
mov dword [ebp - 0x454], eax
push 0x2e
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.0044fa9b
mov dword [ebp - 0x460], eax
mov ecx, dword [ebp - 0x454]
sub ecx, dword [ebp - 0x460]
sub ecx, 1
push ecx
lea edx, [ebp - 0x484]
push edx
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.0044f9a7
mov dword [ebp - 0x4b4], eax
mov eax, dword [ebp - 0x4b4]
mov dword [ebp - 0x4b8], eax
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x4b8]
push ecx
lea ecx, [ebp - 0x450]
call fcn.00455259
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x484]
call fcn.00455120
mov edx, dword [ebp - 0x460]
push edx
lea eax, [ebp - 0x458]
push eax
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.0044fa23
mov byte [ebp - 4], 7
push 0x472380
lea ecx, [ebp - 0x458]
call fcn.00455488
lea ecx, [ebp - 0x45c]
call fcn.00402210
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x124]
push ecx
push 0x472388
lea edx, [ebp - 0x45c]
push edx
call fcn.0044fdfe
add esp, 0xc
lea ecx, [ebp - 0x458]
call fcn.00402880
mov esi, eax
lea ecx, [ebp - 0x45c]
call fcn.00402880
sub esi, eax
push esi
lea eax, [ebp - 0x488]
push eax
lea ecx, [ebp - 0x458]
call fcn.0044fa23
mov dword [ebp - 0x4bc], eax
mov ecx, dword [ebp - 0x4bc]
mov dword [ebp - 0x4c0], ecx
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0x4c0]
push edx
lea ecx, [ebp - 0x458]
call fcn.00455259
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x488]
call fcn.00455120
push 0x47238c
lea ecx, [ebp - 0x450]
call fcn.00402280
test eax, eax
jne 0x4098db
mov eax, dword [ebp - 0x124]
push eax
mov ecx, dword [ebp - 0x458]
push ecx
push 0x472390
mov edx, dword [ebp - 0x49c]
add edx, 0xc04
push edx
call fcn.0044fdfe
add esp, 0x10
jmp 0x409993
push 0x47239c
lea ecx, [ebp - 0x450]
call fcn.00402280
test eax, eax
jne 0x409919
mov eax, dword [ebp - 0x124]
push eax
mov ecx, dword [ebp - 0x458]
push ecx
push 0x4723a0
mov edx, dword [ebp - 0x49c]
add edx, 0xc04
push edx
call fcn.0044fdfe
add esp, 0x10
jmp 0x409993
push 0x4723ac
lea ecx, [ebp - 0x450]
call fcn.00402280
test eax, eax
jne 0x409957
mov eax, dword [ebp - 0x124]
push eax
mov ecx, dword [ebp - 0x458]
push ecx
push 0x4723b0
mov edx, dword [ebp - 0x49c]
add edx, 0xc04
push edx
call fcn.0044fdfe
add esp, 0x10
jmp 0x409993
push 0x4723bc
lea ecx, [ebp - 0x450]
call fcn.00402280
test eax, eax
jne 0x409993
mov eax, dword [ebp - 0x124]
push eax
mov ecx, dword [ebp - 0x458]
push ecx
push 0x4723c0
mov edx, dword [ebp - 0x49c]
add edx, 0xc04
push edx
call fcn.0044fdfe
add esp, 0x10
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x45c]
call fcn.00455120
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x458]
call fcn.00455120
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x450]
call fcn.00455120
jmp 0x409d18
cmp dword [ebp - 0x43c], 0
je 0x409d18
cmp dword [ebp - 0x124], 0
je 0x409d18
lea ecx, [ebp - 0x464]
call fcn.00402210
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.00402880
mov dword [ebp - 0x468], eax
push 0x2e
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.0044fa9b
mov dword [ebp - 0x474], eax
mov eax, dword [ebp - 0x468]
sub eax, dword [ebp - 0x474]
sub eax, 1
push eax
lea ecx, [ebp - 0x48c]
push ecx
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.0044f9a7
mov dword [ebp - 0x4c4], eax
mov edx, dword [ebp - 0x4c4]
mov dword [ebp - 0x4c8], edx
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x4c8]
push eax
lea ecx, [ebp - 0x464]
call fcn.00455259
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x48c]
call fcn.00455120
lea ecx, [ebp - 0x46c]
call fcn.00402210
mov byte [ebp - 4], 0xc
push 0x4723cc
lea ecx, [ebp - 0x464]
call fcn.00402280
test eax, eax
jne 0x409afb
mov ecx, dword [ebp - 0x474]
sub ecx, 5
push ecx
lea edx, [ebp - 0x490]
push edx
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.0044fa23
mov dword [ebp - 0x4cc], eax
mov eax, dword [ebp - 0x4cc]
mov dword [ebp - 0x4d0], eax
mov byte [ebp - 4], 0xd
mov ecx, dword [ebp - 0x4d0]
push ecx
lea ecx, [ebp - 0x46c]
call fcn.00455259
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x490]
call fcn.00455120
jmp 0x409b54
mov edx, dword [ebp - 0x474]
sub edx, 5
push edx
lea eax, [ebp - 0x494]
push eax
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
call fcn.0044fa23
mov dword [ebp - 0x4d4], eax
mov ecx, dword [ebp - 0x4d4]
mov dword [ebp - 0x4d8], ecx
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x4d8]
push edx
lea ecx, [ebp - 0x46c]
call fcn.00455259
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x494]
call fcn.00455120
push 0x4723d0
lea ecx, [ebp - 0x46c]
call fcn.00455488
lea ecx, [ebp - 0x470]
call fcn.00402210
mov byte [ebp - 4], 0xf
mov eax, dword [ebp - 0x124]
push eax
push 0x4723d8
lea ecx, [ebp - 0x470]
push ecx
call fcn.0044fdfe
add esp, 0xc
lea ecx, [ebp - 0x46c]
call fcn.00402880
mov esi, eax
lea ecx, [ebp - 0x470]
call fcn.00402880
sub esi, eax
push esi
lea edx, [ebp - 0x498]
push edx
lea ecx, [ebp - 0x46c]
call fcn.0044fa23
mov dword [ebp - 0x4dc], eax
mov eax, dword [ebp - 0x4dc]
mov dword [ebp - 0x4e0], eax
mov byte [ebp - 4], 0x10
mov ecx, dword [ebp - 0x4e0]
push ecx
lea ecx, [ebp - 0x46c]
call fcn.00455259
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x498]
call fcn.00455120
push 0x4723dc
lea ecx, [ebp - 0x464]
call fcn.00402280
test eax, eax
jne 0x409c33
mov edx, dword [ebp - 0x124]
push edx
mov eax, dword [ebp - 0x46c]
push eax
push 0x4723e0
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
push ecx
call fcn.0044fdfe
add esp, 0x10
jmp 0x409ceb
push 0x4723ec
lea ecx, [ebp - 0x464]
call fcn.00402280
test eax, eax
jne 0x409c71
mov edx, dword [ebp - 0x124]
push edx
mov eax, dword [ebp - 0x46c]
push eax
push 0x4723f0
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
push ecx
call fcn.0044fdfe
add esp, 0x10
jmp 0x409ceb
push 0x4723fc
lea ecx, [ebp - 0x464]
call fcn.00402280
test eax, eax
jne 0x409caf
mov edx, dword [ebp - 0x124]
push edx
mov eax, dword [ebp - 0x46c]
push eax
push 0x472400
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
push ecx
call fcn.0044fdfe
add esp, 0x10
jmp 0x409ceb
push 0x47240c
lea ecx, [ebp - 0x464]
call fcn.00402280
test eax, eax
jne 0x409ceb
mov edx, dword [ebp - 0x124]
push edx
mov eax, dword [ebp - 0x46c]
push eax
push 0x472410
mov ecx, dword [ebp - 0x49c]
add ecx, 0xc04
push ecx
call fcn.0044fdfe
add esp, 0x10
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x470]
call fcn.00455120
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x46c]
call fcn.00455120
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x464]
call fcn.00455120
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x444]
call fcn.00455120
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret