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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1454
call fcn.004b8290
mov eax, dword [0x5005d0]
xor eax, esp
mov dword [esp + 0x1450], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0xc]
xor ebx, ebx
mov esi, 0x7ff
push esi
mov dword [esp + 0x4c], eax
lea eax, [esp + 0xc5d]
push ebx
push eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x38], ebx
mov byte [esp + 0xc64], bl
call fcn.004a7110
add esp, 0xc
push esi
lea eax, [esp + 0x5d]
push ebx
push eax
mov byte [esp + 0x64], bl
call fcn.004a7110
mov edx, dword [esp + 0x40]
xor eax, eax
lea edi, [esp + 0x5c]
add esp, 0xc
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x24], ebx
stosd dword es:[edi], eax
mov dword [esp + 0x38], ebx
call fcn.00475851
test eax, eax
je 0x401d97
xor eax, eax
jmp 0x4024cc
push dword [esp + 0x34]
mov edi, 0x800
mov ecx, edi
lea eax, [esp + 0x5c]
call fcn.00475883
pop ecx
call fcn.00498efc
mov esi, eax
call fcn.004a75cc
add eax, esi
xor edx, edx
mov ecx, 0x1869f
div ecx
mov eax, edi
lea edi, [esp + 0x58]
push edx
push str.__d.tmp
call fcn.00476dc8
mov esi, dword [esp + 0x3c]
push 0x31e
mov edi, str..Archive.c
push edi
mov edx, 0x4c520c
mov ecx, esi
call fcn.0041a89d
add esp, 0x10
cmp eax, ebx
mov dword [esp + 0x10], eax
jne 0x401e03
mov edi, esi
call fcn.00418e6b
jmp 0x401d90
push 0x325
push edi
mov edx, 0x4c53b4
lea ecx, [esp + 0x60]
call fcn.0041a89d
cmp eax, ebx
pop ecx
pop ecx
mov dword [esp + 0xc], eax
jne 0x401e2f
mov ecx, dword [esp + 0x10]
call fcn.0041acca
jmp 0x401d90
push str..exe
call fcn.004760b0
push eax
call fcn.004a6eff
xor edi, edi
pop ecx
inc edi
test eax, eax
pop ecx
jne 0x401efc
push str._nLooking_for_self_extraction...
call fcn.0040f4b9
pop ecx
mov ecx, esi
call fcn.00402be3
cmp eax, ebx
mov dword [esp + 0x1c], eax
jle 0x401f00
push 0x3ff
lea eax, [esp + 0x85d]
push ebx
push eax
mov byte [esp + 0x864], bl
call fcn.004a7110
add esp, 0xc
cmp dword [esp + 0x1c], ebx
mov dword [esp + 0x14], ebx
jle 0x401f00
mov ecx, dword [esp + 0x1c]
sub ecx, dword [esp + 0x14]
mov eax, 0x400
cmp ecx, eax
ja 0x401ea4
mov eax, ecx
push dword [esp + 0x10]
push eax
lea eax, [esp + 0x860]
push edi
push eax
call fcn.004a7455
mov esi, eax
add esp, 0x10
cmp esi, ebx
jle 0x401eea
push dword [esp + 0xc]
lea eax, [esp + 0x85c]
push esi
push edi
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, esi
jb 0x401eea
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x1c]
jl 0x401e91
jmp 0x401f00
mov ecx, dword [esp + 0x10]
call fcn.0041acca
mov ecx, dword [esp + 0xc]
jmp 0x401e25
mov dword [esp + 0x1c], ebx
mov esi, dword [esp + 0x10]
push esi
push edi
lea eax, [esp + 0x2c]
push 4
push eax
call fcn.004a7455
push dword [esp + 0x1c]
lea eax, [esp + 0x38]
push edi
push 4
push eax
call fcn.004a612e
push str._nValidating_CheckSum...
call fcn.0040f4b9
add esp, 0x24
push esi
push edi
lea eax, [esp + 0x4c]
push 4
push eax
call fcn.004a7455
push dword [esp + 0x1c]
lea eax, [esp + 0x58]
push edi
push 4
push eax
call fcn.004a612e
mov ecx, dword [esp + 0x44]
push esi
call fcn.00403bd0
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x40]
add esp, 0x24
add eax, 8
push ebx
push eax
push esi
call fcn.004a665f
add esp, 0xc
push esi
push edi
lea eax, [esp + 0x54]
push 8
push eax
call fcn.004a7455
push dword [esp + 0x1c]
lea eax, [esp + 0x60]
push edi
push 8
push eax
call fcn.004a612e
add esp, 0x20
mov dword [esp + 0x20], str.222PAULAARCHIVE222JesusIAdoreYou
push esi
call fcn.004a68be
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x34], eax
push eax
call fcn.004a6f4f
mov eax, dword [esp + 0x28]
pop ecx
pop ecx
movsx ecx, byte [eax]
cmp dword [esp + 0x30], ecx
jne 0x401fe5
inc eax
cmp byte [eax], bl
mov dword [esp + 0x20], eax
jne 0x401f9c
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x44]
je 0x402010
push str._nERROR:_CheckSum_failed._The_given_archive_is_corrupt_
call fcn.0040f4b9
pop ecx
mov ecx, esi
jmp 0x401eee
mov ecx, esi
call fcn.0041acca
mov ecx, dword [esp + 0xc]
call fcn.0041acca
push str._nERROR:_The_given_archive_is_invalid_or_corrupt_
call fcn.0040f4b9
mov edx, dword [esp + 0x38]
pop ecx
xor ecx, ecx
call fcn.00419439
jmp 0x401d90
mov dword [esp + 0x20], ebx
mov esi, str._n________ERROR__d________
push dword [esp + 0x10]
lea eax, [esp + 0x30]
push edi
push 4
push eax
mov dword [esp + 0x3c], ebx
call fcn.004a7455
add esp, 0x10
cmp eax, edi
jae 0x402054
push dword [esp + 0x10]
call fcn.004a718a
test eax, eax
pop ecx
jne 0x40230e
push 0x38c
push esi
call fcn.0040f4b9
pop ecx
pop ecx
push dword [esp + 0xc]
lea eax, [esp + 0x30]
push edi
push 4
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, edi
jb 0x402400
push dword [esp + 0xc]
call fcn.004a6348
cmp eax, 0xffffffff
pop ecx
je 0x402407
sub eax, 4
cmp dword [esp + 0x2c], ebx
mov dword [esp + 0x54], eax
jl 0x40240e
push 0x800
lea eax, [esp + 0xc5c]
push ebx
push eax
call fcn.004a7110
add esp, 0xc
mov dword [esp + 0x14], ebx
push dword [esp + 0x10]
call fcn.004a68be
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x34], eax
push eax
call fcn.004a6f4f
mov eax, dword [esp + 0x38]
cmp eax, ebx
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
mov byte [esp + ecx + 0xc58], al
je 0x4020e9
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x800
jb 0x4020ae
cmp dword [esp + 0x14], 0x800
jae 0x402415
push 8
lea eax, [esp + 0x50]
push ebx
push eax
call fcn.004a7110
add esp, 0xc
push dword [esp + 0x10]
lea eax, [esp + 0x50]
push edi
push 8
push eax
call fcn.004a7455
add esp, 0x10
cmp eax, edi
jb 0x402423
push dword [esp + 0xc]
lea eax, [esp + 0x50]
push edi
push 8
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, edi
jb 0x40242a
lea eax, [esp + 0xc58]
push eax
push str._nRecompress:___s_
call fcn.0040f4b9
inc dword [esp + 0x28]
cmp dword [esp + 0x20], ebx
pop ecx
pop ecx
jne 0x402176
push edi
push 0xc366
call fcn.004a5f90
cmp eax, ebx
pop ecx
pop ecx
mov dword [esp + 0x18], eax
je 0x402431
cmp dword [esp + 0x2c], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x30], ebx
jle 0x4022b3
push dword [esp + 0x10]
lea eax, [esp + 0x2c]
push edi
push 2
push eax
call fcn.004a7455
add esp, 0x10
cmp eax, edi
jb 0x402438
cmp word [esp + 0x28], bx
je 0x402476
movzx ecx, word [esp + 0x28]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fcomp qword [0x4fc5a0]
fnstsw ax
test ah, 0x41
je 0x402476
push dword [esp + 0x10]
push ecx
push edi
push dword [esp + 0x24]
call fcn.004a7455
movzx ecx, word [esp + 0x38]
add esp, 0x10
cmp eax, ecx
jb 0x40243f
mov eax, dword [esp + 0x18]
push dword [esp + 0x48]
lea ecx, [eax + 0x56d8]
push ecx
push dword [esp + 0x30]
call fcn.0040287e
movzx eax, ax
add esp, 0xc
cmp ax, bx
je 0x402446
mov ebx, dword [esp + 0x18]
push edi
push dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0x24]
add eax, 0x56d8
push eax
call fcn.004024e1
movzx eax, ax
add esp, 0x10
test ax, ax
mov dword [esp + 0x40], eax
je 0x402455
mov ecx, dword [esp + 0x38]
push dword [esp + 0xc]
movzx eax, ax
lea eax, [ecx + eax + 2]
push edi
mov dword [esp + 0x40], eax
lea eax, [esp + 0x48]
push 2
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, edi
jb 0x402468
push dword [esp + 0xc]
movzx eax, word [esp + 0x44]
push eax
push edi
push ebx
call fcn.004a612e
movzx ecx, word [esp + 0x50]
add esp, 0x10
cmp eax, ecx
jb 0x40246f
push 0x4c53a0
call fcn.0040f4b9
movzx eax, word [esp + 0x2c]
pop ecx
mov ecx, dword [esp + 0x30]
lea eax, [ecx + eax + 2]
xor ebx, ebx
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
jl 0x402188
push ebx
push dword [esp + 0x58]
push dword [esp + 0x14]
call fcn.004a665f
add esp, 0xc
test eax, eax
jne 0x40247d
push dword [esp + 0xc]
lea eax, [esp + 0x3c]
push edi
push 4
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, edi
jb 0x40247d
push 2
push ebx
push dword [esp + 0x14]
call fcn.004a665f
add esp, 0xc
test eax, eax
jne 0x40247d
push dword [esp + 0xc]
call fcn.004a6862
pop ecx
jmp 0x402019
push dword [esp + 0xc]
call fcn.004a6348
pop ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
push ebx
add eax, 8
push eax
push dword [esp + 0x14]
call fcn.004a665f
add esp, 0xc
test eax, eax
je 0x40233f
push 0x468
jmp 0x402482
push dword [esp + 0xc]
mov ecx, dword [esp + 0x28]
call fcn.00403bd0
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x40], eax
call fcn.004a6348
cmp eax, 0xffffffff
pop ecx
mov dword [esp + 0x24], eax
jne 0x40236e
push 0x479
jmp 0x402482
push ebx
push dword [esp + 0x20]
push dword [esp + 0x14]
call fcn.004a665f
add esp, 0xc
push dword [esp + 0xc]
lea eax, [esp + 0x28]
push edi
push 4
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, edi
jae 0x4023a1
push 0x482
jmp 0x402482
push dword [esp + 0xc]
lea eax, [esp + 0x40]
push edi
push 4
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, edi
jae 0x4023c3
push 0x488
jmp 0x402482
mov ecx, dword [esp + 0x10]
call fcn.0041acca
mov ecx, dword [esp + 0xc]
call fcn.0041acca
push edi
push dword [esp + 0x38]
lea ecx, [esp + 0x60]
call fcn.00418002
lea eax, [esp + 0x60]
call fcn.004189f3
push str._nDone_
mov esi, edi
call fcn.0040f4b9
add esp, 0xc
jmp 0x40249e
push 0x391
jmp 0x402482
push 0x39a
jmp 0x402482
push 0x3a4
jmp 0x402482
mov byte [esp + 0xcd6], bl
push 0x3bb
jmp 0x402482
push 0x3c4
jmp 0x402482
push 0x3ca
jmp 0x402482
push 0x3ec
jmp 0x402482
push 0x3f9
jmp 0x402482
push 0x40b
jmp 0x402482
cmp dword [esp + 0x48], ebx
je 0x40248a
or dword [esp + 0x20], 0xffffffff
mov esi, edi
jmp 0x40248c
push 0x42c
push esi
call fcn.0040f4b9
pop ecx
xor esi, esi
pop ecx
xor ebx, ebx
jmp 0x40248c
push 0x438
jmp 0x40245a
push 0x441
jmp 0x40245a
push 0x402
jmp 0x402482
push 0x451
push esi
call fcn.0040f4b9
pop ecx
pop ecx
xor esi, esi
mov ecx, dword [esp + 0x10]
call fcn.0041acca
mov ecx, dword [esp + 0xc]
call fcn.0041acca
cmp dword [esp + 0x18], ebx
je 0x4024ae
push dword [esp + 0x18]
call fcn.004a5de4
pop ecx
lea edi, [esp + 0x58]
call fcn.00418e6b
test eax, eax
je 0x4024c2
mov eax, edi
call fcn.004189f3
mov eax, esi
neg eax
sbb eax, eax
and eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x145c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004a69f5
mov esp, ebp
pop ebp
ret