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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c515e
mov eax, dword fs:[0]
push eax
sub esp, 0x2f4
mov eax, dword [0x51eee0]
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 eax, dword [ebp + 8]
mov dword [ebp - 0x270], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x2a4], eax
call fcn.00417c50
test al, al
jne 0x41290c
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
push 0
lea ecx, [ebp - 0x2c4]
mov dword [ebp - 0x294], 0
call fcn.00442860
mov eax, dword [0x51eab0]
mov ecx, 0x51eab0
mov dword [ebp - 4], 0
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x290], ebx
mov eax, dword [0x51eab0]
mov ecx, 0x51eab0
mov byte [ebp - 4], 1
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x298], edi
mov eax, dword [0x51eab0]
mov ecx, 0x51eab0
mov byte [ebp - 4], 2
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x2cc], eax
mov dword [ebp - 0x2a0], esi
mov ecx, dword [ebp - 0x270]
push str.hive
mov byte [ebp - 4], 4
call fcn.00442de0
sub esp, 0x18
mov ecx, eax
push esp
call fcn.004435b0
lea eax, [ebp - 0x278]
push eax
call fcn.0044ee90
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [ebx - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 5
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x28c], ecx
cmp eax, ecx
je 0x412a27
cmp dword [ecx + 0xc], 0
lea ebx, [ecx + 0xc]
jl 0x412a12
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x412a12
push dword [ebp - 0x288]
call fcn.00404840
add esp, 4
mov dword [ebp - 0x288], eax
or ecx, 0xffffffff
lock xadd dword [ebx], ecx
dec ecx
test ecx, ecx
jg 0x412a07
mov edx, dword [ebp - 0x28c]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x288]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x290], ebx
jmp 0x412a27
push dword [edx - 0xc]
lea ecx, [ebp - 0x290]
push edx
call fcn.00409950
mov ebx, dword [ebp - 0x290]
mov edx, dword [ebp - 0x278]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412a4b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebx - 0x10]
push ecx
mov ecx, dword [eax]
mov dword [ebp - 0x288], eax
mov eax, dword [ecx]
mov dword [ebp - 0x28c], esp
call dword [eax + 0x10]
lea ecx, [ebx - 0x10]
mov edx, eax
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0x278], eax
jl 0x412a8b
cmp edx, dword [ecx]
jne 0x412a8b
mov edx, dword [ebp - 0x278]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x412ad3
mov eax, dword [edx]
push 2
push dword [ecx + 4]
mov ecx, edx
call dword [eax]
mov edx, eax
mov dword [ebp - 0x278], edx
test edx, edx
jne 0x412aa7
call fcn.0040c2e0
mov eax, dword [ebx - 0xc]
mov dword [edx + 4], eax
mov ecx, dword [ebx - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push ebx
push eax
lea eax, [edx + 0x10]
push eax
call fcn.004a7195
mov ecx, dword [ebp - 0x278]
add esp, 0x10
lea eax, [ecx + 0x10]
mov ecx, dword [ebp - 0x28c]
mov dword [ecx], eax
call fcn.004155d0
add esp, 4
mov dword [ebp - 0x280], eax
test eax, eax
jne 0x412c0a
lea eax, [ebp - 0x290]
push eax
lea eax, [ebp - 0x270]
push str.enumRegValues_hive_error_
push eax
call fcn.0040b800
add esp, 0xc
lea eax, [ebp - 0x270]
push eax
lea eax, [ebp - 0x234]
push eax
mov byte [ebp - 4], 6
call fcn.0044ef60
add esp, 8
push eax
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 7
call fcn.00442780
push 0x4d968c
lea ecx, [ebp - 0x2c4]
mov byte [ebp - 4], 8
call fcn.00442d00
lea ecx, [ebp - 0x2b4]
push ecx
mov ecx, eax
call fcn.00442b10
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 7
call fcn.00442a70
cmp dword [ebp - 0x220], 0x10
jb 0x412b81
push dword [ebp - 0x234]
call fcn.004a5bbe
add esp, 4
mov edx, dword [ebp - 0x270]
add edx, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412ba7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412bc4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412be1
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x288]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412c01
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x413331
mov ecx, dword [ebp - 0x270]
push 0x4d9ab8
call fcn.00442de0
sub esp, 0x18
mov ecx, eax
push esp
call fcn.004435b0
lea eax, [ebp - 0x29c]
push eax
call fcn.0044ee90
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [edi - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 9
mov dword [ebp - 0x278], eax
mov dword [ebp - 0x28c], ecx
cmp eax, ecx
je 0x412cb3
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
jl 0x412c9e
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x412c9e
push dword [ebp - 0x278]
call fcn.00404840
add esp, 4
mov dword [ebp - 0x278], eax
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x412c93
mov edx, dword [ebp - 0x28c]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x278]
lea edi, [eax + 0x10]
mov dword [ebp - 0x298], edi
jmp 0x412cb3
push dword [edx - 0xc]
lea ecx, [ebp - 0x298]
push edx
call fcn.00409950
mov edi, dword [ebp - 0x298]
mov edx, dword [ebp - 0x29c]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412cd7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x270]
push 0x4d9ac4
call fcn.00443e00
test al, al
je 0x412d04
mov ecx, dword [ebp - 0x270]
push 0x4d9ac4
call fcn.00442de0
mov ecx, eax
call fcn.004434b0
jmp 0x412d06
xor eax, eax
mov ecx, 0x20019
cmp eax, 0x20
jne 0x412d17
mov ecx, 0x20219
jmp 0x412d22
mov edx, 0x20119
cmp eax, 0x40
cmove ecx, edx
lea eax, [ebp - 0x294]
push eax
push ecx
push 0
push edi
push dword [ebp - 0x280]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x412e88
push eax
lea eax, [ebp - 0x280]
push eax
call fcn.0043e100
add esp, 8
push eax
lea eax, [ebp - 0x270]
push str.enumRegValues_RegOpenKeyEx_
push eax
mov byte [ebp - 4], 0xa
call fcn.0040b800
add esp, 0xc
mov edx, dword [ebp - 0x280]
add edx, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 0xc
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412d90
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x270]
push eax
lea eax, [ebp - 0x234]
push eax
call fcn.0044ef60
add esp, 8
push eax
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 0xd
call fcn.00442780
push 0x4d968c
lea ecx, [ebp - 0x2c4]
mov byte [ebp - 4], 0xe
call fcn.00442d00
lea ecx, [ebp - 0x2b4]
push ecx
mov ecx, eax
call fcn.00442b10
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 0xd
call fcn.00442a70
cmp dword [ebp - 0x220], 0x10
jb 0x412dfe
push dword [ebp - 0x234]
call fcn.004a5bbe
add esp, 4
mov edx, dword [ebp - 0x270]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412e21
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412e3e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412e5b
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x288]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412c01
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x413331
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21a]
push eax
call fcn.004a7560
add esp, 0xc
lea eax, [ebp - 0x300]
push eax
lea eax, [ebp - 0x2e0]
push eax
lea eax, [ebp - 0x2e8]
push eax
lea eax, [ebp - 0x2c8]
push eax
lea eax, [ebp - 0x2dc]
push eax
lea eax, [ebp - 0x2e4]
push eax
lea eax, [ebp - 0x2d0]
push eax
lea eax, [ebp - 0x2d8]
push eax
push 0
lea eax, [ebp - 0x2d4]
push eax
lea eax, [ebp - 0x21c]
push eax
push dword [ebp - 0x294]
mov dword [ebp - 0x2d4], 0x104
mov dword [ebp - 0x2d8], 0
mov dword [ebp - 0x284], 0x3fff
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x412f29
mov eax, dword [ebp - 0x2c8]
inc eax
mov dword [ebp - 0x284], eax
mov eax, dword [0x51eab0]
mov ecx, 0x51eab0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x27c], 0
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x274], esi
mov edx, dword [ebp - 0x284]
mov byte [ebp - 4], 0xf
mov dword [ebp - 0x280], edx
test edx, edx
jns 0x412f71
push 0x80070057
call fcn.00404480
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edx
or eax, ecx
jge 0x412f94
push edx
lea ecx, [ebp - 0x274]
call fcn.004088a0
mov esi, dword [ebp - 0x274]
push 0
push 0
lea eax, [ebp - 0x27c]
push eax
push 0
lea eax, [ebp - 0x284]
push eax
push esi
push dword [ebp - 0x270]
push dword [ebp - 0x294]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov esi, eax
cmp esi, 0x103
je 0x41319c
mov ecx, dword [ebp - 0x274]
push dword [ecx - 8]
push ecx
call fcn.004a773a
mov edx, eax
add esp, 8
test edx, edx
js 0x412f67
mov ecx, dword [ebp - 0x274]
cmp edx, dword [ecx - 8]
jg 0x412f67
mov dword [ecx - 0xc], edx
mov eax, dword [ebp - 0x274]
xor ecx, ecx
mov word [eax + edx*2], cx
test esi, esi
jne 0x4130ec
push esi
lea ecx, [ebp - 0x2b4]
call fcn.00442860
lea eax, [ebp - 0x274]
push eax
lea eax, [ebp - 0x24c]
push eax
mov byte [ebp - 4], 0x10
call fcn.0044ef60
add esp, 8
push eax
lea ecx, [ebp - 0x2f8]
mov byte [ebp - 4], 0x11
call fcn.00442780
push 0x4d9abc
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 0x12
call fcn.00442d00
lea ecx, [ebp - 0x2f8]
push ecx
mov ecx, eax
call fcn.00442b10
lea ecx, [ebp - 0x2f8]
mov byte [ebp - 4], 0x11
call fcn.00442a70
cmp dword [ebp - 0x238], 0x10
mov byte [ebp - 4], 0x10
jb 0x413089
push dword [ebp - 0x24c]
call fcn.004a5bbe
add esp, 4
push dword [ebp - 0x27c]
lea ecx, [ebp - 0x22c]
call fcn.004427c0
push str.type
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 0x13
call fcn.00442d00
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, eax
call fcn.00442b10
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0x10
call fcn.00442a70
lea eax, [ebp - 0x2b4]
push eax
lea ecx, [ebp - 0x2c4]
call fcn.00443340
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 0xf
call fcn.00442a70
mov esi, dword [ebp - 0x274]
mov eax, dword [ebp - 0x280]
inc dword [ebp - 0x270]
lea edx, [esi - 0x10]
mov dword [ebp - 0x284], eax
cmp dword [edx + 4], 0
mov eax, dword [edx]
mov dword [ebp - 0x29c], eax
je 0x413170
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
jge 0x413148
cmp dword [esi - 8], 0
jge 0x41312e
push 0x80070057
call fcn.00404480
mov dword [esi - 0xc], 0
mov eax, dword [ebp - 0x274]
xor ecx, ecx
mov word [eax], cx
mov esi, dword [ebp - 0x274]
jmp 0x413170
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x41315c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x29c]
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x274], esi
call fcn.00417b60
mov edx, dword [ebp - 0x284]
test al, al
jne 0x412f63
push 0
call dword [sym.imp.KERNEL32.dll_GetFileType]
mov esi, dword [ebp - 0x274]
mov edx, dword [ebp - 0x284]
jmp 0x412f63
lea ecx, [ebp - 0x2c4]
call fcn.004437f0
test al, al
je 0x4131ec
push str.empty
lea ecx, [ebp - 0x22c]
call fcn.00442820
push 0x4d968c
lea ecx, [ebp - 0x2c4]
mov byte [ebp - 4], 0x14
call fcn.00442d00
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, eax
call fcn.00442b10
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0xf
call fcn.00442a70
mov edx, dword [ebp - 0x274]
add edx, 0xfffffff0
or esi, 0xffffffff
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413212
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x2cc]
mov dword [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413235
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edi + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413252
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebx - 0x10]
or ebx, 0xffffffff
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413331
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x413331
call fcn.00417bf0
mov eax, dword [ebp - 0x294]
test eax, eax
je 0x413351
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x294], 0
lea ecx, [ebp - 0x26c]
call fcn.004449b0
mov eax, dword [0x51eab0]
mov ecx, 0x51eab0
mov byte [ebp - 4], 0x19
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x27c], eax
lea eax, [ebp - 0x2c4]
push eax
lea eax, [ebp - 0x24c]
push eax
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 0x1a
call fcn.004478c0
mov edx, eax
cmp dword [edx + 0x14], 0x10
mov byte [ebp - 4], 0x1b
jb 0x4133a1
mov edx, dword [edx]
sub esp, 0x18
mov esi, esp
mov dword [esi + 0x14], 0xf
mov dword [esi + 0x10], 0
mov byte [esi], 0
cmp byte [edx], 0
jne 0x4133c0
xor ecx, ecx
jmp 0x4133ce
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4133c5
sub ecx, edi
push ecx
push edx
mov ecx, esi
call fcn.00401460
lea eax, [ebp - 0x2a0]
push eax
call fcn.0044ee90
add esp, 0x1c
push eax
lea ecx, [ebp - 0x27c]
mov byte [ebp - 4], 0x1c
call fcn.00402af0
mov edx, dword [ebp - 0x2a0]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x1b
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413419
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x238], 0x10
mov byte [ebp - 4], 0x1a
jb 0x413434
push dword [ebp - 0x24c]
call fcn.004a5bbe
add esp, 4
mov edi, dword [ebp - 0x2a4]
mov esi, dword [ebp - 0x27c]
mov eax, 8
mov word [edi], ax
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x41345b
call fcn.0040c2e0
add esi, 0xfffffff0
mov dword [edi + 8], eax
mov byte [ebp - 4], 0x19
lea eax, [esi + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x413479
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x254], 0x10
mov byte [ebp - 4], 0
mov dword [ebp - 0x26c], 0x4d9684
jb 0x41349e
push dword [ebp - 0x268]
call fcn.004a5bbe
add esp, 4
lea ecx, [ebp - 0x26c]
mov dword [ebp - 0x254], 0xf
mov dword [ebp - 0x258], 0
mov byte [ebp - 0x268], 0
call fcn.00444ab0
lea ecx, [ebp - 0x2c4]
mov dword [ebp - 4], 0xffffffff
call fcn.00442a70
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.004a63c4
mov esp, ebp
pop ebp
ret