Function at 0x5800a0
Capabilities:
Create thread

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5fd510
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x60
mov eax, dword [0x70f200]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
push 0xd
push 0
push dword [edi + 0x2c0]
xorps xmm0, xmm0
mov byte [edi + 0x2b8], 0
push dword [edi + 0x2bc]
lea esi, [edi + 0x2b8]
push dword [edi]
lea ecx, [ebp - 0x4c]
movups xmmword [ebp - 0x4c], xmm0
movups xmmword [ebp - 0x3c], xmm0
call fcn.005b8800
test byte [ebx + 8], 2
mov dword [ebp - 4], 0
je 0x58013c
sub esp, 0xc
mov ecx, edi
push 3
push str.You_are_about_to_backup_all_your_device_drivers._r_n_r_nDo_you_want_to_include_devices_not_present_
call fcn.00580fb0
cmp eax, 0xffffffff
jne 0x58013c
or edi, eax
jmp 0x580362
xorps xmm0, xmm0
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x2c]
movq qword [ebp - 0x2c], xmm0
call fcn.005dc5e0
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0x20]
movq qword [ebp - 0x20], xmm0
call fcn.005dc5e0
mov byte [ebp - 4], 2
mov edx, str.Please_indicate_the_desination_folder
push dword [edi + 0x3c8]
push 0
push 0x21
push ecx
lea ecx, [ebp - 0x2c]
call fcn.005e1b00
test al, al
jne 0x580192
or edi, 0xffffffff
jmp 0x580352
push 0
push 1
push 1
push 0
push str.DriverBackup
push ecx
lea ecx, [ebp - 0x2c]
call fcn.005da0a0
mov ecx, eax
call fcn.005daa70
test eax, eax
jne 0x5801cb
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push str.DriverBackup
lea ecx, [ebp - 0x2c]
call fcn.005da780
sub esp, 8
lea eax, [edi + 0x6c8]
mov ecx, eax
mov dword [ebp - 0x6c], eax
push 0
push str.Cancel
push 0
push 0xffffffffffffffb0
sub esp, 0xc
push 0x28a
push dword [edi]
push str.Preparing_to_backup...
call fcn.005b6870
mov ecx, eax
call fcn.005b66e0
mov ecx, eax
call fcn.005b64a0
mov ecx, eax
call fcn.005b62b0
lea eax, [edi + 0x6c8]
mov dword [ebp - 0x64], 0
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x60], eax
call fcn.005dc190
mov dword [ebp - 0x5c], eax
mov eax, dword [ebx + 8]
push 0
and eax, 1
mov dword [ebp - 0x58], esi
push 0
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x64]
push eax
push 0x57d830
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov esi, eax
or eax, 0xffffffff
test esi, esi
cmove esi, eax
mov dword [ebp - 0x68], esi
xor edx, edx
mov byte [ebp - 4], 3
mov ecx, esi
call fcn.005cca30
test al, al
je 0x580286
nop dword [eax]
push 2
mov ecx, edi
call fcn.00580e20
xor edx, edx
mov ecx, esi
call fcn.005cca30
test al, al
jne 0x580270
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], 0
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
push dword [ebp - 0x50]
lea ecx, [ebp - 0x20]
call fcn.005db290
cmp dword [ebp - 0x50], 1
mov ecx, str._drivers
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
mov eax, str._driver
cmovne eax, ecx
lea ecx, [ebp - 0x20]
push str._backed_up.
push eax
call fcn.005dc190
cmp byte [edi + 0x2b8], 0
mov ecx, 0x635804
push eax
mov eax, str.Operation_cancelled.
cmove eax, ecx
lea ecx, [ebp - 0x20]
push eax
call fcn.005dc200
push 0x628f54
push 1
lea ecx, [ebp - 0x20]
call fcn.005dc190
push eax
push 0x64
lea ecx, [edi + 0x6c8]
call fcn.005b66e0
mov ecx, eax
call fcn.005b6150
push 2
mov ecx, edi
call fcn.00580e20
test eax, eax
je 0x580337
cmp byte [edi + 0x2b8], 0
jne 0x580337
push 2
mov ecx, edi
call fcn.00580e20
test eax, eax
jne 0x580321
mov ecx, dword [ebp - 0x6c]
call fcn.005b6b30
mov edi, dword [ebp - 0x50]
cmp esi, 0xffffffff
je 0x580352
test esi, esi
je 0x580352
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x20]
call fcn.005dc430
lea ecx, [ebp - 0x2c]
call fcn.005dc430
lea ecx, [ebp - 0x4c]
call fcn.005b8790
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0041e1b5
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4