Function at 0x415490
Capabilities:
Set registry value
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4bf0b7
mov eax, dword fs:[0]
push eax
sub esp, 0x280
mov eax, dword [0x5116c0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x26c], edi
push dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push eax
mov dword [ebp - 0x274], eax
mov dword [ebp - 0x270], 0
call fcn.00415ac0
mov ebx, eax
mov dword [ebp - 0x27c], ebx
test ebx, ebx
je 0x415a9b
mov eax, dword [edi + 0x20]
test eax, eax
je 0x4156ed
cmp eax, dword [edi + 0x10]
jne 0x415522
mov eax, dword [edi + 0x24]
test eax, eax
je 0x41550e
cmp eax, dword [edi + 0x14]
jne 0x415522
mov eax, dword [edi + 0x28]
test eax, eax
je 0x4156ed
cmp eax, dword [edi + 0x18]
je 0x4156ed
lea ecx, [ebp - 0x264]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__18]
lea ecx, [ebp - 0x278]
mov dword [ebp - 4], 0
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__18]
push 0x698e
lea ecx, [ebp - 0x264]
mov byte [ebp - 4], 1
call dword [sym.imp.mfc140u.dll_ATL::CStringT_char_StrTraitMFC_DLL_char_ATL::ChTraitsCRT_char__5]
push 0x698f
lea ecx, [ebp - 0x278]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_char_StrTraitMFC_DLL_char_ATL::ChTraitsCRT_char__5]
lea eax, [ebp - 0x27c]
mov ecx, edi
push eax
call fcn.0040d2a0
mov ebx, eax
lea eax, [ebp - 0x280]
mov byte [ebp - 4], 2
push eax
mov ecx, edi
call fcn.0040d2a0
mov edi, eax
mov eax, dword [ebp - 0x26c]
lea ecx, [ebp - 0x284]
mov byte [ebp - 4], 3
push dword [eax + 0x2c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_char_StrTraitMFC_DLL_char_ATL::ChTraitsCRT_char__8]
mov esi, eax
lea ecx, [ebp - 0x264]
mov byte [ebp - 4], 5
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__21]
push eax
lea ecx, [ebp - 0x268]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
mov eax, dword [ebp - 0x264]
push 2
push 0x4e067c
mov dword [ebp - 0x270], 1
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x268]
push eax
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_char_1_::Concatenate]
add esp, 0x14
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 6
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__21]
push eax
lea ecx, [ebp - 0x274]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
mov eax, dword [ebp - 0x278]
mov dword [ebp - 0x270], 3
push dword [eax - 0xc]
push eax
mov eax, dword [ebp - 0x268]
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x274]
push eax
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_char_1_::Concatenate]
push dword [ebx]
mov eax, dword [ebp - 0x26c]
push dword [edi]
push dword [esi]
push dword [eax + 0x18]
push dword [eax + 0x14]
push dword [eax + 0x10]
lea eax, [ebp - 0x260]
push dword [ebp - 0x274]
push eax
call fcn.0040eb90
add esp, 0x34
lea ecx, [ebp - 0x274]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
lea ecx, [ebp - 0x268]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
lea ecx, [ebp - 0x284]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
lea ecx, [ebp - 0x280]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
lea ecx, [ebp - 0x27c]
mov byte [ebp - 4], 1
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
lea eax, [ebp - 0x260]
push eax
lea ecx, [ebp - 0x27c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__3]
push 0
push 0
push dword [eax]
mov byte [ebp - 4], 7
call sub.mfc140u.dll_AfxMessageBox_1
lea ecx, [ebp - 0x27c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x278]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
lea ecx, [ebp - 0x264]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
xor eax, eax
jmp 0x415a9b
cmp dword [0x511668], 0
jne 0x415779
lea eax, [ebp - 0x26c]
mov ecx, edi
push eax
call fcn.00412e60
mov ecx, dword [ebp - 0x26c]
lea edx, [ebp - 0x60]
sub edx, ecx
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x415713
lea ecx, [ebp - 0x60]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415726
sub ecx, edx
lea eax, [ebp - 0x60]
lea esi, [ebp + ecx - 0x61]
cmp esi, eax
jbe 0x41575b
mov ebx, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isdigit]
movsx eax, byte [esi]
push eax
call ebx
add esp, 4
test eax, eax
je 0x415755
dec esi
lea eax, [ebp - 0x60]
cmp esi, eax
ja 0x415740
mov ebx, dword [ebp - 0x27c]
push 0xa
inc esi
push 0
push esi
call dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_strtoul]
add esp, 0xc
mov byte [esi], 0
lea ecx, [ebp - 0x26c]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
cmp dword [ebp + 0x10], 0
je 0x415a99
lea ecx, [ebp - 0x264]
mov dword [ebp - 0x270], 0
call dword [sym.imp.mfc140u.dll_Ordinal_296]
push 0x6978
lea ecx, [ebp - 0x264]
mov dword [ebp - 4], 8
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__23]
lea ecx, [ebp - 0x264]
call dword [sym.imp.mfc140u.dll_Ordinal_5921]
push eax
push 0x4df37c
lea ecx, [ebp - 0x26c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__27]
push dword [ebp - 0x26c]
lea ecx, [ebp - 0x264]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__25]
lea ecx, [ebp - 0x26c]
mov esi, eax
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
test esi, esi
jne 0x4157ff
lea ecx, [ebp - 0x264]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::Empty]
cmp dword [ebp + 0x18], 0
jne 0x4159de
call fcn.0040d3c0
test eax, eax
jne 0x4159de
push 0x4d4dfc
lea ecx, [ebp - 0x284]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__3]
push str.Software_
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 9
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__3]
lea eax, [edi + 0x84]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x26c]
push eax
lea eax, [ebp - 0x288]
push eax
call fcn.004019e2
lea ecx, [ebp - 0x284]
mov byte [ebp - 4], 0xb
push ecx
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004019e2
lea ecx, [edi + 0x2c]
mov byte [ebp - 4], 0xc
push ecx
push eax
lea eax, [ebp - 0x278]
push eax
call fcn.004019e2
add esp, 0x24
lea ecx, [ebp - 0x27c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x288]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x26c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x284]
mov byte [ebp - 4], 0x11
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
push 0
lea eax, [ebp - 0x268]
mov dword [ebp - 0x268], 0
push eax
push 0
push 0x2001f
push 0
push 0
push 0
push dword [ebp - 0x278]
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x41594e
lea eax, [ebp - 0x264]
push eax
lea eax, [ebp - 0x270]
push 0x4df380
push eax
call fcn.00402461
mov esi, dword [ebp - 0x274]
add esp, 0xc
push dword [ebp + 0xc]
push esi
push 3
push 0
push dword [eax]
push dword [ebp - 0x268]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea ecx, [ebp - 0x270]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
push dword [ebp - 0x268]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x270], 1
jmp 0x415954
mov esi, dword [ebp - 0x274]
push 0
lea eax, [ebp - 0x268]
push eax
push 0
push 0x2001f
push 0
push 0
push 0
push dword [ebp - 0x278]
push SysStringLen
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x4159d2
lea eax, [ebp - 0x264]
push eax
lea eax, [ebp - 0x28c]
push 0x4df380
push eax
call fcn.00402461
add esp, 0xc
push dword [ebp + 0xc]
push esi
push 3
push 0
push dword [eax]
push dword [ebp - 0x268]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea ecx, [ebp - 0x28c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
push dword [ebp - 0x268]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x270], 1
lea ecx, [ebp - 0x278]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x280]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
cmp dword [edi + 0x248], 0
lea eax, [edi + 0xb0]
mov byte [ebp - 4], 0x12
jne 0x415a03
lea eax, [edi + 0xac]
push eax
lea ecx, [ebp - 0x280]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__26]
push 0x4e0680
push dword [ebp - 0x280]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll__wfopen]
mov esi, eax
add esp, 8
test esi, esi
je 0x415a48
push esi
push dword [ebp + 0xc]
push 1
push dword [ebp - 0x274]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push esi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
jmp 0x415a51
cmp dword [ebp - 0x270], 0
je 0x415a73
cmp dword [ebp + 0x18], 0
jne 0x415a81
mov eax, dword [edi + 0x25c]
test eax, eax
je 0x415a68
push 0
call eax
add esp, 4
push 0xffffffffffffffff
push 0
push 0x6987
jmp 0x415a7c
push 0xffffffffffffffff
push 0
push 0xa90
call sub.mfc140u.dll_AfxMessageBox
lea ecx, [ebp - 0x280]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x264]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00418035
mov esp, ebp
pop ebp
ret 0x14