Function at 0x403ec0
Capabilities:
Read file on windows
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xb4
mov eax, dword [0x422004]
xor eax, esp
mov dword [esp + 0xb0], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
xor ebx, ebx
mov dword [esp + 0x44], eax
mov esi, 1
mov dword [esp + 0x48], ebx
push edi
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x58], 0xffffffff
mov dword [esp + 0x54], ebx
cmp dword [ebp + 8], esi
jle 0x404700
nop dword [eax + eax]
mov edi, dword [eax + esi*4]
mov ecx, 0x41fd00
inc esi
mov eax, edi
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403f40
test dl, dl
je 0x403f3c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403f40
add eax, 2
add ecx, 2
test dl, dl
jne 0x403f20
xor eax, eax
jmp 0x403f45
sbb eax, eax
or eax, 1
test eax, eax
je 0x4046de
mov ecx, 0x41fd04
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403f74
test dl, dl
je 0x403f70
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403f74
add eax, 2
add ecx, 2
test dl, dl
jne 0x403f54
xor eax, eax
jmp 0x403f79
sbb eax, eax
or eax, 1
test eax, eax
jne 0x403f8b
mov ecx, dword [esp + 0x54]
inc ecx
mov dword [esp + 0x54], ecx
jmp 0x4040a8
mov ecx, str._encode
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403fb2
test dl, dl
je 0x403fae
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403fb2
add eax, 2
add ecx, 2
test dl, dl
jne 0x403f92
xor eax, eax
jmp 0x403fb7
sbb eax, eax
or eax, 1
test eax, eax
jne 0x403fca
mov ecx, dword [esp + 0x54]
xor edx, edx
mov dword [esp + 0x58], edx
jmp 0x4040ac
mov ecx, str._decode
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403ff1
test dl, dl
je 0x403fed
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403ff1
add eax, 2
add ecx, 2
test dl, dl
jne 0x403fd1
xor eax, eax
jmp 0x403ff6
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40400c
mov ecx, dword [esp + 0x54]
mov edx, 1
mov dword [esp + 0x58], edx
jmp 0x4040ac
mov ecx, 0x41fd18
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404033
test dl, dl
je 0x40402f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404033
add eax, 2
add ecx, 2
test dl, dl
jne 0x404013
xor eax, eax
jmp 0x404038
sbb eax, eax
or eax, 1
test eax, eax
jne 0x404046
test ebx, ebx
jne 0x404046
lea ecx, [esp + 0x4c]
jmp 0x40408d
mov ecx, 0x41fd1c
mov eax, edi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404070
test dl, dl
je 0x40406c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404070
add eax, 2
add ecx, 2
test dl, dl
jne 0x404050
xor eax, eax
jmp 0x404075
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4046a5
mov ecx, dword [esp + 0x5c]
test ecx, ecx
jne 0x4046a5
lea ecx, [esp + 0x5c]
mov eax, dword [esp + 0x48]
cmp esi, dword [ebp + 8]
je 0x40466d
mov eax, dword [eax + esi*4]
inc esi
mov dword [ecx], eax
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x48]
cmp esi, dword [ebp + 8]
jl 0x403f10
test edx, edx
js 0x404700
test ecx, ecx
jle 0x404137
test edx, edx
jne 0x4040d0
push str.LZFSE_encode_n
jmp 0x4040da
cmp edx, 1
jne 0x4040ed
push str.LZFSE_decode_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 8
test ebx, ebx
mov eax, str.stdin
cmovne eax, ebx
push eax
push str.Input:__s_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
mov ecx, dword [esp + 0x68]
add esp, 0xc
test ecx, ecx
mov eax, str.stdout
cmovne eax, ecx
push eax
push str.Output:__s_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
mov esi, dword [esp + 0x4c]
xor ebx, ebx
mov dword [esp + 0x6c], ebx
push 0x8000
test esi, esi
je 0x404189
push esi
call fcn.0040a69d
add esp, 8
mov dword [esp + 0x50], eax
test eax, eax
js 0x404721
lea ecx, [esp + 0x88]
push ecx
push eax
call fcn.00408f04
add esp, 8
test eax, eax
jne 0x404731
mov esi, dword [esp + 0x9c]
cmp esi, 0xffffffff
jbe 0x4041a5
jmp 0x404741
push 0
mov esi, 0x100000
mov dword [esp + 0x58], ebx
call fcn.004097f7
add esp, 8
cmp eax, 0xffffffff
je 0x404760
push esi
call fcn.0040709c
mov edi, eax
add esp, 4
mov dword [esp + 0x48], edi
test edi, edi
je 0x404774
nop dword [eax]
cmp ebx, esi
jne 0x4041ee
cmp esi, 0x6400000
jae 0x4041d0
add esi, esi
jmp 0x4041d6
add esi, 0x6400000
push esi
push edi
call fcn.0040751b
add esp, 8
test eax, eax
je 0x404788
mov edi, eax
mov dword [esp + 0x48], edi
mov eax, esi
sub eax, ebx
push eax
lea eax, [edi + ebx]
push eax
push dword [esp + 0x58]
call fcn.0040af17
add esp, 0xc
test eax, eax
js 0x40465b
je 0x404215
add ebx, eax
mov dword [esp + 0x6c], ebx
jmp 0x4041c0
cmp dword [esp + 0x4c], 0
je 0x404228
push dword [esp + 0x50]
call fcn.0040bd10
add esp, 4
cmp dword [esp + 0x54], 0
jle 0x404248
push ebx
push str.Input_size:__zu_B_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
cmp dword [esp + 0x58], 0
jne 0x40425c
mov edi, ebx
mov dword [esp + 0x4c], ebx
mov esi, 0xa7134
jmp 0x40426c
lea edi, [ebx*4]
mov esi, 0xb8dc
mov dword [esp + 0x4c], edi
push esi
call fcn.0040709c
add esp, 4
mov dword [esp + 0x7c], eax
test esi, esi
je 0x404285
test eax, eax
je 0x4047a5
push edi
call fcn.0040709c
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x4047b9
call fcn.00403e40
mov esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x48]
movsd qword [esp + 0x80], xmm0
lea ecx, [eax + esi]
mov dword [esp + 0x70], ecx
cmp dword [esp + 0x58], 0
jne 0x404326
mov edx, dword [esp + 0x7c]
mov ecx, edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x50], 0
test edx, edx
jne 0x4042f9
push 0xa7135
call fcn.0040709c
mov ecx, eax
mov dword [esp + 0x64], eax
add esp, 4
mov dword [esp + 0x50], 1
test ecx, ecx
je 0x4043c1
mov eax, dword [esp + 0x48]
push ecx
push esi
push eax
mov edx, edi
mov ecx, ebx
call fcn.004021d0
add esp, 0xc
mov edi, eax
cmp dword [esp + 0x50], 0
je 0x4043ac
push dword [esp + 0x60]
call fcn.00407097
add esp, 4
jmp 0x4043ac
mov eax, dword [esp + 0x7c]
mov esi, eax
mov dword [esp + 0x60], 0
test eax, eax
jne 0x404353
push 0xb8dd
call fcn.0040709c
mov esi, eax
mov dword [esp + 0x64], 1
add esp, 4
test esi, esi
je 0x4043c1
push 0xb8dc
push 0
push esi
call fcn.00406820
mov eax, dword [esp + 0x54]
add esp, 0xc
mov dword [esi], eax
mov ecx, esi
mov dword [esi + 4], eax
mov eax, dword [esp + 0x70]
mov dword [esi + 8], eax
lea eax, [ebx + edi]
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], eax
call fcn.00401890
cmp eax, 0xfffffffe
je 0x404398
test eax, eax
je 0x404393
xor edi, edi
jmp 0x404398
mov edi, dword [esi + 0xc]
sub edi, ebx
cmp dword [esp + 0x60], 0
je 0x4043a8
push esi
call fcn.00407097
add esp, 4
mov esi, dword [esp + 0x6c]
test edi, edi
je 0x4043bd
cmp dword [esp + 0x58], 1
jne 0x404407
cmp edi, dword [esp + 0x4c]
jne 0x404407
mov edi, dword [esp + 0x4c]
cmp dword [esp + 0x54], 0
jle 0x4043e0
push str.Output_buffer_was_too_small__increasing_size..._n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 8
add edi, edi
push edi
push ebx
mov dword [esp + 0x54], edi
call fcn.0040751b
add esp, 8
test eax, eax
je 0x404640
mov esi, dword [esp + 0x6c]
mov ebx, eax
mov eax, dword [esp + 0x48]
jmp 0x4042b5
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x404457
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x404457
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
call fcn.004189f0
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
movsd qword [esp + 0x70], xmm0
call fcn.004189f0
movsd xmm1, qword [esp + 0x70]
divsd xmm1, xmm0
movsd qword [esp + 0x70], xmm1
jmp 0x40447f
call dword [sym.imp.KERNEL32.dll_GetTickCount]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x41fee0]
mulsd xmm0, qword [0x41feb8]
movsd qword [esp + 0x70], xmm0
cmp dword [esp + 0x54], 0
jle 0x40455c
push edi
push str.Output_size:__zu_B_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
mov ecx, dword [esp + 0x64]
mov eax, edi
test ecx, ecx
cmove eax, esi
movd xmm0, eax
shr eax, 0x1f
test ecx, ecx
cvtdq2pd xmm0, xmm0
cmove esi, edi
add esp, 4
movd xmm1, esi
addsd xmm0, qword [eax*8 + 0x41fee0]
cvtdq2pd xmm1, xmm1
shr esi, 0x1f
movsd qword [esp + 0x68], xmm0
addsd xmm1, qword [esi*8 + 0x41fee0]
divsd xmm0, xmm1
movsd qword [esp], xmm0
push str.Compression_ratio:__.3f_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
movsd xmm1, qword [esp + 0x70]
mulsd xmm1, qword [0x41feb0]
movsd xmm3, qword [esp + 0x80]
subsd xmm3, qword [esp + 0x90]
mulsd xmm1, qword [0x41feb0]
divsd xmm1, xmm3
mulsd xmm3, qword [0x41fec0]
movsd qword [esp + 8], xmm1
divsd xmm3, qword [esp + 0x70]
movsd qword [esp], xmm3
push str.Speed:__.2f_ns_B___.2f_MB_s_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0x18
mov esi, dword [esp + 0x5c]
test esi, esi
je 0x404586
push 0x80
push 0x8301
push esi
call fcn.0040a69d
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x50], ecx
test ecx, ecx
jns 0x4045ab
jmp 0x4047cd
push 0x8000
push 1
mov dword [esp + 0x58], 1
call fcn.004097f7
add esp, 8
cmp eax, 0xffffffff
je 0x4047dd
mov ecx, 1
xor esi, esi
test edi, edi
je 0x4045d3
mov eax, edi
sub eax, esi
push eax
lea eax, [esi + ebx]
push eax
push ecx
call fcn.0040b96f
add esp, 0xc
test eax, eax
js 0x40462e
je 0x404624
mov ecx, dword [esp + 0x50]
add esi, eax
cmp esi, edi
jb 0x4045b1
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x4045e8
mov eax, dword [esp + 0x50]
push eax
call fcn.0040bd10
add esp, 4
push dword [esp + 0x48]
call fcn.00407097
add esp, 4
push ebx
call fcn.00407097
mov eax, dword [esp + 0x80]
add esp, 4
push eax
call fcn.00407097
mov ecx, dword [esp + 0xc0]
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00405988
mov esp, ebp
pop ebp
ret
push str.Failed_to_write_to_output_file_n
jmp 0x404746
push str.write
call fcn.0040747f
add esp, 4
jmp 0x404759
push ebx
call fcn.00407097
add esp, 4
push str.malloc
call fcn.0040747f
add esp, 4
jmp 0x404759
push str.read
call fcn.0040747f
add esp, 4
jmp 0x404759
push dword [eax]
push str.Usage:__s__encode_decode___i_input_file____o_output_file____h____v__n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
push edi
push str.Error:_Missing_arg_after__s_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
jmp 0x404759
mov eax, dword [esp + 0x48]
push dword [eax]
push str.Usage:__s__encode_decode___i_input_file____o_output_file____h____v__n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
push edi
push str.Error:_invalid_flag__s_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
jmp 0x404759
mov eax, dword [esp + 0x48]
push dword [eax]
push str.Usage:__s__encode_decode___i_input_file____o_output_file____h____v__n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
push 0
jmp 0x40475b
push dword [eax]
push str.Usage:__s__encode_decode___i_input_file____o_output_file____h____v__n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 0xc
push str.Error:__encode_decode_required_n
jmp 0x404746
push esi
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push esi
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push str.File_is_too_large_n
push 2
call fcn.004073d7
add esp, 4
push eax
call fcn.00403e10
add esp, 8
push 1
call fcn.004072f9
push str.setmode
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push str.malloc
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push edi
call fcn.00407097
add esp, 4
push str.malloc
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push str.malloc
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push str.malloc
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push esi
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
push str.setmode
call fcn.0040747f
add esp, 4
push 1
call fcn.004072f9
int3