Function at 0x41a890
Capabilities:
Get disk size
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x47ce9c
mov eax, dword fs:[0]
push eax
mov eax, 0x2138
call fcn.00462c30
mov eax, dword [0x4ade78]
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, dword [ebp + 8]
mov dword [ebp - 0x2130], ebx
mov dword [ebp - 0x2144], 0
mov dword [ebp - 0x213c], 0
mov dword [ebp - 0x2138], 0
mov dword [ebp - 0x2134], 0
mov dword [ebp - 4], 0
call fcn.0041c420
test al, al
jne 0x41a913
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
push 1
push str.SoftwareMozillaMozilla_Firefox
push SysReAllocStringLen
lea ecx, [ebp - 0x213c]
call fcn.0041c100
mov ecx, dword [0x4af2c0]
mov esi, eax
lea edx, [ecx + 2]
lea eax, [ecx + 1]
imul eax, edx
imul eax, ecx
cdq
mov ecx, 0x14
idiv ecx
cmp edx, 0xc
jne 0x41a95b
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetMailslotInfo]
or edi, 0xffffffff
test esi, esi
je 0x41aac8
push 1
push str.SoftwareMozillaMozilla_Firefox
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x213c]
call fcn.0041c100
mov esi, eax
call fcn.0041c420
test al, al
jne 0x41a995
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4af2c0], eax
jmp 0x41a99a
mov eax, dword [0x4af2c0]
test esi, esi
je 0x41aa4d
push str.SoftwareWow6432Node_
lea ecx, [ebp - 0x2128]
call fcn.00401b30
push str.MozillaMozilla_Firefox
push eax
lea eax, [ebp - 0x212c]
push eax
mov byte [ebp - 4], 1
call fcn.00402d20
add esp, 0xc
lea ecx, [ebp - 0x213c]
push 1
push dword [eax]
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0041c100
mov edx, dword [ebp - 0x212c]
add edx, 0xfffffff0
mov esi, eax
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41aa00
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x2128]
add edx, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41aa23
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x41aa48
push ebx
call fcn.0041a250
mov ecx, dword [ebp - 0x213c]
add esp, 4
test ecx, ecx
je 0x41aa41
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
jmp 0x41acb2
mov eax, dword [0x4af2c0]
imul eax, eax
cdq
mov ecx, 0x18
idiv ecx
cmp edx, 6
jne 0x41aac8
xor eax, eax
push 0x1d10
push eax
mov word [ebp - 0x2124], ax
lea eax, [ebp - 0x2122]
push eax
call fcn.00462e00
add esp, 0xc
xor edi, edi
xor esi, esi
nop
xor eax, eax
test edi, edi
je 0x41aaaa
test eax, eax
je 0x41aaaa
lea ecx, [esi + eax]
lea edx, [ebp - 0x2124]
lea edx, [edx + ecx*2]
lea ecx, [esi + eax]
mov cx, word [ebp + ecx*2 - 0x219e]
inc cx
add cx, word [edx - 2]
mov word [edx], cx
inc eax
cmp eax, 0x3d
jl 0x41aa82
add esi, 0x3d
inc edi
cmp esi, 0xe89
jl 0x41aa80
movsx eax, word [ebp - 0x414]
mov dword [0x4af2c0], eax
push 0x3ff
lea eax, [ebp - 0x40f]
push 0
push eax
mov byte [ebp - 0x410], 0
call fcn.00462e00
mov eax, dword [0x4adbb8]
add esp, 0xc
mov ecx, 0x4adbb8
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x2128], esi
mov eax, 0x492004
mov byte [ebp - 4], 2
test eax, 0xffff0000
jne 0x41ab2c
movzx edi, ax
push 0
push edi
call fcn.00403750
add esp, 8
test eax, eax
je 0x41ab44
push edi
push eax
lea ecx, [ebp - 0x2128]
call fcn.00405c50
jmp 0x41ab3e
push 3
push 0x492004
lea ecx, [ebp - 0x2128]
call fcn.00408620
mov esi, dword [ebp - 0x2128]
mov ebx, dword [ebp - 0x213c]
lea eax, [ebp - 0x212c]
push eax
lea eax, [ebp - 0x410]
push eax
lea eax, [ebp - 0x2140]
push eax
push 0
push str.CurrentVersion
push ebx
mov byte [ebp - 4], 3
mov dword [ebp - 0x212c], 0x400
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x41abd7
mov eax, dword [ebp - 0x2140]
cmp eax, 1
je 0x41ab8f
cmp eax, 2
jne 0x41abd7
mov eax, dword [ebp - 0x212c]
test eax, eax
je 0x41aba5
cmp byte [ebp + eax - 0x411], 0
je 0x41abac
jmp 0x41abd7
mov byte [ebp - 0x410], 0
lea ecx, [ebp - 0x410]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41abb5
sub ecx, edx
push ecx
lea eax, [ebp - 0x410]
push eax
lea ecx, [ebp - 0x2128]
call fcn.00408620
mov esi, dword [ebp - 0x2128]
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
je 0x41abec
push ebx
call edi
xor ebx, ebx
mov dword [ebp - 0x213c], ebx
mov dword [ebp - 0x2138], 0
call fcn.0041c540
test al, al
jne 0x41ac46
mov edi, dword [0x4af2c0]
mov eax, 0x51eb851f
imul edi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0x64
sub edi, ecx
xor ecx, ecx
lea eax, [edi + 0x2f4]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004601e0
push eax
call fcn.0046208f
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add esp, 8
cmp dword [esi - 0xc], 0
je 0x41ac79
push 0x492004
push esi
call fcn.0046236e
add esp, 8
test eax, eax
sete al
test al, al
jne 0x41ac79
add esi, 0xfffffff0
push esi
call fcn.00403ee0
mov ecx, dword [ebp - 0x2130]
add eax, 0x10
mov dword [ecx], eax
jmp 0x41ac87
push dword [ebp - 0x2130]
call fcn.0041a250
add esi, 0xfffffff0
or ecx, 0xffffffff
lea eax, [esi + 0xc]
mov byte [ebp - 4], 0
add esp, 4
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41aca5
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
je 0x41acac
push ebx
call edi
mov eax, dword [ebp - 0x2130]
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.00461234
mov esp, ebp
pop ebp
ret