Function at 0x10003b70
Capabilities:
Accept command line arguments
Copy file
Delete directory
Get common file path
Query environment variable
Set uefi variable
Terminate thread

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x10c
push ebx
push esi
push edi
mov ebx, ecx
mov dword [esp + 0x10], ecx
call fcn.100034e0
test al, al
je 0x10003b90
call ebx
mov eax, dword [0x100564f0]
mov eax, dword [eax + 0xee0]
mov dword [esp + 0xc], eax
test ebx, ebx
jne 0x10003d2f
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentConsoleFontEx]
push ebx
push ebx
call dword [sym.imp.GDI32.dll_SetColorAdjustment]
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetProfileStringW]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
push ebx
push ebx
call dword [sym.imp.GDI32.dll_GetCurrentObject]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetCommState]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryTransactedW]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetConsoleTitleW]
push ebx
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryW]
push ebx
call dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetConsoleDisplayMode]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_LockFileEx]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetThreadPreferredUILanguages]
call dword [sym.imp.KERNEL32.dll_SetFileApisToANSI]
push ebx
call dword [sym.imp.KERNEL32.dll_GetPriorityClass]
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_ModifyWorldTransform]
push ebx
call dword [sym.imp.KERNEL32.dll_FlsAlloc]
push ebx
call dword [sym.imp.KERNEL32.dll_DisassociateCurrentThreadFromCallback]
push ebx
call dword [sym.imp.GDI32.dll_RealizePalette]
call dword [sym.imp.KERNEL32.dll_GetErrorMode]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_IntersectClipRect]
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_GdiComment]
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MapUserPhysicalPages]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CopyFileExW]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_CombineRgn]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_PlgBlt]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetWaitableTimerEx]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetFirmwareEnvironmentVariableExW]
push ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
push ebx
call dword [sym.imp.KERNEL32.dll_GetStartupInfoW]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_SetViewportExtEx]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetCommModemStatus]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetFirmwareEnvironmentVariableW]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_GetCharWidthI]
push ebx
call dword [sym.imp.KERNEL32.dll_SetConsoleActiveScreenBuffer]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_CreateDIBitmap]
mov ecx, dword [0x100552e0]
jmp 0x10003d3f
mov ecx, dword [0x100552e0]
mov ebx, dword [ecx + 0x9cc]
mov dword [esp + 0x10], ebx
xor eax, eax
mov byte [esp + eax + 0x18], al
inc eax
cmp eax, 0x100
jl 0x10003d41
mov ebx, dword [ecx + 0x74c]
xor edi, edi
xor esi, esi
mov dl, byte [esp + esi + 0x18]
mov eax, esi
and eax, 0xf
movzx ecx, dl
movzx eax, byte [eax + ebx]
add edi, eax
add edi, ecx
and edi, 0x800000ff
jns 0x10003d7b
dec edi
or edi, 0xffffff00
inc edi
mov al, byte [esp + edi + 0x18]
mov byte [esp + esi + 0x18], al
inc esi
mov byte [esp + edi + 0x18], dl
cmp esi, 0x100
jl 0x10003d57
mov ebx, dword [esp + 0x10]
xor esi, esi
xor edi, edi
mov dword [esp + 0x14], esi
cmp dword [esp + 0xc], esi
jle 0x10003df8
inc esi
and esi, 0x800000ff
jns 0x10003db3
dec esi
or esi, 0xffffff00
inc esi
mov cl, byte [esp + esi + 0x18]
movzx edx, cl
add edi, edx
and edi, 0x800000ff
jns 0x10003dcc
dec edi
or edi, 0xffffff00
inc edi
mov al, byte [esp + edi + 0x18]
mov byte [esp + esi + 0x18], al
mov byte [esp + edi + 0x18], cl
movzx eax, byte [esp + esi + 0x18]
mov ecx, dword [esp + 0x14]
add eax, edx
movzx eax, al
mov al, byte [esp + eax + 0x18]
xor byte [ecx + ebx], al
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, dword [esp + 0xc]
jl 0x10003da2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret