Function at 0x4572b0
Capabilities:
Create directory
Query or enumerate registry value
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x8634
call fcn.0040f8c0
push ebx
push esi
push edi
lea eax, [esp + 0xc]
push eax
push 1
push 0
push str.SOFTWARELenovoRescue_and_RecoveryDebug
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [esp + 0x24], 0x104
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4574dd
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x34]
push edx
push eax
push eax
mov eax, dword [ebp + 8]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov edx, dword [esp + 0xc]
push edx
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
jne 0x4574dd
lea eax, [esp + 0x238]
push eax
lea ecx, [esp + 0x544]
push ecx
lea edx, [esp + 0x340]
push edx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x40]
push ecx
call sub.MSVCR71.dll__wsplitpath
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x4658]
push eax
call sub.MSVCR71.dll_wcscpy
lea ecx, [esp + 0x354]
push ecx
lea edx, [esp + 0x4660]
push edx
call sub.MSVCR71.dll_wcscat
add esp, 0x24
push esi
lea eax, [esp + 0x4644]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push esi
push esi
push 4
push esi
push 3
push 0x40000000
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x4574dd
push 2
push esi
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
lea edx, [esp + 0x24]
push edx
call sub.MSVCR71.dll__ftime
lea eax, [esp + 0x28]
push eax
call sub.MSVCR71.dll__wctime
mov esi, eax
xor eax, eax
mov ecx, 0x1000
lea edi, [esp + 0x648]
push esi
rep stosd dword es:[edi], eax
call sub.MSVCR71.dll_wcslen
dec eax
push eax
lea ecx, [esp + 0x650]
push esi
push ecx
call sub.MSVCR71.dll_wcsncpy
lea edx, [esp + 0x658]
push 0x48f618
push edx
call sub.MSVCR71.dll_wcscat
mov eax, dword [ebp + 8]
push eax
lea ecx, [esp + 0x664]
push ecx
call sub.MSVCR71.dll_wcscat
lea edx, [esp + 0x668]
push 0x4a2268
push edx
call sub.MSVCR71.dll_wcscat
mov ecx, dword [ebp + 0xc]
lea eax, [ebp + 0x10]
push eax
push ecx
lea edx, [esp + 0x4678]
push 0x2000
push edx
call sub.MSVCR71.dll__vsnwprintf
add esp, 0x40
lea eax, [esp + 0x4640]
push eax
lea ecx, [esp + 0x644]
push ecx
call sub.MSVCR71.dll_wcscat
lea edx, [esp + 0x648]
push 0x4a2260
push edx
call sub.MSVCR71.dll_wcscat
push 0x2000
call sub.MSVCR71.dll_malloc
mov esi, eax
add esp, 0x14
test esi, esi
je 0x4574c9
xor eax, eax
push eax
push eax
mov ecx, 0x800
mov edi, esi
push 0x2000
rep stosd dword es:[edi], eax
lea eax, [esp + 0x64c]
push esi
push eax
call sub.MSVCR71.dll_wcslen
add esp, 4
push eax
lea ecx, [esp + 0x654]
push ecx
push 0x200
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov eax, esi
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4574b0
push 0
sub eax, edx
lea edx, [esp + 0x18]
push edx
push eax
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x4574dd
push esi
call sub.MSVCR71.dll_free
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret