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

Disassembly:
call dword [sym.imp.kernel32.dll_GetCommandLineA]
mov esi, eax
mov edi, 0x40156f
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 0x401277
cmp al, 0x20
jne 0x401019
lodsb al, byte [esi]
or al, al
je 0x401277
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 0x401277
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 0x401328
push 0x40156f
call dword [sym.imp.kernel32.dll_GetLongPathNameA]
push 0x401461
push 0x40156f
push 0x104
push 0x401328
call dword [sym.imp.kernel32.dll_GetFullPathNameA]
push 0x40156f
call dword [sym.imp.shlwapi.dll_PathFileExistsA]
cmp eax, 1
jne 0x401277
push 0x40156f
call dword [sym.imp.shlwapi.dll_PathIsDirectoryA]
cmp eax, 0
jne 0x401277
push 0x40156f
push 0x40146b
call dword [sym.imp.kernel32.dll_lstrcpyA]
push 0x4012e3
push 0x40146b
call dword [sym.imp.kernel32.dll_lstrcatA]
push 0
push 0x40156f
call dword [sym.imp.kernel32.dll__lopen]
cmp eax, 0xffffffff
je 0x401277
mov dword [0x40145d], eax
push 0
push dword [0x40145d]
call dword [sym.imp.kernel32.dll_GetFileSize]
mov dword [0x401467], eax
push 0
push 0
push 2
push 0
push 0
push 0x40000000
push 0x40146b
call dword [sym.imp.kernel32.dll_CreateFileA]
mov dword [0x401459], eax
push dword [0x401461]
push 0x40127f
push 0x401328
call dword [sym.imp.user32.dll_wsprintfA]
add esp, 0xc
push eax
push 0x401328
push dword [0x401459]
call dword [sym.imp.kernel32.dll__lwrite]
mov word [0x401465], 0
push 0x2d
push 0x40142c
call dword [sym.imp.kernel32.dll_RtlZeroMemory]
push 0x104
push 0x401328
call dword [sym.imp.kernel32.dll_RtlZeroMemory]
mov edi, 0x401328
push 0x2d
push 0x40142c
push dword [0x40145d]
call dword [sym.imp.kernel32.dll__lread]
or eax, eax
je 0x40122c
mov ebx, eax
mov ecx, eax
mov al, byte [eax + 0x4012e8]
stosb byte es:[edi], al
mov esi, 0x40142c
lodsb al, byte [esi]
ror word [0x401465], 1
movzx ax, al
add word [0x401465], ax
loop 0x40119a
mov ecx, ebx
mov esi, 0x40142c
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
mov al, byte [eax + 0x4012e8]
stosb byte es:[edi], al
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
mov al, byte [eax + 0x4012e8]
stosb byte es:[edi], al
mov eax, ebx
shr eax, 6
and eax, 0x3f
mov al, byte [eax + 0x4012e8]
stosb byte es:[edi], al
mov eax, ebx
and eax, 0x3f
mov al, byte [eax + 0x4012e8]
stosb byte es:[edi], al
cmp ecx, 3
jbe 0x401204
sub ecx, 3
jmp 0x4011b6
mov eax, 0xa0d
stosd dword es:[edi], eax
push 0x401328
call dword [sym.imp.kernel32.dll_lstrlenA]
push eax
push 0x401328
push dword [0x401459]
call dword [sym.imp.kernel32.dll__lwrite]
jmp 0x40114d
movzx edx, word [0x401465]
push dword [0x401467]
push edx
push 0x4012c7
push 0x401328
call dword [sym.imp.user32.dll_wsprintfA]
add esp, 0x10
push eax
push 0x401328
push dword [0x401459]
call dword [sym.imp.kernel32.dll__lwrite]
push dword [0x401459]
call dword [sym.imp.kernel32.dll__lclose]
push dword [0x40145d]
call dword [sym.imp.kernel32.dll__lclose]
push 0
call dword [sym.imp.kernel32.dll_ExitProcess]