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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1454
call fcn.004122f0
mov eax, dword [0x5092e4]
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.00401f80
add esp, 0xc
push esi
lea eax, [esp + 0x5d]
push ebx
push eax
mov byte [esp + 0x64], bl
call fcn.00401f80
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.00445b2f
test eax, eax
je 0x4b1c78
xor eax, eax
jmp 0x4b23aa
push dword [esp + 0x34]
mov esi, 0x800
mov ecx, esi
lea eax, [esp + 0x5c]
call fcn.00444961
pop ecx
call fcn.0041df75
mov edi, eax
call fcn.0040237f
add eax, edi
xor edx, edx
mov ecx, 0x1869f
div ecx
lea eax, [esp + 0x58]
push edx
push str.__d.tmp
push esi
push eax
call fcn.004451ef
mov edi, dword [esp + 0x44]
push 0x31e
mov esi, str.Archive.c
push esi
mov edx, 0x4cc77c
mov ecx, edi
call fcn.004a0001
add esp, 0x18
mov dword [esp + 0x10], eax
cmp eax, ebx
jne 0x4b1ce2
call fcn.004a142a
jmp 0x4b1c71
push 0x325
push esi
mov edx, 0x4cc924
lea ecx, [esp + 0x60]
call fcn.004a0001
pop ecx
pop ecx
mov dword [esp + 0xc], eax
cmp eax, ebx
jne 0x4b1d0e
mov ecx, dword [esp + 0x10]
call fcn.004a2aec
jmp 0x4b1c71
push str..exe
mov esi, edi
call fcn.0044675d
push eax
call fcn.00401811
xor edi, edi
pop ecx
inc edi
pop ecx
test eax, eax
jne 0x4b1ddd
push str._nLooking_for_self_extraction...
call fcn.004abf0e
pop ecx
mov ecx, esi
call fcn.004b198c
mov dword [esp + 0x1c], eax
cmp eax, ebx
jle 0x4b1de1
push 0x3ff
lea eax, [esp + 0x85d]
push ebx
push eax
mov byte [esp + 0x864], bl
call fcn.00401f80
add esp, 0xc
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x1c], ebx
jle 0x4b1de1
mov ecx, dword [esp + 0x1c]
sub ecx, dword [esp + 0x14]
mov eax, 0x400
cmp ecx, eax
ja 0x4b1d85
mov eax, ecx
push dword [esp + 0x10]
push eax
lea eax, [esp + 0x860]
push edi
push eax
call fcn.00402244
mov esi, eax
add esp, 0x10
cmp esi, ebx
jle 0x4b1dcb
push dword [esp + 0xc]
lea eax, [esp + 0x85c]
push esi
push edi
push eax
call fcn.0040257f
add esp, 0x10
cmp eax, esi
jb 0x4b1dcb
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x1c]
jl 0x4b1d72
jmp 0x4b1de1
mov ecx, dword [esp + 0x10]
call fcn.004a2aec
mov ecx, dword [esp + 0xc]
jmp 0x4b1d04
mov dword [esp + 0x1c], ebx
mov esi, dword [esp + 0x10]
push esi
push edi
lea eax, [esp + 0x2c]
push 4
push eax
call fcn.00402244
push dword [esp + 0x1c]
lea eax, [esp + 0x38]
push edi
push 4
push eax
call fcn.0040257f
push str._nValidating_CheckSum...
call fcn.004abf0e
add esp, 0x24
push esi
push edi
lea eax, [esp + 0x4c]
push 4
push eax
call fcn.00402244
push dword [esp + 0x1c]
lea eax, [esp + 0x58]
push edi
push 4
push eax
call fcn.0040257f
mov ecx, dword [esp + 0x44]
mov edx, esi
call fcn.004b0205
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x3c]
add eax, 8
push ebx
push eax
push esi
call fcn.0040287c
add esp, 0x2c
push esi
push edi
lea eax, [esp + 0x54]
push 8
push eax
call fcn.00402244
push dword [esp + 0x1c]
lea eax, [esp + 0x60]
push edi
push 8
push eax
call fcn.0040257f
add esp, 0x20
mov dword [esp + 0x20], str.222PAULAARCHIVE222JesusIAdoreYou
push esi
call fcn.00401e7e
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x34], eax
push eax
call fcn.00401858
mov eax, dword [esp + 0x28]
pop ecx
pop ecx
movsx ecx, byte [eax]
cmp dword [esp + 0x30], ecx
jne 0x4b1ec4
inc eax
mov dword [esp + 0x20], eax
cmp byte [eax], bl
jne 0x4b1e7b
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x44]
je 0x4b1eef
push str._nERROR:_CheckSum_failed._The_given_archive_is_corrupt_
call fcn.004abf0e
pop ecx
mov ecx, esi
jmp 0x4b1dcf
mov ecx, esi
call fcn.004a2aec
mov ecx, dword [esp + 0xc]
call fcn.004a2aec
push str._nERROR:_The_given_archive_is_invalid_or_corrupt_
call fcn.004abf0e
pop ecx
mov ecx, dword [esp + 0x34]
xor edx, edx
call fcn.004a1b95
jmp 0x4b1c71
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.00402244
add esp, 0x10
cmp eax, edi
jae 0x4b1f33
push dword [esp + 0x10]
call fcn.004019d8
pop ecx
test eax, eax
jne 0x4b21ed
push 0x38c
push esi
call fcn.004abf0e
pop ecx
pop ecx
push dword [esp + 0xc]
lea eax, [esp + 0x30]
push edi
push 4
push eax
call fcn.0040257f
add esp, 0x10
cmp eax, edi
jb 0x4b22de
push dword [esp + 0xc]
call fcn.0040278d
pop ecx
cmp eax, 0xffffffff
je 0x4b22e5
sub eax, 4
mov dword [esp + 0x54], eax
cmp dword [esp + 0x2c], ebx
jl 0x4b22ec
push 0x800
lea eax, [esp + 0xc5c]
push ebx
push eax
call fcn.00401f80
add esp, 0xc
mov dword [esp + 0x14], ebx
push dword [esp + 0x10]
call fcn.00401e7e
pop ecx
push dword [esp + 0xc]
mov dword [esp + 0x34], eax
push eax
call fcn.00401858
mov eax, dword [esp + 0x38]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
mov byte [esp + ecx + 0xc58], al
cmp eax, ebx
je 0x4b1fc8
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x800
jb 0x4b1f8d
cmp dword [esp + 0x14], 0x800
jae 0x4b22f3
push 8
lea eax, [esp + 0x50]
push ebx
push eax
call fcn.00401f80
add esp, 0xc
push dword [esp + 0x10]
lea eax, [esp + 0x50]
push edi
push 8
push eax
call fcn.00402244
add esp, 0x10
cmp eax, edi
jb 0x4b2301
push dword [esp + 0xc]
lea eax, [esp + 0x50]
push edi
push 8
push eax
call fcn.0040257f
add esp, 0x10
cmp eax, edi
jb 0x4b2308
lea eax, [esp + 0xc58]
push eax
push str._nRecompress:___s_
call fcn.004abf0e
inc dword [esp + 0x28]
pop ecx
pop ecx
cmp dword [esp + 0x18], ebx
jne 0x4b2055
push edi
push 0xc366
call fcn.00401a3a
pop ecx
pop ecx
mov dword [esp + 0x18], eax
cmp eax, ebx
je 0x4b230f
mov dword [esp + 0x38], ebx
mov dword [esp + 0x30], ebx
cmp dword [esp + 0x2c], ebx
jle 0x4b2192
push dword [esp + 0x10]
lea eax, [esp + 0x2c]
push edi
push 2
push eax
call fcn.00402244
add esp, 0x10
cmp eax, edi
jb 0x4b2316
cmp word [esp + 0x28], bx
je 0x4b2354
movzx ecx, word [esp + 0x28]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fcomp qword [0x5058a0]
fnstsw ax
test ah, 0x41
je 0x4b2354
push dword [esp + 0x10]
push ecx
push edi
push dword [esp + 0x24]
call fcn.00402244
movzx ecx, word [esp + 0x38]
add esp, 0x10
cmp eax, ecx
jb 0x4b231d
mov eax, dword [esp + 0x18]
push dword [esp + 0x48]
lea ecx, [eax + 0x56d8]
push ecx
push dword [esp + 0x30]
call fcn.004b0516
movzx eax, ax
add esp, 0xc
cmp ax, bx
je 0x4b2324
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.004b087b
movzx eax, ax
add esp, 0x10
mov dword [esp + 0x40], eax
test ax, ax
je 0x4b2333
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.0040257f
add esp, 0x10
cmp eax, edi
jb 0x4b2346
push dword [esp + 0xc]
movzx eax, word [esp + 0x44]
push eax
push edi
push ebx
call fcn.0040257f
movzx ecx, word [esp + 0x50]
add esp, 0x10
cmp eax, ecx
jb 0x4b234d
push 0x4cc910
call fcn.004abf0e
movzx eax, word [esp + 0x2c]
pop ecx
mov ecx, dword [esp + 0x30]
lea eax, [ecx + eax + 2]
xor ebx, ebx
mov dword [esp + 0x30], eax
cmp eax, dword [esp + 0x2c]
jl 0x4b2067
push ebx
push dword [esp + 0x58]
push dword [esp + 0x14]
call fcn.0040287c
add esp, 0xc
test eax, eax
jne 0x4b235b
push dword [esp + 0xc]
lea eax, [esp + 0x3c]
push edi
push 4
push eax
call fcn.0040257f
add esp, 0x10
cmp eax, edi
jb 0x4b235b
push 2
push ebx
push dword [esp + 0x14]
call fcn.0040287c
add esp, 0xc
test eax, eax
jne 0x4b235b
push dword [esp + 0xc]
call fcn.00401e22
pop ecx
jmp 0x4b1ef8
push dword [esp + 0xc]
call fcn.0040278d
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.0040287c
add esp, 0xc
test eax, eax
je 0x4b221e
push 0x468
jmp 0x4b2360
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0xc]
call fcn.004b0205
push dword [esp + 0xc]
mov dword [esp + 0x40], eax
call fcn.0040278d
pop ecx
mov dword [esp + 0x24], eax
cmp eax, 0xffffffff
jne 0x4b224c
push 0x479
jmp 0x4b2360
push ebx
push dword [esp + 0x20]
push dword [esp + 0x14]
call fcn.0040287c
add esp, 0xc
push dword [esp + 0xc]
lea eax, [esp + 0x28]
push edi
push 4
push eax
call fcn.0040257f
add esp, 0x10
cmp eax, edi
jae 0x4b227f
push 0x482
jmp 0x4b2360
push dword [esp + 0xc]
lea eax, [esp + 0x40]
push edi
push 4
push eax
call fcn.0040257f
add esp, 0x10
cmp eax, edi
jae 0x4b22a1
push 0x488
jmp 0x4b2360
mov ecx, dword [esp + 0x10]
call fcn.004a2aec
mov ecx, dword [esp + 0xc]
call fcn.004a2aec
push edi
push dword [esp + 0x38]
lea ecx, [esp + 0x60]
call fcn.004a05dd
lea eax, [esp + 0x60]
call fcn.004a14db
push str._nDone_
mov esi, edi
call fcn.004abf0e
add esp, 0xc
jmp 0x4b237c
push 0x391
jmp 0x4b2360
push 0x39a
jmp 0x4b2360
push 0x3a4
jmp 0x4b2360
mov byte [esp + 0xcd6], bl
push 0x3bb
jmp 0x4b2360
push 0x3c4
jmp 0x4b2360
push 0x3ca
jmp 0x4b2360
push 0x3ec
jmp 0x4b2360
push 0x3f9
jmp 0x4b2360
push 0x40b
jmp 0x4b2360
cmp dword [esp + 0x48], ebx
je 0x4b2368
or dword [esp + 0x20], 0xffffffff
mov esi, edi
jmp 0x4b236a
push 0x42c
push esi
call fcn.004abf0e
pop ecx
xor esi, esi
pop ecx
xor ebx, ebx
jmp 0x4b236a
push 0x438
jmp 0x4b2338
push 0x441
jmp 0x4b2338
push 0x402
jmp 0x4b2360
push 0x451
push esi
call fcn.004abf0e
pop ecx
pop ecx
xor esi, esi
mov ecx, dword [esp + 0x10]
call fcn.004a2aec
mov ecx, dword [esp + 0xc]
call fcn.004a2aec
cmp dword [esp + 0x18], ebx
je 0x4b238c
push dword [esp + 0x18]
call fcn.00401a00
pop ecx
lea edi, [esp + 0x58]
call fcn.004a142a
test eax, eax
je 0x4b23a0
mov eax, edi
call fcn.004a14db
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.00401317
mov esp, ebp
pop ebp
ret