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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x2194
call fcn.004b8290
mov eax, dword [0x5005d0]
xor eax, esp
mov dword [esp + 0x2190], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 8]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
push edi
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x14]
xor ebx, ebx
mov edi, 0x7ff
push edi
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x95]
push ebx
push eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x28], ebx
mov byte [esp + 0x9c], bl
call fcn.004a7110
add esp, 0xc
push edi
lea eax, [esp + 0x119d]
push ebx
push eax
mov byte [esp + 0x11a4], bl
call fcn.004a7110
add esp, 0xc
push edi
lea eax, [esp + 0x99d]
push ebx
push eax
mov byte [esp + 0x9a4], bl
call fcn.004a7110
add esp, 0xc
push 0x103
lea eax, [esp + 0x895]
push ebx
push eax
mov byte [esp + 0x89c], bl
call fcn.004a7110
xor eax, eax
lea edi, [esp + 0x48]
add esp, 0xc
mov dword [esp + 0x38], ebx
mov edx, esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
stosd dword es:[edi], eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x18], ebx
mov dword [0x512334], ebx
call fcn.00475851
test eax, eax
je 0x4014e2
mov dword [0x512330], ebx
xor eax, eax
jmp 0x401cd6
cmp dword [esp + 0x10], ebx
je 0x4014ee
push dword [esp + 0x10]
jmp 0x401519
mov edx, dword [esp + 0x30]
call fcn.00475851
test eax, eax
jne 0x401518
push dword [esp + 0x30]
mov ecx, 0x800
lea eax, [esp + 0x99c]
call fcn.00475883
pop ecx
call fcn.00475bc3
jmp 0x40152b
push esi
mov ecx, 0x800
lea eax, [esp + 0x99c]
call fcn.00475883
pop ecx
lea eax, [esp + 0x998]
push eax
push esi
call fcn.004a6eff
test eax, eax
pop ecx
pop ecx
jne 0x40155e
lea esi, [esp + 0x998]
call fcn.00476061
mov eax, esi
push str._Unpacked
push eax
call fcn.004a64f0
mov esi, dword [esp + 0x1c]
pop ecx
pop ecx
push 0x159
push str..Archive.c
mov edx, 0x4c520c
mov ecx, esi
call fcn.0041a89d
mov edi, eax
cmp edi, ebx
pop ecx
pop ecx
mov dword [esp + 0x10], edi
jne 0x40158c
mov edi, esi
call fcn.00418e6b
jmp 0x4014d5
mov esi, dword [esp + 0x14]
push str..exe
call fcn.004760b0
push eax
call fcn.004a6eff
test eax, eax
pop ecx
pop ecx
jne 0x4015cc
cmp dword [ebp + 0x1c], ebx
je 0x4015b6
push str._nLooking_for_self_extraction...
call fcn.0040f4b9
pop ecx
mov ecx, esi
call fcn.00402be3
mov esi, eax
push ebx
push esi
push edi
call fcn.004a665f
add esp, 0xc
jmp 0x4015ce
xor esi, esi
push edi
push 1
lea eax, [esp + 0x4c]
push 4
push eax
call fcn.004a7455
add esp, 0x10
cmp dword [ebp + 0x1c], ebx
je 0x4015f0
push str._nValidating_CheckSum...
call fcn.0040f4b9
pop ecx
push edi
push 1
lea eax, [esp + 0x48]
push 4
push eax
call fcn.004a7455
mov ecx, dword [esp + 0x54]
push edi
call fcn.00403bd0
add esp, 0x14
push ebx
add esi, 0x10
push esi
push edi
mov dword [esp + 0x30], eax
call fcn.004a665f
add esp, 0xc
mov esi, str.222PAULAARCHIVE222JesusIAdoreYou
push edi
call fcn.004a68be
pop ecx
movsx ecx, byte [esi]
cmp eax, ecx
jne 0x401666
inc esi
cmp byte [esi], bl
jne 0x401623
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x40]
je 0x40168d
cmp dword [ebp + 0x1c], ebx
je 0x401650
push str._nERROR:_CheckSum_failed._The_given_archive_is_corrupt_
call fcn.0040f4b9
pop ecx
mov ecx, edi
call fcn.0041acca
mov dword [0x512334], 1
jmp 0x4014d5
mov ecx, edi
call fcn.0041acca
cmp dword [ebp + 0x1c], ebx
je 0x40167d
push str._nERROR:_The_given_archive_is_invalid_or_corrupt_
call fcn.0040f4b9
pop ecx
mov edx, dword [esp + 0x14]
xor ecx, ecx
call fcn.00419439
jmp 0x4014d5
mov dword [esp + 0x14], ebx
push dword [esp + 0x10]
lea eax, [esp + 0x20]
push 1
push 4
push eax
mov dword [esp + 0x2c], ebx
call fcn.004a7455
add esp, 0x10
cmp eax, 1
jae 0x4016da
push dword [esp + 0x10]
call fcn.004a718a
test eax, eax
pop ecx
jne 0x401be4
cmp dword [ebp + 0x1c], ebx
je 0x4016da
push 0x1ad
mov edi, str._n________ERROR__d________
push edi
call fcn.0040f4b9
pop ecx
pop ecx
jmp 0x4016df
mov edi, str._n________ERROR__d________
cmp dword [esp + 0x1c], ebx
jl 0x401c00
push 0x800
lea eax, [esp + 0x94]
push ebx
push eax
call fcn.004a7110
add esp, 0xc
xor esi, esi
push dword [esp + 0x10]
call fcn.004a68be
cmp eax, ebx
pop ecx
mov byte [esp + esi + 0x90], al
je 0x40171f
inc esi
cmp esi, 0x800
jb 0x401701
cmp esi, 0x800
jae 0x401c11
push 8
lea eax, [esp + 0x3c]
push ebx
push eax
call fcn.004a7110
add esp, 0xc
push dword [esp + 0x10]
lea eax, [esp + 0x3c]
push 1
push 8
push eax
call fcn.004a7455
add esp, 0x10
cmp eax, 1
jb 0x401c24
cmp dword [esp + 0x1c], ebx
jne 0x401778
lea edx, [esp + 0x90]
call fcn.00475851
test eax, eax
je 0x401778
inc dword [esp + 0x34]
jmp 0x401691
mov edx, dword [esp + 0x30]
call fcn.00475851
test eax, eax
jne 0x40179e
lea eax, [esp + 0x90]
call fcn.00475bc3
mov ecx, dword [esp + 0x30]
mov ebx, eax
call fcn.00475fd3
xor ebx, ebx
cmp dword [ebp + 0x1c], ebx
je 0x40184a
cmp dword [ebp + 0x1c], 0xde
jne 0x401836
push 0x36
lea eax, [esp + 0x5d]
push ebx
push eax
mov byte [esp + 0x64], bl
call fcn.004a7110
add esp, 0xc
push 0x7ff
lea eax, [esp + 0x199d]
push ebx
push eax
mov byte [esp + 0x19a4], bl
call fcn.004a7110
lea eax, [esp + 0x9c]
add esp, 0xc
push eax
mov edi, 0x800
mov ecx, edi
lea eax, [esp + 0x199c]
call fcn.00475883
pop ecx
mov esi, eax
call fcn.00475b80
call fcn.00476061
push ebx
push str..dat
push str..wav
mov eax, esi
push edi
push eax
call fcn.00476ed6
add esp, 0x14
mov eax, esi
push eax
push 0x37
pop ecx
lea eax, [esp + 0x5c]
call fcn.00475883
pop ecx
jmp 0x40183d
lea eax, [esp + 0x90]
push eax
push str._nExpanding:___s_
call fcn.0040f4b9
pop ecx
pop ecx
lea edx, [esp + 0x998]
lea ecx, [esp + 0x90]
call fcn.00475e0d
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x119c]
push eax
call fcn.004a64e0
lea eax, [esp + 0x11a0]
call fcn.00475bc3
push eax
call fcn.00418f1c
add esp, 0xc
test eax, eax
jne 0x4018b7
push ebx
lea ecx, [esp + 0x119c]
call fcn.004191f9
pop ecx
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [esp + 0x1198]
push eax
call fcn.00418f1c
test eax, eax
pop ecx
je 0x401c30
cmp dword [ebp + 0x18], ebx
jne 0x40192f
lea edi, [esp + 0x90]
call fcn.00418e6b
test eax, eax
je 0x40192f
push ebx
lea eax, [esp + 0x54]
push eax
push ebx
mov eax, edi
push ebx
push eax
call fcn.0041955f
add esp, 0x14
test eax, eax
jne 0x4018e7
inc dword [esp + 0x18]
push 0xea60
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x40]
push eax
call fcn.0041a423
add esp, 0xc
test eax, eax
jge 0x40192f
push 1
push dword [esp + 0x20]
push dword [esp + 0x18]
call fcn.004a665f
add esp, 0xc
test eax, eax
je 0x401691
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x21a
jmp 0x401c82
call fcn.00498efc
mov dword [esp + 0x24], eax
xor edi, edi
push 0x22a
push str..Archive.c
mov edx, 0x4c5348
lea ecx, [esp + 0x98]
call fcn.0041a89d
cmp eax, ebx
pop ecx
pop ecx
mov dword [esp + 0x28], eax
jne 0x401a3f
call fcn.00498efc
sub eax, dword [esp + 0x24]
cmp eax, 0x1194
ja 0x4019aa
cmp dword [0x512330], ebx
jne 0x4019aa
lea esi, [esp + 0x90]
call fcn.00476311
mov eax, esi
push eax
call fcn.004a63c0
pop ecx
mov ecx, esi
dec ecx
cmp byte [eax + ecx], 0x5c
je 0x4019aa
push 0xfa
call dword [sym.imp.KERNEL32.dll_Sleep]
inc edi
cmp edi, 0xf
jl 0x40193a
cmp dword [ebp + 0x1c], ebx
je 0x4019fc
lea eax, [esp + 0x90]
push eax
call fcn.004a63c0
pop ecx
lea ecx, [esp + 0x90]
dec ecx
cmp byte [eax + ecx], 0x5c
je 0x4019fc
push dword [esp + 0x10]
call fcn.004a6348
pop ecx
push eax
push 0x23e
push str._n________ERROR__d__d________
call fcn.0040f4b9
add esp, 0xc
lea eax, [esp + 0x90]
push eax
push str._n___Could_not_open_destination___s__for_writing_
call fcn.0040f4b9
pop ecx
pop ecx
cmp dword [0x512330], ebx
jne 0x401a08
inc dword [esp + 0x18]
cmp dword [esp + 0x1c], ebx
jle 0x401691
push 1
push dword [esp + 0x20]
push dword [esp + 0x18]
call fcn.004a665f
add esp, 0xc
test eax, eax
je 0x401691
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x248
jmp 0x401c82
mov edi, dword [esp + 0x2c]
inc dword [esp + 0x14]
cmp edi, ebx
jne 0x401a67
push 1
push 0xc366
call fcn.004a5f90
cmp eax, ebx
pop ecx
pop ecx
mov dword [esp + 0x2c], eax
je 0x401c44
mov edi, eax
cmp dword [esp + 0x1c], ebx
mov dword [esp + 0x24], ebx
jle 0x401b5d
push dword [esp + 0x10]
lea eax, [esp + 0x24]
push 1
push 2
push eax
call fcn.004a7455
add esp, 0x10
cmp eax, 1
jb 0x401c50
cmp word [esp + 0x20], bx
je 0x401c78
movzx eax, word [esp + 0x20]
mov dword [esp + 0x4c], eax
fild dword [esp + 0x4c]
fcomp qword [0x4fc5a0]
fnstsw ax
test ah, 0x41
je 0x401c78
movzx esi, word [esp + 0x20]
push dword [esp + 0x10]
push esi
push 1
push edi
call fcn.004a7455
add esp, 0x10
cmp eax, esi
jb 0x401c5c
push dword [esp + 0x48]
add esi, edi
push esi
push dword [esp + 0x28]
mov eax, edi
call fcn.0040287e
movzx eax, ax
add esp, 0xc
cmp ax, bx
je 0x401c68
push dword [esp + 0x28]
movzx esi, ax
movzx eax, word [esp + 0x24]
push esi
add eax, edi
push 1
push eax
call fcn.004a612e
add esp, 0x10
cmp eax, esi
jae 0x401b32
cmp dword [ebp + 0x1c], ebx
je 0x401b2e
push 0x29d
push str._n________ERROR__d________
call fcn.0040f4b9
pop ecx
pop ecx
inc dword [esp + 0x18]
cmp dword [ebp + 0x1c], ebx
je 0x401b42
push 0x4c53a0
call fcn.0040f4b9
pop ecx
movzx eax, word [esp + 0x20]
mov ecx, dword [esp + 0x24]
lea eax, [ecx + eax + 2]
cmp eax, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
jl 0x401a75
mov ecx, dword [esp + 0x28]
call fcn.0041acca
push ebx
push 0x80000000
push 3
push ebx
push 7
push pe_nt_image_headers32
lea eax, [esp + 0xa8]
push eax
mov dword [esp + 0x44], ebx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x401bae
cmp dword [ebp + 0x1c], ebx
je 0x401ba5
push 0x2c2
push str._n________ERROR__d________
call fcn.0040f4b9
pop ecx
pop ecx
inc dword [esp + 0x18]
jmp 0x401691
lea eax, [esp + 0x38]
push eax
push eax
push eax
push esi
call dword [sym.imp.KERNEL32.dll_SetFileTime]
test eax, eax
jne 0x401bda
cmp dword [ebp + 0x1c], ebx
je 0x401bd6
push 0x2c9
push str._n________ERROR__d________
call fcn.0040f4b9
pop ecx
pop ecx
inc dword [esp + 0x18]
call fcn.0041b138
jmp 0x401691
xor esi, esi
inc esi
cmp dword [ebp + 0x1c], ebx
je 0x401c90
push str._nDone_
call fcn.0040f4b9
pop ecx
jmp 0x401c90
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x1b4
push edi
jmp 0x401c87
cmp dword [ebp + 0x1c], ebx
mov byte [esp + 0x10e], bl
je 0x401c8e
push 0x1ca
jmp 0x401c0e
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x1d3
jmp 0x401c0e
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
lea eax, [esp + 0x1198]
push eax
push str._nERROR:_Could_not_create_directory___s_
jmp 0x401c87
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x25f
jmp 0x401c82
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x26b
jmp 0x401c82
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x27d
jmp 0x401c82
xor esi, esi
cmp dword [esp + 0x48], ebx
je 0x401c90
inc esi
or dword [esp + 0x14], 0xffffffff
jmp 0x401c90
cmp dword [ebp + 0x1c], ebx
je 0x401c8e
push 0x274
push str._n________ERROR__d________
call fcn.0040f4b9
pop ecx
pop ecx
xor esi, esi
mov ecx, dword [esp + 0x10]
call fcn.0041acca
mov ecx, dword [esp + 0x28]
cmp ecx, ebx
je 0x401ca6
call fcn.0041acca
cmp dword [esp + 0x2c], ebx
je 0x401cb6
push dword [esp + 0x2c]
call fcn.004a5de4
pop ecx
cmp dword [esp + 0x34], ebx
mov dword [0x512330], ebx
jle 0x401ccc
cmp dword [esp + 0x14], ebx
jle 0x401ccc
mov dword [esp + 0x14], ebx
mov eax, esi
neg eax
sbb eax, eax
and eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x219c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004a69f5
mov esp, ebp
pop ebp
ret