Function at 0x51451c
Capabilities:
Copy file
Create process on windows
Manipulate boot configuration

Disassembly:
push ebp
mov ebp, esp
mov ecx, 7
push 0
push 0
dec ecx
jne 0x514524
push ebx
push esi
push edi
xor eax, eax
push ebp
push 0x514952
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.0051350c
test al, al
je 0x514937
xor eax, eax
push ebp
push 0x51492d
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x417bc0]
call fcn.0040337c
mov dword [ebp - 4], eax
mov dl, 1
mov eax, dword [0x417bc0]
call fcn.0040337c
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x51462b
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0x514960
call sub.kernel32.dll_WinExec
push 0
push 0x51497c
call sub.kernel32.dll_WinExec
push 0
push 0x514998
call sub.kernel32.dll_WinExec
push 0
push 0x5149b4
call sub.kernel32.dll_WinExec
push 0
push 0x5149d0
call sub.kernel32.dll_WinExec
push 0
push 0x5149f0
call sub.kernel32.dll_WinExec
push 0x3e8
call sub.kernel32.dll_Sleep_1
mov eax, 0x514a18
call fcn.00409288
test al, al
jne 0x514609
mov eax, 0x514a30
call fcn.00409288
test al, al
je 0x514609
mov eax, 0x514a44
call fcn.00409288
test al, al
je 0x514609
mov eax, 0x514a30
call fcn.004093d8
mov eax, 0x514a44
call fcn.00409288
test al, al
je 0x514621
mov eax, 0x514a44
call fcn.004093d8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514635
xor eax, eax
push ebp
push 0x514727
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, 0x514a58
call fcn.00409288
test al, al
je 0x514667
push 0
push 0x514a68
push 0x514a74
call sub.kernel32.dll_CopyFileA
jmp 0x51471d
mov eax, 0x514a8c
call fcn.00409288
test al, al
je 0x51471d
mov edx, 0x514a8c
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x68]
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [ebp - 0x10]
lea edx, [ebp - 0xc]
call fcn.0040863c
mov eax, dword [ebp - 0xc]
push eax
lea edx, [ebp - 0x14]
mov eax, 0x514aa0
call fcn.0040863c
mov eax, dword [ebp - 0x14]
pop edx
call fcn.004047e4
test eax, eax
jle 0x514710
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
test esi, esi
jl 0x514710
inc esi
xor ebx, ebx
lea ecx, [ebp - 0x1c]
mov edx, ebx
mov eax, dword [ebp - 4]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 0x18]
call fcn.0040863c
mov eax, dword [ebp - 0x18]
push eax
lea edx, [ebp - 0x20]
mov eax, 0x514aa0
call fcn.0040863c
mov eax, dword [ebp - 0x20]
pop edx
call fcn.004047e4
test eax, eax
jle 0x51470c
mov edx, ebx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x48]
inc ebx
dec esi
jne 0x5146cc
mov edx, 0x514a8c
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x74]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514731
xor eax, eax
push ebp
push 0x5148c1
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, 0x514a18
call fcn.00409288
test al, al
je 0x514763
push 0
push 0x514ab8
push 0x514ac4
call sub.kernel32.dll_CopyFileA
jmp 0x5148b7
mov eax, 0x514a30
call fcn.00409288
test al, al
je 0x5148b7
mov edx, 0x514a30
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x68]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [ebp - 0x28]
lea edx, [ebp - 0x24]
call fcn.0040863c
mov eax, dword [ebp - 0x24]
push eax
lea edx, [ebp - 0x2c]
mov eax, 0x514adc
call fcn.0040863c
mov eax, dword [ebp - 0x2c]
pop edx
call fcn.004047e4
test eax, eax
jle 0x5148b7
mov eax, dword [ebp - 8]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
test esi, esi
jl 0x5148b7
inc esi
xor ebx, ebx
lea ecx, [ebp - 0x34]
mov edx, ebx
mov eax, dword [ebp - 8]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x34]
lea edx, [ebp - 0x30]
call fcn.0040863c
mov eax, dword [ebp - 0x30]
push eax
lea edx, [ebp - 0x38]
mov eax, 0x514adc
call fcn.0040863c
mov eax, dword [ebp - 0x38]
pop edx
call fcn.004047e4
test eax, eax
jle 0x5148af
mov esi, ebx
sub esi, 2
test esi, esi
jle 0x51481d
mov edx, esi
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov esi, ebx
dec esi
test esi, esi
jle 0x51482e
mov edx, esi
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov edx, ebx
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov eax, dword [ebp - 8]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
lea esi, [ebx + 1]
cmp eax, esi
jl 0x514852
mov edx, esi
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov eax, dword [ebp - 8]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
lea esi, [ebx + 2]
cmp eax, esi
jl 0x51486c
mov edx, esi
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov eax, dword [ebp - 8]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
lea esi, [ebx + 3]
cmp eax, esi
jl 0x514886
mov edx, esi
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov eax, dword [ebp - 8]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
lea esi, [ebx + 4]
cmp eax, esi
jl 0x5148a0
mov edx, esi
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov edx, 0x514a30
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x74]
jmp 0x5148b7
inc ebx
dec esi
jne 0x5147d0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5148cb
mov eax, dword [ebp - 4]
call fcn.004033ac
mov eax, dword [ebp - 8]
call fcn.004033ac
push 0
push 0x514af4
call sub.kernel32.dll_WinExec
push 0
push 0x514b10
call sub.kernel32.dll_WinExec
push 0
push 0x514b2c
call sub.kernel32.dll_WinExec
push 0
push 0x514b48
call sub.kernel32.dll_WinExec
push 0
push 0x514b64
call sub.kernel32.dll_WinExec
push 0
push 0x514b84
call sub.kernel32.dll_WinExec
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514937
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x514959
lea eax, [ebp - 0x38]
mov edx, 0xc
call fcn.00404204
ret