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.004bc5d0
mov eax, dword [0x5065d0]
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.004ab5d0
add esp, 0xc
push esi
lea eax, [esp + 0x5d]
push ebx
push eax
mov byte [esp + 0x64], bl
call fcn.004ab5d0
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.00476b3a
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.00476b6c
pop ecx
call fcn.0049c471
mov esi, eax
call fcn.004aba8c
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.0047816f
mov esi, dword [esp + 0x3c]
push 0x31e
mov edi, str..Archive.c
push edi
mov edx, 0x4c91fc
mov ecx, esi
call fcn.0041c646
add esp, 0x10
cmp eax, ebx
mov dword [esp + 0x10], eax
jne 0x401e03
mov edi, esi
call fcn.0041a629
jmp 0x401d90
push 0x325
push edi
mov edx, 0x4c93a4
lea ecx, [esp + 0x60]
call fcn.0041c646
cmp eax, ebx
pop ecx
pop ecx
mov dword [esp + 0xc], eax
jne 0x401e2f
mov ecx, dword [esp + 0x10]
call fcn.0041ca73
jmp 0x401d90
push str..exe
call fcn.004773ce
push eax
call fcn.004ab3bf
xor edi, edi
pop ecx
inc edi
test eax, eax
pop ecx
jne 0x401efc
push str._nLooking_for_self_extraction...
call fcn.0040ef9c
pop ecx
mov ecx, esi
call fcn.00402d7b
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.004ab5d0
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.004ab915
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.004aa5f2
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.0041ca73
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.004ab915
push dword [esp + 0x1c]
lea eax, [esp + 0x38]
push edi
push 4
push eax
call fcn.004aa5f2
push str._nValidating_CheckSum...
call fcn.0040ef9c
add esp, 0x24
push esi
push edi
lea eax, [esp + 0x4c]
push 4
push eax
call fcn.004ab915
push dword [esp + 0x1c]
lea eax, [esp + 0x58]
push edi
push 4
push eax
call fcn.004aa5f2
mov ecx, dword [esp + 0x44]
push esi
call fcn.00403d68
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x40]
add esp, 0x24
add eax, 8
push ebx
push eax
push esi
call fcn.004aab1f
add esp, 0xc
push esi
push edi
lea eax, [esp + 0x54]
push 8
push eax
call fcn.004ab915
push dword [esp + 0x1c]
lea eax, [esp + 0x60]
push edi
push 8
push eax
call fcn.004aa5f2
add esp, 0x20
mov dword [esp + 0x20], str.222PAULAARCHIVE222JesusIAdoreYou
push esi
call fcn.004aad7e
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x34], eax
push eax
call fcn.004ab40f
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.0040ef9c
pop ecx
mov ecx, esi
jmp 0x401eee
mov ecx, esi
call fcn.0041ca73
mov ecx, dword [esp + 0xc]
call fcn.0041ca73
push str._nERROR:_The_given_archive_is_invalid_or_corrupt_
call fcn.0040ef9c
mov edx, dword [esp + 0x38]
pop ecx
xor ecx, ecx
call fcn.0041abf9
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.004ab915
add esp, 0x10
cmp eax, edi
jae 0x402054
push dword [esp + 0x10]
call fcn.004ab64a
test eax, eax
pop ecx
jne 0x40230e
push 0x38c
push esi
call fcn.0040ef9c
pop ecx
pop ecx
push dword [esp + 0xc]
lea eax, [esp + 0x30]
push edi
push 4
push eax
call fcn.004aa5f2
add esp, 0x10
cmp eax, edi
jb 0x402400
push dword [esp + 0xc]
call fcn.004aa80c
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.004ab5d0
add esp, 0xc
mov dword [esp + 0x14], ebx
push dword [esp + 0x10]
call fcn.004aad7e
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x34], eax
push eax
call fcn.004ab40f
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.004ab5d0
add esp, 0xc
push dword [esp + 0x10]
lea eax, [esp + 0x50]
push edi
push 8
push eax
call fcn.004ab915
add esp, 0x10
cmp eax, edi
jb 0x402423
push dword [esp + 0xc]
lea eax, [esp + 0x50]
push edi
push 8
push eax
call fcn.004aa5f2
add esp, 0x10
cmp eax, edi
jb 0x40242a
lea eax, [esp + 0xc58]
push eax
push str._nRecompress:___s_
call fcn.0040ef9c
inc dword [esp + 0x28]
cmp dword [esp + 0x20], ebx
pop ecx
pop ecx
jne 0x402176
push edi
push 0xc366
call fcn.004aa454
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.004ab915
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 [0x502f10]
fnstsw ax
test ah, 0x41
je 0x402476
push dword [esp + 0x10]
push ecx
push edi
push dword [esp + 0x24]
call fcn.004ab915
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.00402a16
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.00402679
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.004aa5f2
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.004aa5f2
movzx ecx, word [esp + 0x50]
add esp, 0x10
cmp eax, ecx
jb 0x40246f
push 0x4c9390
call fcn.0040ef9c
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.004aab1f
add esp, 0xc
test eax, eax
jne 0x40247d
push dword [esp + 0xc]
lea eax, [esp + 0x3c]
push edi
push 4
push eax
call fcn.004aa5f2
add esp, 0x10
cmp eax, edi
jb 0x40247d
push 2
push ebx
push dword [esp + 0x14]
call fcn.004aab1f
add esp, 0xc
test eax, eax
jne 0x40247d
push dword [esp + 0xc]
call fcn.004aad22
pop ecx
jmp 0x402019
push dword [esp + 0xc]
call fcn.004aa80c
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.004aab1f
add esp, 0xc
test eax, eax
je 0x40233f
push 0x468
jmp 0x402482
push dword [esp + 0xc]
mov ecx, dword [esp + 0x28]
call fcn.00403d68
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x40], eax
call fcn.004aa80c
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.004aab1f
add esp, 0xc
push dword [esp + 0xc]
lea eax, [esp + 0x28]
push edi
push 4
push eax
call fcn.004aa5f2
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.004aa5f2
add esp, 0x10
cmp eax, edi
jae 0x4023c3
push 0x488
jmp 0x402482
mov ecx, dword [esp + 0x10]
call fcn.0041ca73
mov ecx, dword [esp + 0xc]
call fcn.0041ca73
push edi
push dword [esp + 0x38]
lea ecx, [esp + 0x60]
call fcn.004193ff
lea eax, [esp + 0x60]
call fcn.0041a140
push str._nDone_
mov esi, edi
call fcn.0040ef9c
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.0040ef9c
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.0040ef9c
pop ecx
pop ecx
xor esi, esi
mov ecx, dword [esp + 0x10]
call fcn.0041ca73
mov ecx, dword [esp + 0xc]
call fcn.0041ca73
cmp dword [esp + 0x18], ebx
je 0x4024ae
push dword [esp + 0x18]
call fcn.004aa2a8
pop ecx
lea edi, [esp + 0x58]
call fcn.0041a629
test eax, eax
je 0x4024c2
mov eax, edi
call fcn.0041a140
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.004aaeb5
mov esp, ebp
pop ebp
ret