Function at 0x415a40
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x436a57
mov eax, dword fs:[0]
push eax
mov eax, 0x22b0
call fcn.004350b0
mov eax, dword [0x453358]
xor eax, esp
mov dword [esp + 0x22ac], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x453358]
xor eax, esp
push eax
lea eax, [esp + 0x22c4]
mov dword fs:[0], eax
mov esi, dword [esp + 0x22d4]
mov ebx, ecx
xor edi, edi
cmp dword [ebx + 0x1c], edi
je 0x415b3a
push esi
lea ecx, [esp + 0x1c]
call fcn.00409f80
mov eax, dword [0x4444f4]
mov dword [esp + 0x22cc], edi
mov dword [esp + 0x14], eax
mov ebp, dword [esp + 0x18]
push ebp
lea ecx, [esp + 0x18]
push str.Q360InstallerProduct__s
push ecx
mov byte [esp + 0x22d8], 1
call fcn.00409ff0
lea edx, [esp + 0x20]
push edx
call fcn.0040e160
add esp, 0x10
test eax, eax
je 0x415b41
cmp dword [esp + 0x22d8], 2
jne 0x415aed
mov ecx, dword [ebx + 0x1c]
push edi
call fcn.004309f0
mov eax, dword [esp + 0x14]
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
lea ecx, [eax - 0xc]
cmp ecx, dword [0x4444f0]
je 0x415b1c
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x415b1c
mov edx, dword [esp + 0x14]
add edx, 0xfffffff4
push edx
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
lea eax, [ebp - 0xc]
cmp eax, dword [0x4444f0]
je 0x415b3a
lea esi, [ebp - 0xc]
push esi
call edi
test eax, eax
jg 0x415b3a
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
xor eax, eax
jmp 0x415f21
push 0x2000
lea ecx, [esp + 0x2c4]
push edi
push ecx
call sub.MSVCR90.dll_memset
mov eax, dword [ebx]
add esp, 0xc
lea edx, [esp + 0x2c0]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], 0x1000
mov dword [esp + 0x2c], edi
cmp eax, edi
je 0x415c69
cmp esi, edi
je 0x415c69
push str.TargetDir
lea ecx, [esp + 0x28]
call fcn.00410820
push eax
lea ecx, [esp + 0x20]
call fcn.00409f80
lea ecx, [esp + 0x38]
mov byte [esp + 0x22cc], 2
call fcn.004123c0
push str.Version
lea ecx, [esp + 0x28]
mov byte [esp + 0x22d0], 3
call fcn.00410820
push eax
lea ecx, [esp + 0x54]
call fcn.00409560
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, ebx
call fcn.00414240
cmp dword [esp + 0xd0], edi
jne 0x415c29
mov ecx, dword [ebx + 0x1c]
call fcn.00430fa0
mov edx, dword [esp + 0x1c]
mov eax, dword [eax]
push edx
push eax
lea ecx, [esp + 0x64]
push str._s_s
push ecx
call fcn.00409ff0
add esp, 0x10
cmp dword [esp + 0x22d8], 2
jne 0x415c9e
mov ecx, dword [ebx + 0x1c]
call fcn.00430c20
test eax, eax
je 0x415c9e
jmp 0x415c95
cmp dword [esp + 0x22dc], edi
je 0x415c82
mov eax, dword [esp + 0x22d8]
cmp eax, 2
je 0x415c95
cmp eax, edi
jne 0x415c9e
lea ecx, [esp + 0x38]
call fcn.00410b30
test eax, eax
je 0x415c9e
lea ecx, [esp + 0x38]
mov byte [esp + 0x22cc], 2
call fcn.00412570
lea ecx, [esp + 0x1c]
call fcn.00410b70
lea ecx, [esp + 0x14]
call fcn.00410b70
lea ecx, [esp + 0x18]
call fcn.00410b70
xor eax, eax
jmp 0x415f21
push 0x43a1d4
lea edx, [esp + 0x58]
push edx
call fcn.00410a70
test al, al
jne 0x415c4f
mov ecx, dword [ebx + 0x1c]
push edi
call fcn.004309f0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
push eax
push edi
push str.SaveToTemp
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
dec eax
neg eax
sbb eax, eax
inc eax
push esi
lea ecx, [esp + 0x3c]
mov dword [esp + 0xec], eax
call fcn.00409560
mov edx, dword [esp + 0x22d8]
push edx
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, ebx
call fcn.00414ab0
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x28]
push eax
mov ecx, ebx
call fcn.00411300
mov ecx, dword [0x4444f4]
mov dword [esp + 0x20], ecx
mov esi, dword [esp + 0x30]
mov byte [esp + 0x22cc], 4
mov edi, 1
push edi
lea edx, [esp + 0x134]
push str.Description_d
push edx
call fcn.00407f00
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
add esp, 0xc
push eax
push ecx
mov ecx, dword [esp + 0x30]
push esi
push edx
lea eax, [esp + 0x140]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
movzx eax, word [esi]
neg eax
sbb eax, eax
and eax, esi
push eax
lea ecx, [esp + 0x24]
call fcn.00409560
mov ebp, dword [esp + 0x20]
cmp dword [ebp - 8], 0
je 0x415d7d
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0xac]
call fcn.004138c0
inc edi
cmp edi, 0x64
jl 0x415d10
mov eax, dword [esp + 0x58]
cmp dword [eax - 8], 0
jne 0x415e4d
mov ecx, dword [esp + 0x94]
cmp dword [ecx - 8], 0
jne 0x415e4d
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
lea edx, [ebp - 0xc]
cmp edx, dword [0x4444f0]
je 0x415dc0
lea esi, [ebp - 0xc]
push esi
call edi
test eax, eax
jg 0x415dc0
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
lea ecx, [esp + 0x38]
mov byte [esp + 0x22cc], 2
call fcn.00412570
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 0xc]
cmp ecx, dword [0x4444f0]
je 0x415df3
lea esi, [eax - 0xc]
push esi
call edi
test eax, eax
jg 0x415df3
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x14]
lea edx, [eax - 0xc]
cmp edx, dword [0x4444f0]
je 0x415e1c
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x415e1c
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x18]
lea ecx, [eax - 0xc]
cmp ecx, dword [0x4444f0]
je 0x415b3a
lea esi, [eax - 0xc]
push esi
call edi
test eax, eax
jg 0x415b3a
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
xor eax, eax
jmp 0x415f21
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x104]
call fcn.00409500
mov ecx, dword [esp + 0x22d8]
lea eax, [esp + 0x38]
push eax
push ecx
mov ecx, dword [ebx + 0x1c]
call fcn.00430830
mov ecx, eax
call fcn.00415990
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
lea edx, [ebp - 0xc]
cmp edx, dword [0x4444f0]
je 0x415e9e
lea esi, [ebp - 0xc]
push esi
call edi
test eax, eax
jg 0x415e9e
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
lea ecx, [esp + 0x38]
mov byte [esp + 0x22cc], 2
call fcn.00412570
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 0xc]
cmp ecx, dword [0x4444f0]
je 0x415ed1
lea esi, [eax - 0xc]
push esi
call edi
test eax, eax
jg 0x415ed1
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x14]
lea edx, [eax - 0xc]
cmp edx, dword [0x4444f0]
je 0x415efa
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x415efa
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x18]
lea ecx, [eax - 0xc]
cmp ecx, dword [0x4444f0]
je 0x415f1c
lea esi, [eax - 0xc]
push esi
call edi
test eax, eax
jg 0x415f1c
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, 1
mov ecx, dword [esp + 0x22c4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x22ac]
xor ecx, esp
call fcn.00434fc4
add esp, 0x22bc
ret 0xc