Function at 0x467550
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c8f40
mov eax, dword fs:[0]
push eax
sub esp, 0x38
push ebx
push esi
push edi
mov eax, dword [0x5142b0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
xor ebx, ebx
push str.Inside_GetFileDataFromRegistry_n
mov dword [ebp - 4], ebx
call fcn.00423db0
mov eax, dword [0x513fec]
mov edx, dword [eax + 0xc]
add esp, 4
mov ecx, 0x513fec
call edx
add eax, 0x10
mov dword [ebp - 0x20], eax
mov edx, dword [str.SoftwareAdventNetDesktopCentralDCAgent]
mov byte [ebp - 4], 1
cmp edx, ebx
jne 0x4675b6
xor eax, eax
jmp 0x4675c9
mov eax, edx
lea edi, [eax + 1]
jmp 0x4675c0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4675c0
sub eax, edi
push eax
push edx
lea ecx, [ebp - 0x20]
call fcn.00401700
push 0xe
push str.FileMetaData_
lea ecx, [ebp - 0x20]
call fcn.00411c00
mov eax, dword [esi + 0x20]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x20]
call fcn.00411c00
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
mov eax, dword [ebp - 0x20]
push 0x2001f
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], 2
call fcn.0045ba60
mov dword [ebp - 0x24], 0xd
cmp eax, ebx
je 0x467635
push str.GetFileDataFromRegistry__Registry_subkey_not_found_n
call fcn.00423ad0
mov edi, dword [ebp - 0x44]
add esp, 4
jmp 0x467832
push 0xff
push 1
mov dword [ebp - 0x18], 0xff
call fcn.00491e51
add esp, 8
lea ecx, [ebp - 0x18]
push ecx
mov ebx, eax
push ebx
push str.LastModifiedTime
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x14], ebx
call fcn.00463fa0
test eax, eax
jne 0x467805
test ebx, ebx
je 0x46767c
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x467673
sub eax, edx
push eax
push ebx
lea ecx, [esi + 0x14]
call fcn.00401700
mov edx, dword [esi + 0x18]
mov eax, dword [esi + 0x14]
push edx
push eax
push str.GetFileDataFromRegistry_last_modified_time_in_registry____s_from_server__s_n
call fcn.00423db0
mov eax, dword [esi + 0x14]
xor ecx, ecx
add esp, 0xc
test eax, eax
setne cl
test ecx, ecx
jne 0x4676b3
push 0x80004005
call fcn.00401010
mov ecx, dword [esi + 0x18]
push eax
push ecx
call fcn.00497f2f
add esp, 8
test eax, eax
jne 0x467805
lea ecx, [ebp - 0x2c]
push ecx
lea edi, [esi + 0x34]
push edi
lea edx, [ebp - 0x30]
push edx
push eax
mov eax, dword [ebp - 0x44]
push str.PartialFileSize
push eax
mov dword [ebp - 0x2c], 8
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x46792c
cmp dword [ebp - 0x30], 0xb
jne 0x46792c
mov edx, dword [edi + 4]
mov ecx, dword [edi]
push edx
push ecx
push str.Start_Range:__llu__n
mov dword [esi + 0x3c], ecx
mov dword [esi + 0x40], edx
call fcn.00423db0
mov eax, dword [esi + 4]
push 0x4d76bc
push eax
call fcn.004992f3
xor ebx, ebx
add esp, 0x14
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x38], ebx
test eax, eax
je 0x467761
push 2
push ebx
push ebx
push eax
call fcn.00498ba3
mov edx, dword [ebp - 0x28]
push edx
call fcn.004991c8
mov ebx, edx
push ebx
push eax
push str.File_size:__llu__n
mov dword [ebp - 0x38], eax
call fcn.00423db0
mov eax, dword [ebp - 0x28]
push eax
call fcn.00493731
add esp, 0x24
mov ecx, dword [ebp - 0x38]
mov edx, dword [edi + 4]
mov eax, dword [edi]
push ebx
push ecx
push edx
push eax
push str.GetFileDataFromRegistry_partial_downloaded_filesize__in_registry__llu_from_file___llu_n
call fcn.00423db0
mov eax, dword [ebp - 0x38]
mov edx, dword [edi + 4]
add esp, 0x14
cmp eax, dword [edi]
jne 0x46787d
cmp ebx, edx
jne 0x46787d
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x14]
push ecx
xor ebx, ebx
push ebx
push edi
mov dword [ebp - 0x24], ebx
call fcn.00492ac0
add esp, 0xc
lea edx, [ebp - 0x18]
push edx
push edi
push str.LastRetryTime
lea ecx, [ebp - 0x44]
call fcn.00463fa0
test eax, eax
jne 0x4677cb
push edi
call fcn.0049290b
add esp, 4
mov dword [esi + 0x4c], eax
mov dword [esi + 0x50], edx
lea eax, [ebp - 0x1c]
push eax
push str.RetryCount
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x1c], ebx
call fcn.0045bb10
test eax, eax
jne 0x4677e9
mov ecx, dword [ebp - 0x1c]
mov dword [esi + 0x28], ecx
mov edx, dword [esi + 0x28]
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x4c]
push edx
push eax
push ecx
push str.GetFileDataFromRegistry_last_retry_time__ld_count__ld_n
call fcn.00423db0
add esp, 0x10
mov ebx, dword [ebp - 0x14]
test ebx, ebx
je 0x467812
push ebx
call fcn.0048efd8
add esp, 4
mov edi, dword [ebp - 0x44]
test edi, edi
je 0x46782a
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x44], 0
mov edi, dword [ebp - 0x44]
xor ebx, ebx
cmp dword [ebp - 0x24], 0xd
jne 0x467839
mov ecx, esi
call fcn.00465730
cmp edi, ebx
je 0x467844
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x467956
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 esp, ebp
pop ebp
ret
cmp dword [esi + 0x55], 0
jne 0x4678a4
mov edx, dword [esi + 0x59]
xor ecx, ecx
cmp ebx, ecx
jb 0x4678a4
ja 0x467892
cmp eax, edx
jbe 0x4678a4
push str.GetFileDataFromRegistry_temp_file_size_is_greater_than_content_length.._n
call fcn.00423db0
add esp, 4
jmp 0x467802
cmp ebx, dword [edi + 4]
jb 0x467802
ja 0x4678b7
cmp eax, dword [edi]
jbe 0x467802
mov edx, dword [ebp - 0x18]
mov dword [edi + 4], ebx
mov dword [esi + 0x40], ebx
push edx
xor ebx, ebx
mov dword [edi], eax
mov edi, dword [ebp - 0x14]
push ebx
push edi
mov dword [esi + 0x3c], eax
mov dword [ebp - 0x24], ebx
call fcn.00492ac0
add esp, 0xc
lea eax, [ebp - 0x18]
push eax
push edi
push str.LastRetryTime
lea ecx, [ebp - 0x44]
call fcn.00463fa0
test eax, eax
jne 0x4678fd
push edi
call fcn.0049290b
add esp, 4
mov dword [esi + 0x4c], eax
mov dword [esi + 0x50], edx
lea ecx, [ebp - 0x1c]
push ecx
push str.RetryCount
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x1c], ebx
call fcn.0045bb10
test eax, eax
jne 0x46791b
mov edx, dword [ebp - 0x1c]
mov dword [esi + 0x28], edx
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x50]
mov edx, dword [esi + 0x4c]
push eax
push ecx
push edx
jmp 0x4677f5
push str.ERROR_in_fetching_registry__n
call fcn.00423db0
add esp, 4
jmp 0x467805
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret