Function at 0x401230
Capabilities:
Read file on windows
Write file on windows

Disassembly:
sub esp, 0x48
push ebx
push esi
xor ebx, ebx
lea eax, [esp + 0x18]
push 0x38
push str.1.3.1
push eax
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], ebx
call fcn.0040aeb0
mov esi, eax
add esp, 0xc
test esi, esi
je 0x401284
mov eax, dword [esp + 0x58]
push esi
add eax, 0x12
push eax
push str.Failed_to_extract__s:_inflateInit___failed_with_return_code__d__n
call fcn.004024b0
add esp, 0xc
or eax, 0xffffffff
pop esi
pop ebx
add esp, 0x48
ret
push 0x2000
call fcn.0041040c
add esp, 4
mov dword [esp + 0x10], eax
test eax, eax
jne 0x4012c1
call fcn.004103d3
mov ecx, eax
mov eax, dword [esp + 0x58]
add eax, 0x12
push eax
push str.Failed_to_extract__s:_failed_to_allocate_temporary_input_buffer__n
push dword [ecx]
push str.malloc
call fcn.00402630
add esp, 0x10
jmp 0x4013ee
push 0x2000
call fcn.0041040c
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x4012fa
call fcn.004103d3
mov ecx, dword [esp + 0x58]
add ecx, 0x12
push ecx
push str.Failed_to_extract__s:_failed_to_allocate_temporary_output_buffer__n
push dword [eax]
push str.malloc
call fcn.00402630
add esp, 0x10
jmp 0x4013ee
mov eax, dword [esp + 0x58]
xor ecx, ecx
push ebp
mov ebp, dword [esp + 0x60]
push edi
mov eax, dword [eax + 8]
mov edi, dword [esp + 0x68]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
test ecx, ecx
jb 0x401329
ja 0x401322
cmp eax, 0x2000
jbe 0x401329
mov esi, 0x2000
jmp 0x40132b
mov esi, eax
push dword [esp + 0x5c]
push esi
push 1
push dword [esp + 0x24]
call fcn.0040d91e
add esp, 0x10
cmp eax, esi
jne 0x4013e9
push dword [esp + 0x5c]
call fcn.0040d70c
add esp, 4
test eax, eax
jne 0x4013e9
sub dword [esp + 0x10], esi
mov dword [esp + 0x24], esi
sbb dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], eax
nop
lea eax, [esp + 0x20]
mov dword [esp + 0x30], 0x2000
push 0
push eax
mov dword [esp + 0x34], ebx
call fcn.00409500
add esp, 8
mov dword [esp + 0x1c], eax
lea ecx, [eax + 4]
cmp ecx, 6
ja case.0x40139e.1
movzx ecx, byte [ecx + 0x401474]
jmp dword [ecx*4 + 0x401468]
mov esi, 0x2000
sub esi, dword [esp + 0x30]
test ebp, ebp
je 0x401412
push ebp
push esi
push 1
push ebx
call fcn.0040df4f
add esp, 0x10
cmp eax, esi
jne 0x4013d0
push ebp
call fcn.0040d70c
add esp, 4
test eax, eax
je 0x401423
or eax, 0xffffffff
push eax
mov eax, dword [esp + 0x64]
add eax, 0x12
push eax
push str.Failed_to_extract__s:_decompression_resulted_in_return_code__d__n
call fcn.004024b0
add esp, 0xc
or esi, 0xffffffff
pop edi
pop ebp
lea eax, [esp + 0x18]
push eax
call fcn.0040acb0
push dword [esp + 0x14]
call fcn.004103f1
push ebx
call fcn.004103f1
add esp, 0xc
mov eax, esi
pop esi
pop ebx
add esp, 0x48
ret
test edi, edi
je 0x401427
push esi
push ebx
push edi
call fcn.0040c350
add esp, 0xc
add edi, esi
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x30], 0
je 0x401370
cmp eax, 1
je 0x401461
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x401445
cmp dword [esp + 0x10], ecx
jbe 0x4013d3
mov eax, dword [esp + 0x10]
jmp 0x401315
mov eax, 0xfffffffd
jmp 0x4013d3
cmp eax, 1
jne 0x4013d3
xor esi, esi
jmp 0x4013ec