Function at 0x40f91b
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa4
mov eax, dword [0x4bf100]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
xor esi, esi
mov dword [ebp - 0x58], edx
push edi
push esi
push 0x8000
push ecx
mov dword [ebp - 0x3c], eax
mov edi, esi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x78], esi
mov dword [ebp - 0x90], esi
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x70], esi
call fcn.00462443
mov ebx, eax
add esp, 0xc
test ebx, ebx
js 0x410236
push 2
push esi
push ebx
call fcn.00463fd3
add esp, 0xc
mov dword [ebp - 0x5c], eax
cmp eax, 0xffffffff
je 0x410236
inc eax
push eax
call fcn.004640c6
mov dword [ebp - 0x48], eax
pop ecx
test eax, eax
je 0x410236
push esi
push esi
push ebx
call fcn.00463fd3
add esp, 0xc
test eax, eax
jne 0x410236
push dword [ebp - 0x5c]
push dword [ebp - 0x48]
push ebx
call fcn.00462df0
add esp, 0xc
cmp eax, dword [ebp - 0x5c]
jne 0x410236
push ebx
call fcn.00463683
pop ecx
cmp eax, 0xffffffff
je 0x410236
mov ebx, dword [ebp - 0x5c]
lea eax, [ebx*4 + 4]
push eax
call fcn.004640c6
mov dword [ebp - 0x74], eax
pop ecx
test eax, eax
je 0x41022e
lea ecx, [ebx*4 + 4]
push ecx
call fcn.004640c6
mov dword [ebp - 0x78], eax
pop ecx
test eax, eax
je 0x41022e
mov ecx, dword [ebp - 0x74]
mov edx, eax
push ebx
push dword [ebp - 0x48]
call fcn.0040f51d
mov eax, dword [ebp - 0x78]
push eax
call fcn.0045f917
push esi
push 0x8000
push dword [ebp - 0x58]
mov dword [ebp - 0x78], esi
call fcn.00462443
mov ebx, eax
add esp, 0x18
test ebx, ebx
js 0x410236
push 2
push esi
push ebx
call fcn.00463fd3
add esp, 0xc
mov dword [ebp - 0x68], eax
cmp eax, 0xffffffff
je 0x410236
inc eax
push eax
mov dword [ebp - 0x30], eax
call fcn.004640c6
mov dword [ebp - 0x40], eax
pop ecx
test eax, eax
je 0x410236
push esi
push esi
push ebx
call fcn.00463fd3
add esp, 0xc
test eax, eax
jne 0x410236
push dword [ebp - 0x68]
push dword [ebp - 0x40]
push ebx
call fcn.00462df0
add esp, 0xc
cmp eax, dword [ebp - 0x68]
jne 0x410236
push ebx
call fcn.00463683
pop ecx
cmp eax, 0xffffffff
je 0x410236
push dword [ebp - 0x30]
or ebx, 0xffffffff
mov dword [ebp - 0x44], ebx
call fcn.004640c6
mov dword [ebp - 0x64], eax
pop ecx
test eax, eax
je 0x410229
push dword [ebp - 0x30]
call fcn.004640c6
mov dword [ebp - 0x70], eax
pop ecx
test eax, eax
je 0x410229
push 0x4a9e2c
push dword [ebp - 0x3c]
mov dword [ebp - 0x9c], esi
mov dword [ebp - 0xa0], esi
call fcn.00463bde
mov dword [ebp - 0xa4], eax
pop ecx
pop ecx
test eax, eax
jne 0x40fb5d
inc esi
mov eax, dword [ebp - 0x64]
push eax
call fcn.0045f917
pop ecx
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40fb14
push eax
call fcn.0045f917
pop ecx
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x40fb22
push eax
call fcn.0045f917
pop ecx
mov eax, dword [ebp - 0x78]
test eax, eax
je 0x40fb30
push eax
call fcn.0045f917
pop ecx
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x40fb3e
push eax
call fcn.0045f917
pop ecx
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x40fb4c
push eax
call fcn.0045f917
pop ecx
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00455c9e
leave
ret
lea edx, [ebp - 0x24]
mov dword [ebp - 0x2c], 0x49445342
xor ecx, ecx
mov dword [ebp - 0x28], 0x30344646
call fcn.0040f7fb
lea edx, [ebp - 0x1c]
xor ecx, ecx
call fcn.0040f7fb
mov ecx, dword [ebp - 0x68]
lea edx, [ebp - 0x14]
call fcn.0040f7fb
push dword [ebp - 0xa4]
lea eax, [ebp - 0x2c]
push 1
push 0x20
push eax
call fcn.00463aee
add esp, 0x10
cmp eax, 1
jne 0x4101bf
mov edx, dword [ebp - 0xa4]
lea ecx, [ebp - 0x34]
sub esp, 0xc
call fcn.00411ce8
mov edi, eax
mov dword [ebp - 0x84], edi
test edi, edi
je 0x4101bf
mov ecx, dword [ebp - 0x68]
mov eax, esi
mov dword [ebp - 0x98], eax
mov ebx, esi
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x30], esi
test ecx, ecx
jle 0x41009e
add ebx, eax
mov edx, esi
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x88], ebx
mov dword [ebp - 0x54], ebx
cmp ebx, ecx
jge 0x40fd15
mov eax, dword [ebp - 0x40]
sub ecx, ebx
mov dword [ebp - 0x50], ecx
lea edx, [ebx + eax]
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x30]
sub edx, eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x94], edx
mov edx, dword [ebp - 0x38]
lea ecx, [ebp - 0x90]
push ecx
mov ecx, dword [ebp - 0x50]
push eax
push esi
push ecx
mov ecx, dword [ebp - 0x74]
push edx
mov edx, dword [ebp - 0x48]
push eax
call fcn.0040f74a
mov edx, dword [ebp - 0x54]
add esp, 0x18
mov dword [ebp - 0x98], eax
lea ecx, [eax + ebx]
cmp edx, ecx
jge 0x40fc9a
mov esi, dword [ebp - 0x40]
mov eax, ecx
sub esi, dword [ebp - 0x30]
add edx, dword [ebp - 0x30]
sub eax, dword [ebp - 0x54]
mov dword [ebp - 0x58], esi
mov esi, dword [ebp - 0x48]
mov edi, dword [ebp - 0x58]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x4c]
cmp edx, eax
jge 0x40fc82
mov al, byte [edx + esi]
cmp al, byte [edi + edx]
mov eax, dword [ebp - 0x5c]
jne 0x40fc82
inc ecx
inc edx
sub dword [ebp - 0x3c], 1
jne 0x40fc72
mov edi, dword [ebp - 0x84]
xor esi, esi
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x4c]
cmp eax, edx
jne 0x40fca5
test eax, eax
jne 0x40fd07
lea eax, [edx + 8]
cmp dword [ebp - 0x98], eax
jg 0x40fd0c
mov edx, dword [ebp - 0x94]
mov ecx, dword [ebp - 0x38]
add edx, ecx
mov eax, dword [ebp - 0x5c]
cmp edx, eax
mov edi, dword [ebp - 0x84]
mov edx, dword [ebp - 0x4c]
jge 0x40fced
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x48]
add edx, ecx
mov ebx, dword [ebp - 0x88]
mov al, byte [edx + eax]
cmp al, byte [ecx]
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x5c]
jne 0x40fced
dec edx
mov dword [ebp - 0x4c], edx
inc ebx
dec dword [ebp - 0x50]
inc ecx
mov dword [ebp - 0x88], ebx
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x68]
cmp ebx, ecx
jge 0x40fd0f
jmp 0x40fc1f
mov ecx, dword [ebp - 0x68]
jmp 0x40fd19
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x98]
cmp eax, edx
jne 0x40fd21
cmp ebx, ecx
jne 0x410092
mov eax, dword [ebp - 0x60]
mov edx, esi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x54], esi
cmp eax, ebx
jge 0x40fdb2
mov esi, dword [ebp - 0x48]
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x8c]
add ecx, edx
cmp ecx, dword [ebp - 0x5c]
jge 0x40fda7
mov ecx, dword [ebp - 0x30]
add eax, edx
inc ecx
mov ebx, dword [ebp - 0x88]
mov al, byte [eax + edi]
mov edi, dword [ebp - 0x8c]
add edi, edx
cmp byte [edi + esi], al
mov edi, dword [ebp - 0x3c]
cmovne ecx, dword [ebp - 0x30]
inc edx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x50], ecx
mov eax, dword [ebp - 0x50]
lea edx, [ecx + ecx]
sub edx, dword [ebp - 0x38]
lea ecx, [edi + edi]
sub ecx, dword [ebp - 0x54]
cmp edx, ecx
mov edx, dword [ebp - 0x38]
cmovle eax, edi
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x38]
cmovle eax, dword [ebp - 0x54]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x60]
add eax, edx
cmp eax, ebx
mov eax, dword [ebp - 0x60]
jl 0x40fd39
mov edi, dword [ebp - 0x84]
xor esi, esi
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x4c], esi
cmp ebx, ecx
jge 0x40fe55
xor ecx, ecx
mov dword [ebp - 0x38], esi
inc ecx
mov edx, esi
inc eax
mov dword [ebp - 0x7c], ecx
cmp ebx, eax
jl 0x40fe55
mov esi, dword [ebp - 0x90]
mov edi, edx
mov eax, dword [ebp - 0x48]
dec esi
add eax, esi
mov esi, dword [ebp - 0x60]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x40]
dec eax
add eax, ebx
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x3c], ecx
cmp dword [ebp - 0x90], ecx
jl 0x40fe4a
mov al, byte [eax]
lea ecx, [edx + 1]
mov edx, dword [ebp - 0x50]
cmp byte [edx], al
mov eax, dword [ebp - 0x38]
cmovne ecx, dword [ebp - 0x58]
mov dword [ebp - 0x30], ecx
add ecx, ecx
lea edx, [eax + eax]
mov eax, dword [ebp - 0x7c]
sub ecx, eax
sub edx, edi
inc eax
dec dword [ebp - 0x80]
dec dword [ebp - 0x50]
cmp ecx, edx
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x7c]
cmovle eax, edi
mov edi, eax
mov eax, dword [ebp - 0x30]
cmovle eax, dword [ebp - 0x38]
mov dword [ebp - 0x38], eax
lea eax, [ecx + esi]
cmp ebx, eax
mov eax, dword [ebp - 0x80]
jge 0x40fdee
mov dword [ebp - 0x4c], edi
xor esi, esi
mov edi, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x4c]
mov eax, ebx
mov edx, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x60]
add eax, edx
cmp eax, dword [ebp - 0x3c]
jle 0x40ff4e
sub ecx, ebx
mov dword [ebp - 0x80], esi
add ecx, edx
mov dword [ebp - 0x7c], esi
add ecx, dword [ebp - 0x60]
mov eax, esi
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x58], esi
test ecx, ecx
jle 0x40ff3e
mov eax, edx
mov edx, dword [ebp - 0x60]
sub eax, ecx
add edx, eax
add edx, dword [ebp - 0x40]
mov dword [ebp - 0x94], edx
mov edx, dword [ebp - 0x8c]
add edx, eax
mov eax, dword [ebp - 0x3c]
add edx, dword [ebp - 0x48]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp - 0x90]
sub edx, dword [ebp - 0x4c]
add edx, dword [ebp - 0x48]
add eax, dword [ebp - 0x40]
mov ebx, edx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x6c], edx
mov al, byte [eax]
mov edi, dword [ebp - 0x94]
mov ecx, dword [ebp - 0x80]
mov esi, dword [ebp - 0x3c]
inc ecx
mov edx, dword [ebp - 0x7c]
cmp byte [edi], al
mov al, byte [ebx]
cmovne ecx, dword [ebp - 0x80]
cmp byte [esi], al
mov eax, edx
lea edi, [ecx - 1]
cmovne edi, ecx
mov ecx, dword [ebp - 0x58]
cmp edi, eax
mov dword [ebp - 0x80], edi
cmovg eax, edi
inc ecx
cmp edi, edx
mov dword [ebp - 0x7c], eax
mov eax, ecx
mov dword [ebp - 0x58], ecx
cmovle eax, dword [ebp - 0x38]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x50]
inc eax
inc dword [ebp - 0x94]
inc dword [ebp - 0x3c]
inc ebx
mov dword [ebp - 0x50], eax
cmp ecx, dword [ebp - 0x30]
jl 0x40fecd
mov eax, dword [ebp - 0x38]
xor esi, esi
mov edi, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x88]
mov edx, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x38], eax
sub eax, ecx
mov ecx, dword [ebp - 0x4c]
add edx, eax
sub ecx, dword [ebp - 0x38]
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x6c], esi
test edx, edx
jle 0x40ff96
mov eax, dword [ebp - 0x48]
mov ecx, esi
add eax, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x60]
add edi, dword [ebp - 0x40]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x64]
add eax, dword [ebp - 0x9c]
mov ebx, dword [ebp - 0x58]
mov esi, eax
mov dword [ebp - 0x30], eax
mov al, byte [ecx + edi]
sub al, byte [ecx + ebx]
mov byte [ecx + esi], al
inc ecx
cmp ecx, edx
jl 0x40ff7a
mov edi, dword [ebp - 0x84]
xor esi, esi
mov ebx, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x40]
mov eax, ebx
sub eax, dword [ebp - 0x4c]
mov dword [ebp - 0x3c], eax
sub eax, edx
sub eax, dword [ebp - 0x60]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x6c], esi
test eax, eax
jle 0x40ffe4
mov esi, dword [ebp - 0x60]
mov eax, dword [ebp - 0x70]
add esi, edx
mov edx, dword [ebp - 0x30]
add esi, ecx
add eax, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0x6c]
mov ebx, eax
mov dword [ebp - 0x58], eax
mov al, byte [esi]
mov byte [ebx + ecx], al
inc ecx
inc esi
cmp ecx, edx
jl 0x40ffcb
mov ebx, dword [ebp - 0x88]
xor esi, esi
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x30]
add dword [ebp - 0x9c], edx
lea edx, [ebp - 0xc]
mov ecx, dword [ebp - 0x54]
add dword [ebp - 0xa0], eax
call fcn.0040f7fb
push 8
lea eax, [ebp - 0xc]
mov edx, edi
push eax
lea ecx, [ebp - 0x34]
call fcn.00411dbd
cmp dword [ebp - 0x34], 0
jne 0x4101bc
mov ecx, dword [ebp - 0x30]
lea edx, [ebp - 0xc]
call fcn.0040f7fb
push 8
lea eax, [ebp - 0xc]
mov edx, edi
push eax
lea ecx, [ebp - 0x34]
call fcn.00411dbd
cmp dword [ebp - 0x34], 0
jne 0x4101bc
mov eax, dword [ebp - 0x90]
lea edx, [ebp - 0xc]
sub eax, dword [ebp - 0x4c]
mov ecx, eax
mov dword [ebp - 0x6c], eax
sub ecx, dword [ebp - 0x54]
sub ecx, dword [ebp - 0x8c]
call fcn.0040f7fb
push 8
lea eax, [ebp - 0xc]
mov edx, edi
push eax
lea ecx, [ebp - 0x34]
call fcn.00411dbd
cmp dword [ebp - 0x34], 0
jne 0x4101bc
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x90]
sub eax, ebx
cmp ebx, ecx
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x98]
jl 0x40fbeb
sub esp, 0x14
lea ecx, [ebp - 0x34]
mov edx, edi
call fcn.00411edb
cmp dword [ebp - 0x34], 0
jne 0x4101bc
mov ebx, dword [ebp - 0xa4]
mov edi, esi
push ebx
call fcn.00461ac2
mov dword [ebp - 0x6c], eax
pop ecx
cmp eax, 0xffffffff
je 0x4101bc
lea ecx, [eax - 0x20]
lea edx, [ebp - 0x24]
call fcn.0040f7fb
sub esp, 0xc
lea ecx, [ebp - 0x34]
mov edx, ebx
call fcn.00411ce8
mov edi, eax
test edi, edi
je 0x4101bc
mov ecx, dword [ebp - 0x9c]
mov edx, edi
push ecx
push dword [ebp - 0x64]
lea ecx, [ebp - 0x34]
call fcn.00411dbd
cmp dword [ebp - 0x34], 0
jne 0x4101bc
sub esp, 0x14
lea ecx, [ebp - 0x34]
mov edx, edi
call fcn.00411edb
cmp dword [ebp - 0x34], 0
jne 0x4101bc
push ebx
mov edi, esi
call fcn.00461ac2
pop ecx
cmp eax, 0xffffffff
je 0x4101bc
sub eax, dword [ebp - 0x6c]
lea edx, [ebp - 0x1c]
mov ecx, eax
call fcn.0040f7fb
sub esp, 0xc
lea ecx, [ebp - 0x34]
mov edx, ebx
call fcn.00411ce8
mov edi, eax
test edi, edi
je 0x4101bc
mov ecx, dword [ebp - 0xa0]
mov edx, edi
push ecx
push dword [ebp - 0x70]
lea ecx, [ebp - 0x34]
call fcn.00411dbd
cmp dword [ebp - 0x34], 0
jne 0x4101bc
sub esp, 0x14
lea ecx, [ebp - 0x34]
mov edx, edi
call fcn.00411edb
cmp dword [ebp - 0x34], 0
jne 0x4101bc
push esi
push esi
push ebx
mov edi, esi
call fcn.004635b8
add esp, 0xc
test eax, eax
jne 0x4101bc
push ebx
push 1
lea eax, [ebp - 0x2c]
push 0x20
push eax
call fcn.00463aee
add esp, 0x10
cmp eax, 1
jne 0x4101bc
push ebx
call fcn.004628fa
pop ecx
test eax, eax
je 0x40fafc
mov ebx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x70]
xor esi, esi
push dword [ebp - 0xa4]
mov dword [ebp - 0x70], eax
inc esi
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x48], eax
call fcn.004628fa
pop ecx
test edi, edi
je 0x410239
sub esp, 0x14
lea ecx, [ebp - 0x34]
mov edx, edi
call fcn.00411edb
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x70], eax
jmp 0x410239
xor esi, esi
inc esi
jmp 0x410245
xor esi, esi
inc esi
jmp 0x40fb14
xor esi, esi
inc esi
cmp ebx, 0xffffffff
je 0x410245
push ebx
call fcn.00463683
pop ecx
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x40fb06
jmp 0x40faff