Function at 0x401000
Capabilities:
Accept command line arguments
Check if file exists
Get file size
Terminate process

Disassembly:
call dword [sym.imp.kernel32.dll_GetCommandLineA]
mov esi, eax
mov edi, 0x4014fa
lodsb al, byte [esi]
cmp al, 0x22
jne 0x401019
lodsb al, byte [esi]
cmp al, 0x22
jne 0x401012
jmp 0x401026
lodsb al, byte [esi]
or al, al
je 0x40127b
cmp al, 0x20
jne 0x401019
lodsb al, byte [esi]
or al, al
je 0x40127b
cmp al, 0x20
je 0x401026
cmp al, 0x22
jne 0x401048
lodsb al, byte [esi]
stosb byte es:[edi], al
lodsb al, byte [esi]
cmp al, 0x22
je 0x401052
or al, al
je 0x40127b
jmp 0x401038
stosb byte es:[edi], al
lodsb al, byte [esi]
cmp al, 0x20
je 0x401052
or al, al
jne 0x401048
xor eax, eax
stosb byte es:[edi], al
push 0x104
push 0x4012b3
push 0x4014fa
call dword [sym.imp.kernel32.dll_GetLongPathNameA]
push 0x4013ec
push 0x4014fa
push 0x104
push 0x4012b3
call dword [sym.imp.kernel32.dll_GetFullPathNameA]
push 0x4014fa
call dword [sym.imp.shlwapi.dll_PathFileExistsA]
cmp eax, 1
jne 0x40127b
push 0x4014fa
call dword [sym.imp.shlwapi.dll_PathIsDirectoryA]
cmp eax, 0
jne 0x40127b
push 0x4014fa
push 0x4013f6
call dword [sym.imp.kernel32.dll_lstrcpyA]
push 0x4012ae
push 0x4013f6
call dword [sym.imp.kernel32.dll_lstrcatA]
push 0
push 0x4014fa
call dword [sym.imp.kernel32.dll__lopen]
cmp eax, 0xffffffff
je 0x40127b
mov dword [0x4013e8], eax
push 0
push dword [0x4013e8]
call dword [sym.imp.kernel32.dll_GetFileSize]
mov dword [0x4013f2], eax
push 0
push 0
push 2
push 0
push 0
push 0x40000000
push 0x4013f6
call dword [sym.imp.kernel32.dll_CreateFileA]
mov dword [0x4013e4], eax
push dword [0x4013ec]
push 0x401283
push 0x4012b3
call dword [sym.imp.user32.dll_wsprintfA]
add esp, 0xc
push eax
push 0x4012b3
push dword [0x4013e4]
call dword [sym.imp.kernel32.dll__lwrite]
mov word [0x4013f0], 0
push 0x2d
push 0x4013b7
call dword [sym.imp.kernel32.dll_RtlZeroMemory]
push 0x104
push 0x4012b3
call dword [sym.imp.kernel32.dll_RtlZeroMemory]
mov edi, 0x4012b3
push 0x2d
push 0x4013b7
push dword [0x4013e8]
call dword [sym.imp.kernel32.dll__lread]
or eax, eax
je 0x401230
mov ebx, eax
mov ecx, eax
add al, 0x20
stosb byte es:[edi], al
mov esi, 0x4013b7
lodsb al, byte [esi]
ror word [0x4013f0], 1
movzx ax, al
add word [0x4013f0], ax
loop 0x401196
mov ecx, ebx
mov esi, 0x4013b7
xor eax, eax
lodsb al, byte [esi]
shl eax, 8
lodsb al, byte [esi]
shl eax, 8
lodsb al, byte [esi]
mov ebx, eax
shr eax, 0x12
and eax, 0x3f
add al, 0x20
cmp al, 0x20
jne 0x4011cd
mov al, 0x60
stosb byte es:[edi], al
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
add al, 0x20
cmp al, 0x20
jne 0x4011de
mov al, 0x60
stosb byte es:[edi], al
mov eax, ebx
shr eax, 6
and eax, 0x3f
add al, 0x20
cmp al, 0x20
jne 0x4011ef
mov al, 0x60
stosb byte es:[edi], al
mov eax, ebx
and eax, 0x3f
add al, 0x20
cmp al, 0x20
jne 0x4011fd
mov al, 0x60
stosb byte es:[edi], al
cmp ecx, 3
jbe 0x401208
sub ecx, 3
jmp 0x4011b2
mov eax, 0xa0d
stosd dword es:[edi], eax
push 0x4012b3
call dword [sym.imp.kernel32.dll_lstrlenA]
push eax
push 0x4012b3
push dword [0x4013e4]
call dword [sym.imp.kernel32.dll__lwrite]
jmp 0x40114d
movzx edx, word [0x4013f0]
push dword [0x4013f2]
push edx
push 0x401292
push 0x4012b3
call dword [sym.imp.user32.dll_wsprintfA]
add esp, 0x10
push eax
push 0x4012b3
push dword [0x4013e4]
call dword [sym.imp.kernel32.dll__lwrite]
push dword [0x4013e4]
call dword [sym.imp.kernel32.dll__lclose]
push dword [0x4013e8]
call dword [sym.imp.kernel32.dll__lclose]
push 0
call dword [sym.imp.kernel32.dll_ExitProcess]