Function at 0x401070
Capabilities:
Execute command
Read file on windows
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x10020
call fcn.00402220
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebp + 8], 3
push edi
mov edi, dword [ebp + 0xc]
je 0x4010be
push str.Usage:_compress__input_file___output_file__n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
add esp, 8
mov eax, 1
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040144c
mov esp, ebp
pop ebp
ret
push ebx
mov ebx, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
push esi
push 0x403144
push dword [edi + 4]
call ebx
mov esi, eax
add esp, 8
test esi, esi
jne 0x401106
push str.Could_not_open_input_file_for_reading._n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
add esp, 8
lea eax, [esi + 2]
pop esi
pop ebx
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040144c
mov esp, ebp
pop ebp
ret
push 0x8000
lea eax, [ebp - 0x8004]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push esi
push 0x8000
lea eax, [ebp - 0x8004]
push 1
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
add esp, 0x1c
mov dword [ebp - 0x10020], eax
cmp eax, 0x8000
jl 0x40116d
push str.The_input_file_is_too_large_for_compressing__n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
add esp, 8
mov eax, 3
pop esi
pop ebx
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040144c
mov esp, ebp
pop ebp
ret
test eax, eax
jg 0x4011a0
push str.The_input_file_is_empty._n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
add esp, 8
mov eax, 3
pop esi
pop ebx
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040144c
mov esp, ebp
pop ebp
ret
push esi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
push 0x4031bc
push dword [edi + 8]
call ebx
add esp, 0xc
mov dword [ebp - 0x10014], eax
test eax, eax
jne 0x4011ed
push str.Could_not_open_output_file_for_writing._n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
add esp, 8
mov eax, 2
pop esi
pop ebx
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040144c
mov esp, ebp
pop ebp
ret
push 0x8000
lea eax, [ebp - 0x10004]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
xor edi, edi
xor edx, edx
mov dword [ebp - 0x10018], edx
nop dword [eax]
xor ecx, ecx
mov dword [ebp - 0x10010], 0
mov si, word [ebp - 0x10010]
xor bl, bl
xor al, al
mov byte [ebp - 0x10005], bl
mov dword [ebp - 0x1001c], ecx
mov dword [ebp - 0x1000c], ecx
test edx, edx
jle 0x4012ac
nop dword [eax]
cmp al, 0xff
jae 0x4012a2
movzx edx, al
add edx, dword [ebp - 0x10018]
movsx ecx, si
mov cl, byte [ebp + ecx - 0x8004]
cmp cl, byte [ebp + edx - 0x8004]
jne 0x401264
inc al
jmp 0x401288
cmp al, bl
jb 0x401279
movzx ecx, si
mov bl, al
mov dword [ebp - 0x1001c], ecx
mov dword [ebp - 0x1000c], ecx
movzx eax, al
sub si, ax
xor al, al
mov word [ebp - 0x10010], si
inc dword [ebp - 0x10010]
mov si, word [ebp - 0x10010]
mov edx, dword [ebp - 0x10018]
movsx ecx, si
cmp ecx, edx
jl 0x401240
mov byte [ebp - 0x10005], bl
cmp al, bl
jb 0x4012bf
mov bl, al
movzx ecx, si
mov byte [ebp - 0x10005], bl
mov dword [ebp - 0x1000c], ecx
jmp 0x4012c5
mov ecx, dword [ebp - 0x1001c]
cmp bl, 4
jb 0x401382
xor esi, esi
test edi, edi
jle 0x401335
push dword [ebp - 0x10014]
cmp edi, 0x80
mov eax, 0x80
mov ebx, edi
cmova ebx, eax
push 1
push 1
lea eax, [ebx - 1]
or al, 0x80
mov byte [ebp - 0x10006], al
lea eax, [ebp - 0x10006]
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push dword [ebp - 0x10014]
lea eax, [ebp - 0x10004]
push ebx
add eax, esi
push 1
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
sub edi, ebx
add esp, 0x20
add esi, ebx
test edi, edi
jg 0x4012d4
mov bl, byte [ebp - 0x10005]
mov ecx, dword [ebp - 0x1000c]
mov esi, dword [ebp - 0x10014]
movzx eax, bl
mov ebx, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
sub cx, ax
ror cx, 8
push esi
movzx eax, cx
push 1
mov dword [ebp - 0x1000c], eax
lea eax, [ebp - 0x1000c]
push 2
push eax
call ebx
push esi
push 1
lea eax, [ebp - 0x10005]
push 1
push eax
call ebx
movzx eax, byte [ebp - 0x10005]
add esp, 0x20
mov edx, dword [ebp - 0x10018]
jmp 0x401396
mov al, byte [ebp + edx - 0x8004]
mov byte [ebp + edi - 0x10004], al
inc edi
mov eax, 1
mov ebx, dword [ebp - 0x10020]
add edx, eax
push ebx
push edx
push str.Position:__d__d_n
mov dword [ebp - 0x10018], edx
call fcn.00401040
mov edx, dword [ebp - 0x10018]
add esp, 0xc
cmp edx, ebx
jl 0x401210
test edi, edi
jle 0x40141f
lea esi, [ebp - 0x10004]
nop dword [eax + eax]
push dword [ebp - 0x10014]
cmp edi, 0x80
mov eax, 0x80
mov ebx, edi
cmova ebx, eax
push 1
push 1
lea eax, [ebx - 1]
or al, 0x80
mov byte [ebp - 0x10006], al
lea eax, [ebp - 0x10006]
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push dword [ebp - 0x10014]
push ebx
push 1
push esi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
add edi, 0xffffff80
add esp, 0x20
sub esi, 0xffffff80
test edi, edi
jg 0x4013d0
push dword [ebp - 0x10014]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
push str.pause
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_system]
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
xor eax, eax
pop esi
pop ebx
pop edi
call fcn.0040144c
mov esp, ebp
pop ebp
ret