Function at 0x4057c0
Capabilities:
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x522ffb
mov eax, dword fs:[0]
push eax
sub esp, 0x234
mov eax, dword [0x57cf60]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, dword [ebp + 8]
xor ebx, ebx
push ebx
mov dword [ebp - 0x190], ecx
mov dword [ebp - 0x138], edi
call dword [sym.imp.ole32.dll_CoInitialize]
lea eax, [ebp - 0x118]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
call fcn.00416072
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x405835
push 0x80004005
call fcn.00401350
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x12c], eax
mov ecx, dword [str.updatePatch.pk2]
push ecx
lea edx, [ebp - 0x118]
push edx
lea eax, [ebp - 0x12c]
push str._s_s
push eax
mov dword [ebp - 4], ebx
call fcn.00404800
mov esi, dword [ebp - 0x12c]
mov ecx, dword [0x577088]
mov edx, dword [str.137]
push esi
push ecx
push edx
call fcn.004053a0
add esp, 0x1c
test al, al
jne 0x4058c8
mov eax, dword [ebp + 0xc]
push eax
push str.Installation_fails__turn_off_the_game_or_restart_the_computer__and_try_again.
push edi
call fcn.00507d50
add esp, 0xc
lea eax, [esi - 0x10]
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4067a4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4067a4
mov edi, dword [sym.imp.ole32.dll_CoCreateInstance]
lea ecx, [ebp - 0x144]
push ecx
push 0x5326d4
push 0x17
push ebx
push 0x5328c0
mov dword [ebp - 0x11c], ebx
call edi
mov esi, eax
cmp esi, ebx
jl 0x405930
mov edx, dword [ebp - 0x144]
push edx
call dword [sym.imp.ole32.dll_OleRun]
mov esi, eax
cmp esi, ebx
jl 0x40591e
mov eax, dword [ebp - 0x144]
mov ecx, dword [eax]
lea edx, [ebp - 0x11c]
push edx
push 0x531f90
push eax
mov eax, dword [ecx]
call eax
mov esi, eax
mov eax, dword [ebp - 0x144]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp esi, ebx
jge 0x405948
mov dword [ebp - 0x11c], ebx
cmp esi, ebx
jge 0x405948
cmp esi, 0x80004002
je 0x405948
push esi
call fcn.00521700
mov eax, dword [ebp - 0x11c]
mov byte [ebp - 4], 2
cmp eax, ebx
je 0x40595e
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [ebp - 0x128]
push eax
push 0x5326d4
push 0x17
push ebx
push 0x5328c0
call edi
mov esi, eax
cmp esi, ebx
jl 0x4059ba
mov ecx, dword [ebp - 0x128]
push ecx
call dword [sym.imp.ole32.dll_OleRun]
mov esi, eax
cmp esi, ebx
jl 0x4059a8
mov eax, dword [ebp - 0x128]
mov edx, dword [eax]
mov edx, dword [edx]
lea ecx, [ebp - 0x11c]
push ecx
push 0x531f90
push eax
call edx
mov esi, eax
mov eax, dword [ebp - 0x128]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp esi, ebx
jge 0x4059c0
mov dword [ebp - 0x11c], ebx
call fcn.00416072
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4059da
push 0x80004005
call fcn.00401350
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x130], eax
mov edi, dword [ebp - 0x12c]
push edi
lea ecx, [ebp - 0x130]
push str.ProviderMicrosoft.Jet.OLEDB.4.0_Data_Source_s
push ecx
mov byte [ebp - 4], 3
call fcn.00404800
add esp, 0xc
cmp esi, ebx
jl 0x4067f5
push ebx
push ecx
mov ecx, esp
mov dword [ebp - 0x160], esp
push 0x531f6f
call fcn.004028b0
push ecx
mov ecx, esp
mov dword [ebp - 0x158], esp
push 0x531f6f
mov byte [ebp - 4], 4
call fcn.004028b0
mov esi, dword [ebp - 0x130]
mov ebx, dword [esi - 0xc]
push 0
push 0
push ebx
push esi
push 0
push 3
mov byte [ebp - 4], 5
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push eax
push 0
mov dword [ebp - 0x13c], eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov edi, eax
test edi, edi
je 0x405aab
mov edx, dword [ebp - 0x13c]
push edx
push edi
push ebx
push esi
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push ecx
mov ecx, esp
mov dword [ebp - 0x15c], esp
push edi
call fcn.00402940
mov ecx, dword [ebp - 0x11c]
mov byte [ebp - 4], 6
test ecx, ecx
jne 0x405ab0
push 0x80004003
call fcn.00521700
call fcn.00401a60
mov byte [ebp - 4], 3
call fcn.00404580
add esi, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x405ad9
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov dword [ebp - 4], 1
mov dword [ebp - 0x124], 0
push 0x17
push 0
push 0x532880
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 9
call fcn.00402eb0
mov eax, dword [ebp - 0x11c]
mov ecx, 9
mov word [ebp - 0x1c0], cx
mov dword [ebp - 0x1b8], eax
test eax, eax
je 0x405b26
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, 8
push 0x532838
mov byte [ebp - 4], 0xa
mov word [ebp - 0x154], cx
call fcn.005217a0
mov dword [ebp - 0x14c], eax
mov ecx, dword [ebp - 0x124]
mov byte [ebp - 4], 0xb
test ecx, ecx
jne 0x405b5e
push 0x80004003
call fcn.00521700
push 1
push 3
push 2
lea edx, [ebp - 0x1c0]
push edx
lea eax, [ebp - 0x154]
push eax
call fcn.00401880
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea ecx, [ebp - 0x154]
push ecx
call esi
lea edx, [ebp - 0x1c0]
push edx
call esi
lea eax, [ebp - 0x174]
push eax
mov dword [ebp - 4], 8
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov byte [ebp - 4], 0xd
call fcn.00416072
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405bc1
push 0x80004005
call fcn.00401350
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x128], eax
mov byte [ebp - 4], 0xe
call fcn.00416072
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405bf1
push 0x80004005
call fcn.00401350
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x130], edi
mov byte [ebp - 4], 0xf
call fcn.00416072
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405c21
push 0x80004005
call fcn.00401350
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x134], eax
mov byte [ebp - 4], 0x10
call fcn.00416072
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405c51
push 0x80004005
call fcn.00401350
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x13c], ebx
fld1
mov eax, dword [ebp - 0x124]
fstp qword [ebp - 0x17c]
mov byte [ebp - 4], 0x12
test eax, eax
jne 0x405c83
push 0x80004003
call fcn.00521700
mov ecx, dword [eax]
lea edx, [ebp - 0x120]
push edx
mov esi, eax
push eax
mov eax, dword [ecx + 0x34]
mov dword [ebp - 0x120], 0
call eax
test eax, eax
jns 0x405cae
push 0x5322bc
push esi
push eax
call fcn.00521720
cmp word [ebp - 0x120], 0
jne 0x406648
mov eax, dword [ebp - 0x124]
test eax, eax
jne 0x405cd0
push 0x80004003
call fcn.00521700
mov ecx, dword [eax]
mov edx, dword [ecx + 0x98]
push eax
mov esi, eax
call edx
test eax, eax
jns 0x405ced
push 0x5322bc
push esi
push eax
call fcn.00521720
xor esi, esi
mov dword [ebp - 0x120], esi
lea eax, [ebp - 0x1a0]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
push 1
lea ecx, [ebp - 0x1a0]
push ecx
push ecx
mov ecx, esp
mov dword [ebp - 0x160], esp
mov bl, 0x14
push str.SELECT_Count___FROM_PK2Data
mov byte [ebp - 4], bl
call fcn.004028b0
mov ecx, dword [ebp - 0x11c]
mov byte [ebp - 4], 0x15
test ecx, ecx
jne 0x405d3b
push 0x80004003
call fcn.00521700
lea edx, [ebp - 0x140]
push edx
mov byte [ebp - 4], bl
call fcn.004044b0
mov eax, dword [eax]
test eax, eax
je 0x405d60
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
mov esi, eax
push eax
mov dword [ebp - 0x120], esi
call edx
mov eax, dword [ebp - 0x140]
test eax, eax
je 0x405d72
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, 3
mov word [ebp - 0x154], ax
mov dword [ebp - 0x14c], 0
mov bl, 0x16
mov byte [ebp - 4], bl
test esi, esi
jne 0x405d9b
push 0x80004003
call fcn.00521700
lea ecx, [ebp - 0x154]
push ecx
lea edx, [ebp - 0x1b0]
push edx
mov ecx, esi
call fcn.00401900
mov ecx, eax
mov byte [ebp - 4], 0x17
call fcn.004029f0
fstp qword [ebp - 0x1b8]
lea eax, [ebp - 0x1b0]
push eax
mov byte [ebp - 4], bl
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov ecx, dword [esi]
mov edx, dword [ecx + 0x80]
push esi
call edx
xor ebx, ebx
cmp eax, ebx
jge 0x405dee
push 0x5322bc
push esi
push eax
call fcn.00521720
lea eax, [ebp - 0x154]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea ecx, [ebp - 0x1a0]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov edx, dword [esi]
mov eax, dword [edx + 8]
push esi
mov byte [ebp - 4], 0x12
call eax
mov eax, dword [ebp - 0x124]
cmp eax, ebx
jne 0x405e28
push 0x80004003
call fcn.00521700
mov ecx, dword [eax]
lea edx, [ebp - 0x120]
push edx
mov esi, eax
push eax
mov eax, dword [ecx + 0x50]
mov dword [ebp - 0x120], ebx
call eax
cmp eax, ebx
jge 0x405e4f
push 0x5322bc
push esi
push eax
call fcn.00521720
cmp word [ebp - 0x120], bx
jne 0x406495
mov ecx, 8
push 0x532804
mov word [ebp - 0x1d0], cx
call fcn.005217a0
mov dword [ebp - 0x1c8], eax
mov ecx, dword [ebp - 0x124]
mov byte [ebp - 4], 0x18
cmp ecx, ebx
jne 0x405e90
push 0x80004003
call fcn.00521700
lea edx, [ebp - 0x1d0]
push edx
lea eax, [ebp - 0x210]
push eax
call fcn.00401900
push eax
lea ecx, [ebp - 0x174]
push ecx
mov byte [ebp - 4], 0x19
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
cmp eax, ebx
jge 0x405ebf
push eax
call fcn.00521700
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea edx, [ebp - 0x210]
push edx
call esi
lea eax, [ebp - 0x1d0]
push eax
mov byte [ebp - 4], 0x12
call esi
cmp word [ebp - 0x174], 1
je 0x405f4c
lea ecx, [ebp - 0x174]
push ecx
lea ecx, [ebp - 0x140]
call fcn.00404400
mov esi, dword [eax]
mov byte [ebp - 4], 0x1a
cmp esi, ebx
je 0x405f1c
cmp dword [esi + 4], ebx
jne 0x405f11
mov edx, dword [esi]
push edx
call fcn.00521920
mov dword [esi + 4], eax
mov esi, dword [esi + 4]
cmp esi, ebx
jne 0x405f22
xor eax, eax
jmp 0x405f30
xor esi, esi
xor eax, eax
jmp 0x405f30
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405f27
sub eax, edx
push eax
push esi
lea ecx, [ebp - 0x128]
call fcn.00403c50
lea ecx, [ebp - 0x140]
mov byte [ebp - 4], 0x12
call fcn.004042b0
mov esi, dword [ebp - 0x128]
xor eax, eax
cmp esi, ebx
setne al
cmp eax, ebx
jne 0x405f67
push 0x80004005
call fcn.00401350
push esi
push edi
call fcn.0050683a
add esp, 8
cmp eax, ebx
setne al
test al, al
je 0x4060b1
mov ecx, 0x57e740
call fcn.004076b0
test al, al
je 0x405f96
mov ecx, 0x57e740
call fcn.004073e0
push str.2009
push esi
mov ecx, 0x57e740
call fcn.00407440
test al, al
jne 0x4060b1
push str.169841
push esi
mov ecx, 0x57e740
call fcn.00407440
test al, al
jne 0x4060b1
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x138]
push eax
push str.Installation_fails__turn_off_the_game_or_restart_the_computer__and_try_again.
push ecx
call fcn.00507d50
mov eax, dword [ebp - 0x13c]
add eax, 0xfffffff0
add esp, 0xc
mov byte [ebp - 4], 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406004
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x134]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40602a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 0xe
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40604a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40606a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x174]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x124]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x40608d
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov eax, dword [ebp - 0x11c]
cmp eax, ebx
mov byte [ebp - 4], 0
je 0x4060a3
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [ebp - 0x12c]
add eax, 0xfffffff0
jmp 0x40589f
lea ecx, [ebp - 0x128]
push ecx
lea ecx, [ebp - 0x130]
call fcn.00404750
mov edx, 8
push 0x5327e8
mov word [ebp - 0x1e0], dx
call fcn.005217a0
mov dword [ebp - 0x1d8], eax
mov ecx, dword [ebp - 0x124]
mov byte [ebp - 4], 0x1b
cmp ecx, ebx
jne 0x4060f7
push 0x80004003
call fcn.00521700
lea eax, [ebp - 0x1e0]
push eax
lea edx, [ebp - 0x1f0]
push edx
call fcn.00401900
push eax
lea eax, [ebp - 0x174]
push eax
mov byte [ebp - 4], 0x1c
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
cmp eax, ebx
jge 0x406126
push eax
call fcn.00521700
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea ecx, [ebp - 0x1f0]
push ecx
call esi
lea edx, [ebp - 0x1e0]
push edx
mov byte [ebp - 4], 0x12
call esi
cmp word [ebp - 0x174], 1
je 0x4061b5
lea eax, [ebp - 0x174]
push eax
lea ecx, [ebp - 0x180]
call fcn.00404400
mov esi, dword [eax]
mov byte [ebp - 4], 0x1d
cmp esi, ebx
je 0x406183
cmp dword [esi + 4], ebx
jne 0x406178
mov ecx, dword [esi]
push ecx
call fcn.00521920
mov dword [esi + 4], eax
mov esi, dword [esi + 4]
cmp esi, ebx
jne 0x406189
xor eax, eax
jmp 0x406199
xor esi, esi
xor eax, eax
jmp 0x406199
mov eax, esi
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x406190
sub eax, edx
push eax
push esi
lea ecx, [ebp - 0x134]
call fcn.00403c50
lea ecx, [ebp - 0x180]
mov byte [ebp - 4], 0x12
call fcn.004042b0
mov edx, 8
push 0x5327d8
mov word [ebp - 0x1b0], dx
call fcn.005217a0
mov dword [ebp - 0x1a8], eax
mov ecx, dword [ebp - 0x124]
mov byte [ebp - 4], 0x1e
cmp ecx, ebx
jne 0x4061e9
push 0x80004003
call fcn.00521700
lea eax, [ebp - 0x188]
push eax
call fcn.00403550
mov ecx, dword [eax]
mov byte [ebp - 4], 0x1f
cmp ecx, ebx
jne 0x406209
push 0x80004003
call fcn.00521700
lea edx, [ebp - 0x1b0]
push edx
lea eax, [ebp - 0x184]
push eax
call fcn.004034e0
mov esi, dword [eax]
mov byte [ebp - 4], 0x20
cmp esi, ebx
jne 0x406230
push 0x80004003
call fcn.00521700
mov ecx, dword [esi]
mov eax, dword [ecx + 0x20]
lea edx, [ebp - 0x18c]
push edx
push esi
call eax
cmp eax, ebx
jge 0x40624f
push 0x53229c
push esi
push eax
call fcn.00521720
mov eax, dword [ebp - 0x184]
mov byte [ebp - 4], 0x1f
cmp eax, ebx
je 0x406265
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [ebp - 0x188]
mov byte [ebp - 4], 0x1e
cmp eax, ebx
je 0x40627b
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov edi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x1b0]
push eax
mov byte [ebp - 4], 0x12
call edi
mov esi, dword [ebp - 0x18c]
cmp esi, ebx
jle 0x4063ee
lea ecx, [ebp - 0x154]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov edx, 8
push 0x5327d8
mov byte [ebp - 4], 0x21
mov word [ebp - 0x1a0], dx
call fcn.005217a0
mov dword [ebp - 0x198], eax
mov ecx, dword [ebp - 0x124]
mov byte [ebp - 4], 0x22
cmp ecx, ebx
jne 0x4062e1
push 0x80004003
call fcn.00521700
lea eax, [ebp - 0x158]
push eax
call fcn.00403550
mov ecx, dword [eax]
mov byte [ebp - 4], 0x23
cmp ecx, ebx
jne 0x406301
push 0x80004003
call fcn.00521700
lea edx, [ebp - 0x1a0]
push edx
lea eax, [ebp - 0x15c]
push eax
call fcn.004034e0
mov ecx, dword [eax]
mov byte [ebp - 4], 0x24
cmp ecx, ebx
jne 0x406328
push 0x80004003
call fcn.00521700
push esi
lea edx, [ebp - 0x200]
push edx
call fcn.00401820
push eax
lea eax, [ebp - 0x154]
push eax
mov byte [ebp - 4], 0x25
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
cmp eax, ebx
jge 0x406351
push eax
call fcn.00521700
lea ecx, [ebp - 0x200]
push ecx
call edi
mov eax, dword [ebp - 0x15c]
mov byte [ebp - 4], 0x23
cmp eax, ebx
je 0x406370
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov eax, dword [ebp - 0x158]
mov byte [ebp - 4], 0x22
cmp eax, ebx
je 0x406386
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [ebp - 0x1a0]
push eax
mov byte [ebp - 4], 0x21
call edi
mov ecx, 0x2011
cmp word [ebp - 0x154], cx
jne 0x4063e1
mov eax, dword [ebp - 0x14c]
lea edx, [ebp - 0x120]
push edx
push eax
mov dword [ebp - 0x120], ebx
call dword [sym.imp.OLEAUT32.dll_SafeArrayUnaccessData]
mov ecx, dword [ebp - 0x120]
mov edx, dword [ebp - 0x134]
push esi
push ecx
push edx
mov ecx, 0x57e740
call fcn.00407530
mov eax, dword [ebp - 0x14c]
push eax
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetElement]
lea ecx, [ebp - 0x154]
push ecx
mov byte [ebp - 4], 0x12
call edi
fld qword [ebp - 0x17c]
push ebx
fdiv qword [ebp - 0x1b8]
fmul qword [0x5327d0]
fnstcw word [ebp - 0x11e]
movzx eax, word [ebp - 0x11e]
or eax, 0xc00
mov dword [ebp - 0x160], eax
mov eax, dword [ebp - 0x190]
fldcw word [ebp - 0x160]
mov ecx, dword [eax + 0x20]
fistp qword [ebp - 0x164]
mov edx, dword [ebp - 0x164]
push edx
push 0xbcf
push ecx
fldcw word [ebp - 0x11e]
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [ebp - 0x124]
cmp eax, ebx
jne 0x40645b
push 0x80004003
call fcn.00521700
mov edx, dword [eax]
mov esi, eax
push eax
mov eax, dword [edx + 0x90]
call eax
cmp eax, ebx
jge 0x406478
push 0x5322bc
push esi
push eax
call fcn.00521720
fld qword [ebp - 0x17c]
mov edi, dword [ebp - 0x130]
fadd qword [0x532830]
fstp qword [ebp - 0x17c]
jmp 0x405e14
mov ecx, 0x57e740
call fcn.004076b0
test al, al
je 0x4064ad
mov ecx, 0x57e740
call fcn.004073e0
mov eax, dword [ebp - 0x11c]
mov dword [ebp - 4], 0x11
cmp eax, ebx
jne 0x4064c8
push 0x80004003
call fcn.00521700
mov ecx, dword [eax]
lea edx, [ebp - 0x120]
push edx
mov esi, eax
push eax
mov eax, dword [ecx + 0x88]
mov dword [ebp - 0x120], ebx
call eax
cmp eax, ebx
jge 0x4064f2
push 0x5322ac
push esi
push eax
call fcn.00521720
cmp dword [ebp - 0x120], ebx
je 0x406528
mov eax, dword [ebp - 0x11c]
cmp eax, ebx
jne 0x40650e
push 0x80004003
call fcn.00521700
mov ecx, dword [eax]
mov edx, dword [ecx + 0x3c]
push eax
mov esi, eax
call edx
cmp eax, ebx
jge 0x406528
push 0x5322ac
push esi
push eax
call fcn.00521720
mov eax, dword [ebp - 0x11c]
cmp eax, ebx
je 0x406540
mov dword [ebp - 0x11c], ebx
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov esi, dword [ebp - 0x12c]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [ebp - 0x13c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406579
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x134]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40659f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 0xe
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4065bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x128]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4065e5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x174]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x124]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x406608
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov eax, dword [ebp - 0x11c]
mov byte [ebp - 4], 0
cmp eax, ebx
je 0x40661e
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [esi - 0x10]
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406641
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x4067a7
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x138]
push ecx
push str.Installation_fails__turn_off_the_game_or_restart_the_computer__and_try_again.
push edx
call fcn.00507d50
lea eax, [ebx - 0x10]
add esp, 0xc
mov byte [ebp - 4], 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406680
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x134]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4066a6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 0xe
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4066c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x128]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4066ec
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x174]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x124]
mov byte [ebp - 4], 1
test eax, eax
je 0x40670f
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov eax, dword [ebp - 0x11c]
test eax, eax
jmp 0x406095
or eax, 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00505fe3
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x138]
push eax
push str.Installation_fails__turn_off_the_game_or_restart_the_computer__and_try_again.
push ecx
call fcn.00507d50
mov eax, dword [ebp - 0x130]
add eax, 0xfffffff0
add esp, 0xc
mov byte [ebp - 4], 2
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406833
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x11c]
mov byte [ebp - 4], 0
cmp eax, ebx
je 0x406849
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [edi - 0x10]
jmp 0x40589f