Function at 0x410e20
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b45a6
mov eax, dword fs:[0]
push eax
sub esp, 0x114
mov eax, dword [0x6319d0]
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 ebx, ecx
call fcn.0046d4f0
test eax, eax
je 0x410ed3
push 0
push str.PROGBAR_DATA::Setup_n
push 0x642288
call fcn.00599ee3
mov eax, dword [str.ENTRY:]
mov ecx, dword [0x5ccf7c]
mov dword [0x642188], eax
mov eax, 0x642288
add esp, 0xc
mov dword [0x64218c], ecx
mov esi, eax
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x410e90
mov edi, 0x642188
sub eax, esi
dec edi
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x410ea0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d500
push 0x642188
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d4f0
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
test eax, eax
je 0x410f0b
mov edx, dword [ebp + 0xc]
push edi
push edx
push esi
push str.ProgBarState_d__ProgBarMaxCnt_d__ProgBarInc_d_n
push 0x642088
call fcn.00599ee3
add esp, 0x14
push 0x642088
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x410f25
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x120], eax
mov ecx, dword [ebp + 0xc]
mov dword [ebx + 4], ecx
mov dword [ebx], esi
mov dword [ebx + 8], edi
add ebx, 0xc
push str.SoftwareCnxtProgBar
lea ecx, [ebp - 0x11c]
mov dword [ebp - 4], 0
mov dword [ebx], 0
call fcn.00403380
mov eax, esi
dec eax
mov byte [ebp - 4], 1
mov edi, 0xf003f
je 0x411007
dec eax
je 0x410fd5
dec eax
je 0x410fa4
mov edx, dword [str.Preparing]
mov eax, dword [0x5ce6cc]
mov cx, word [0x5ce6d0]
mov dword [ebp - 0x114], edx
mov dword [ebp - 0x110], eax
mov word [ebp - 0x10c], cx
jmp 0x411038
mov edx, dword [str.Uninstalling]
mov eax, dword [0x5ce6bc]
mov ecx, dword [0x5ce6c0]
mov dword [ebp - 0x114], edx
mov dl, byte [0x5ce6c4]
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x10c], ecx
mov byte [ebp - 0x108], dl
jmp 0x411038
mov eax, dword [str.Installing]
mov ecx, dword [0x5ce6b0]
mov dx, word [0x5ce6b4]
mov dword [ebp - 0x114], eax
mov al, byte [0x5ce6b6]
mov dword [ebp - 0x110], ecx
mov word [ebp - 0x10c], dx
mov byte [ebp - 0x10a], al
jmp 0x411038
mov ecx, dword [str.Extracting]
mov edx, dword [0x5ce6a4]
mov ax, word [0x5ce6a8]
mov dword [ebp - 0x114], ecx
mov cl, byte [0x5ce6aa]
mov dword [ebp - 0x110], edx
mov word [ebp - 0x10c], ax
mov byte [ebp - 0x10a], cl
call fcn.0049cb90
test eax, eax
je 0x411046
mov edi, 0xf013f
mov eax, dword [ebp - 0x11c]
push 0
lea edx, [ebp - 0x118]
push edx
push 0
push edi
push 0
push 0
push 0
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x411090
mov edx, dword [ebp - 0x11c]
lea ecx, [ebp - 0x118]
push ecx
push edi
push 0
push edx
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x411100
mov ecx, dword [ebp - 0x11c]
lea eax, [ebp - 0x118]
push eax
push edi
push 0
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x411100
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4110b5
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
sub eax, edx
push eax
mov eax, dword [ebp - 0x118]
lea edx, [ebp - 0x114]
push edx
push 1
push 0
push str.ProgBarState
push eax
call esi
mov ecx, dword [ebp - 0x118]
push 4
push ebx
push 4
push 0
push str.ProgBarCnt
push ecx
call esi
mov edx, dword [ebp - 0x118]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.0046d4f0
test eax, eax
je 0x411184
push 0
push str.PROGBAR_DATA::Setup_n
push 0x641f88
call fcn.00599ee3
mov eax, dword [str.EXIT:]
mov ecx, dword [0x5ccefc]
mov dword [0x641e88], eax
mov eax, 0x641f88
mov dword [0x641e8c], ecx
add esp, 0xc
mov ecx, eax
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x411140
mov edi, 0x641e88
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x411151
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x641e88
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d510
mov eax, dword [ebp - 0x11c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4111aa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x120]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4111d3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
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.00599ed4
mov esp, ebp
pop ebp
ret 0xc