Function at 0xa2a4f0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x24
push ebx
mov ebx, dword [esp + 0x2c]
push ebp
push esi
mov eax, dword [ebx + 0x27c]
lea esi, [ebx + 0x278]
test eax, eax
push edi
je 0xa2a527
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
jne 0xa2a60e
mov edx, dword [ebx + 0x290]
mov edi, dword [esp + 0x3c]
lea ecx, [ebx + 0x294]
push 0
push ecx
push edx
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ecx, dword [esi + 4]
mov ebp, dword [ebx + 0x270]
test ecx, ecx
jne 0xa2a553
xor edx, edx
jmp 0xa2a569
mov edx, dword [esi + 8]
mov eax, 0x2aaaaaab
sub edx, ecx
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, ebp
jae 0xa2a5a0
test ecx, ecx
jne 0xa2a575
xor edx, edx
jmp 0xa2a58b
mov edx, dword [esi + 8]
mov eax, 0x2aaaaaab
sub edx, ecx
imul edx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esi + 8]
lea eax, [esp + 0x1c]
sub ebp, edx
push eax
push ebp
push ecx
mov ecx, esi
call fcn.00a33a50
jmp 0xa2a5c1
mov ecx, esi
call fcn.00a339a0
cmp ebp, eax
jae 0xa2a5c1
mov edx, dword [esi + 8]
mov ecx, dword [esi + 4]
lea eax, [ebp + ebp*2]
push edx
lea edx, [ecx + eax*8]
mov ecx, esi
push edx
call fcn.00a33d50
mov eax, dword [ebx + 0x270]
mov ecx, dword [ebx + 0x27c]
xor ebp, ebp
lea esi, [eax + eax*2]
lea eax, [esp + 0x38]
shl esi, 3
push ebp
push eax
push esi
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ecx, dword [ebx + 0x290]
mov eax, dword [ebx + 0x294]
xor edx, edx
add esi, ecx
adc edx, eax
mov dword [ebx + 0x298], esi
mov dword [ebx + 0x290], ebp
mov dword [ebx + 0x29c], edx
mov dword [ebx + 0x294], ebp
mov eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x44]
test ebp, ebp
mov dword [eax], 0
je 0xa2a939
mov edi, dword [ebx + 0x28c]
mov esi, dword [ebx + 0x294]
mov eax, dword [ebx + 0x288]
mov edx, dword [ebx + 0x290]
cmp edi, esi
jl 0xa2a668
jg 0xa2a646
cmp eax, edx
jb 0xa2a668
mov ecx, dword [ebx + 0x2a8]
xor eax, eax
add ecx, edx
adc eax, esi
cmp edi, eax
jl 0xa2a851
jg 0xa2a668
cmp dword [ebx + 0x288], ecx
jb 0xa2a851
mov esi, dword [ebx + 0x25c]
mov eax, dword [ebx + 0x258]
cmp edi, esi
jg 0xa2a939
jl 0xa2a68a
cmp dword [ebx + 0x288], eax
jae 0xa2a939
mov eax, dword [ebx + 0x288]
mov ebp, dword [ebx + 0x270]
push edi
push eax
push 0
push ebp
call fcn.00a7f350
mov ecx, dword [ebx + 0x258]
push esi
push ecx
push edx
push eax
call fcn.00a7f2a0
mov esi, eax
cmp esi, ebp
jb 0xa2a6ba
lea esi, [ebp - 1]
jmp 0xa2a6c0
test esi, esi
jge 0xa2a6c0
xor esi, esi
mov ebp, dword [ebx + 0x27c]
lea ecx, [esi + esi*2]
lea eax, [ebp + ecx*8]
mov ecx, dword [ebp + ecx*8 + 4]
cmp edi, ecx
jg 0xa2a700
jl 0xa2a6e3
mov ecx, dword [ebx + 0x288]
mov edx, dword [eax]
cmp ecx, edx
jae 0xa2a700
test esi, esi
je 0xa2a700
mov ecx, dword [eax - 0x14]
sub eax, 0x18
dec esi
cmp edi, ecx
jl 0xa2a6e3
jg 0xa2a700
mov ecx, dword [ebx + 0x288]
mov edx, dword [eax]
cmp ecx, edx
jb 0xa2a6e3
lea edx, [esi + esi*2]
xor ecx, ecx
lea eax, [ebp + edx*8]
mov edx, dword [ebp + edx*8 + 0x10]
add edx, dword [eax]
adc ecx, dword [eax + 4]
cmp edi, ecx
jl 0xa2a73c
jg 0xa2a720
cmp dword [ebx + 0x288], edx
jbe 0xa2a73c
mov edx, dword [eax + 0x28]
add eax, 0x18
inc esi
xor ecx, ecx
add edx, dword [eax]
adc ecx, dword [eax + 4]
cmp edi, ecx
jg 0xa2a720
jl 0xa2a73c
cmp dword [ebx + 0x288], edx
ja 0xa2a720
mov ecx, dword [ebx + 0x298]
lea edi, [esi + esi*2]
shl edi, 3
lea edx, [esp + 0x18]
push 0
mov eax, dword [edi + ebp + 8]
push edx
add eax, ecx
mov dword [esp + 0x1c], eax
mov ecx, dword [edi + ebp + 0xc]
mov ebp, dword [ebx + 0x29c]
push eax
mov eax, dword [esp + 0x48]
adc ecx, ebp
push eax
mov dword [esp + 0x28], ecx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
jne 0xa2a788
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0xa2a8e4
mov ecx, dword [ebx + 0x27c]
mov ebp, dword [edi + ecx + 0x14]
push ebp
call fcn.00a2a440
add esp, 4
lea edx, [esp + 0x38]
mov dword [esp + 0x10], eax
push 0
push edx
push ebp
push eax
mov eax, dword [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0xa2a927
cmp dword [esp + 0x38], ebp
jne 0xa2a927
mov eax, dword [ebx + 0x27c]
mov ecx, dword [ebx + 0x2a8]
mov edx, dword [edi + eax + 0x10]
cmp ecx, edx
jae 0xa2a7f7
mov eax, dword [ebx + 0x2a4]
push edx
push eax
call fcn.009ef400
add esp, 8
mov dword [ebx + 0x2a4], eax
test eax, eax
je 0xa2a8fe
mov eax, dword [ebx + 0x27c]
mov ecx, edi
add ecx, eax
mov edx, dword [ecx]
mov dword [ebx + 0x290], edx
mov eax, dword [ecx + 4]
mov dword [ebx + 0x294], eax
mov ecx, dword [ebx + 0x27c]
mov edx, dword [edi + ecx + 0x10]
mov dword [ebx + 0x2ac], esi
mov dword [ebx + 0x2a8], edx
mov eax, dword [ebx + 0x27c]
mov edx, dword [ebx + 0x2a4]
mov ecx, dword [edi + eax + 0x10]
mov eax, dword [esp + 0x10]
push ecx
push edx
push ebp
push eax
call fcn.00a6e7e0
add esp, 0x10
call fcn.00a2a4d0
mov ebp, dword [esp + 0x44]
mov edx, dword [ebx + 0x288]
mov ecx, dword [ebx + 0x290]
mov esi, dword [ebx + 0x27c]
sub edx, ecx
mov ecx, dword [ebx + 0x2ac]
mov eax, ebp
lea ecx, [ecx + ecx*2]
mov ecx, dword [esi + ecx*8 + 0x10]
sub ecx, edx
cmp ebp, ecx
jbe 0xa2a87c
mov eax, ecx
mov esi, dword [ebx + 0x2a4]
mov edi, dword [esp + 0x40]
mov ecx, eax
add esi, edx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx + 0x288]
add ecx, eax
mov dword [ebx + 0x288], ecx
mov edi, dword [ebx + 0x28c]
mov ecx, dword [esp + 0x48]
adc edi, 0
sub ebp, eax
mov dword [ebx + 0x28c], edi
mov edx, dword [ecx]
add edx, eax
mov dword [esp + 0x44], ebp
mov dword [ecx], edx
mov ecx, dword [esp + 0x40]
add ecx, eax
test ebp, ebp
mov dword [esp + 0x40], ecx
jne 0xa2a624
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x24
ret
push str._Compressed_read__SetFilePointer_failed_n
call fcn.009fe320
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
push str._unable_to_allocate_cache_storage_block_n
call fcn.009fe320
add esp, 4
mov dword [ebx + 0x2a8], 0
call fcn.00a2a4d0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x24
ret
push str._Compressed_read__ReadFile_failed_n
call fcn.009fe320
add esp, 4
call fcn.00a2a4d0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x24
ret