Function at 0x42d6d0
Capabilities:
Access peb ldr_data
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x27c
mov eax, dword [0x43d00c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push str.costumDeviceIoControl
mov dword [ebp - 0x26c], edx
call dword [sym.imp.VMProtectSDK32.dll_VMProtectBegin]
mov eax, dword fs:[0x30]
mov byte [ebp - 0x25d], 0
mov edi, dword [eax + 0xc]
add edi, 0xc
mov esi, dword [edi]
cmp esi, edi
je 0x42d72e
mov ebx, dword [esi + 0x18]
push str.ntdll.dll
push dword [esi + 0x30]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
add esp, 8
test eax, eax
je 0x42d730
mov esi, dword [esi]
cmp esi, edi
jne 0x42d710
xor ebx, ebx
push 0
mov edx, str.NtDeviceIoControlFile
mov ecx, ebx
call fcn.0042e510
add esp, 4
mov dword [ebp - 0x264], eax
test eax, eax
je 0x42d9b7
mov esi, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 0x40
push 0x3000
push 0x20
push 0
call esi
push 0x40
push 0x3000
push 0x20
push 0
mov ebx, eax
call esi
push 0x40
push 0x3000
push 0x20
mov edi, eax
push 0
mov dword [ebp - 0x270], edi
call esi
push 0x40
push 0x3000
push 3
push 0
mov dword [ebp - 0x268], eax
call esi
mov esi, eax
mov dword [ebp - 0x278], esi
test ebx, ebx
je 0x42d9b7
test edi, edi
je 0x42d9b7
mov ecx, dword [ebp - 0x268]
test ecx, ecx
je 0x42d9b7
test esi, esi
je 0x42d9b7
mov edx, dword [ebp - 0x264]
push 0
push 0
push 3
mov eax, dword [edx]
mov dword [ebx], eax
movzx eax, byte [edx + 4]
mov byte [ebx + 4], al
mov eax, dword [edx + 5]
mov dword [edi], eax
movzx eax, byte [edx + 9]
mov byte [edi + 4], al
movzx eax, word [edx + 0xa]
mov word [ecx], ax
movzx eax, word [edx + 0xc]
mov word [esi], ax
movzx eax, byte [edx + 0xe]
mov byte [esi + 2], al
mov eax, edi
sub eax, ebx
mov byte [ebx + 5], 0xe9
sub eax, 0xa
mov dword [ebp - 0x264], 0
mov dword [ebx + 6], eax
mov eax, ecx
sub eax, edi
mov byte [edi + 5], 0xe9
sub eax, 0xa
mov dword [edi + 6], eax
mov eax, esi
push 0
push 3
sub eax, ecx
mov byte [ecx + 2], 0xe9
sub eax, 7
push 0xc0000000
mov dword [ecx + 3], eax
push str..PhysicalDrive0
mov byte [0x43d02d], 0x30
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
mov dword [ebp - 0x274], esi
cmp esi, 0xffffffff
je 0x42d967
push 0x18
lea eax, [ebp - 0x25c]
xorps xmm0, xmm0
push eax
push 0
push 0
push 0x74080
lea eax, [ebp - 0x244]
movq qword [ebp - 0x24c], xmm0
push eax
push 0
push 0
push 0
push esi
movups xmmword [ebp - 0x25c], xmm0
call ebx
test eax, eax
js 0x42d960
push 0x210
xorps xmm0, xmm0
mov byte [ebp - 0x21c], 0
lea eax, [ebp - 0x218]
push 0
push eax
movups xmmword [ebp - 0x23c], xmm0
movups xmmword [ebp - 0x22c], xmm0
call sub.VCRUNTIME140.dll_memset
mov al, byte [ebp - 0x259]
add esp, 0xc
and al, 0x10
mov word [ebp - 0x237], 0x101
neg al
mov byte [ebp - 0x233], 0xa0
mov byte [ebp - 0x230], 0
sbb al, al
mov dword [ebp - 0x23c], 0x200
and al, 0xb5
push 0x210
add al, 0xec
mov byte [ebp - 0x232], al
lea eax, [ebp - 0x218]
push eax
push 0x21
lea eax, [ebp - 0x23c]
push eax
push 0x7c088
lea eax, [ebp - 0x244]
push eax
push 0
push 0
push 0
push esi
call ebx
test eax, eax
js 0x42d960
cmp byte [ebp - 0x214], 0
jne 0x42d960
mov edi, dword [ebp - 0x26c]
lea esi, [ebp - 0x208]
mov ecx, 0x80
mov dword [ebp - 0x264], 1
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x270]
mov esi, dword [ebp - 0x274]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [sym.imp.KERNEL32.dll_VirtualFree]
push 0x8000
push 0
push ebx
call esi
push 0x8000
push 0
push edi
call esi
mov eax, dword [ebp - 0x268]
push 0x8000
push 0
push eax
call esi
push 0x8000
push 0
push dword [ebp - 0x278]
call esi
mov al, byte [ebp - 0x264]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00432001
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x25d]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.00432001
mov esp, ebp
pop ebp
ret