Function at 0x41a7c0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x30]
push edi
xor eax, eax
mov ecx, 8
lea edi, [esp + 8]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x38]
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0xc]
push ecx
push edi
push ebx
call fcn.0041aa30
add esp, 0x10
test eax, eax
jne 0x41a7f8
pop edi
pop ebx
add esp, 0x20
ret
mov edx, dword [esp + 0x30]
push esi
mov esi, dword [esp + 0x30]
push 0x104
push edx
lea eax, [esi + 0x10]
push eax
call fcn.00409b20
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
mov dword [esi + 0x114], ecx
mov ecx, dword [esp + 0x28]
cmp eax, ecx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], edi
mov edx, eax
ja 0x41a830
mov edx, ecx
mov ebx, dword [esp + 0x40]
cmp edx, ebx
jbe 0x41a840
cmp eax, ecx
ja 0x41a842
mov eax, ecx
jmp 0x41a842
mov eax, ebx
add eax, 0x64
mov dword [esi + 0x11c], eax
imul eax, eax, 0x1c
push ebp
push 0
push 0x1cd
push str.C:SrcToolsSourceMopaq_srcMPQAPI.cpp
push eax
mov dword [esi + 0x120], eax
call fcn.00408660
mov ecx, dword [esi + 0x120]
mov ebp, dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov edx, ecx
mov edi, eax
shr ecx, 2
xor eax, eax
mov dword [esi + 0x128], edi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x41a905
mov eax, dword [esi + 0x114]
mov edx, dword [esp + 0x24]
mov ecx, dword [esi + 8]
push 0
push 0
add eax, edx
push eax
push ecx
call ebp
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + 8]
push 0
shl eax, 4
lea edx, [esp + 0x40]
push edx
push eax
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x128]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
push 3
push str._block_table_
call fcn.0041c0d0
mov edx, dword [esp + 0x34]
push eax
mov eax, dword [esi + 0x128]
shl edx, 4
push edx
push eax
call fcn.0041c010
mov ecx, dword [esi + 0x11c]
mov edx, dword [esi + 0x128]
push ecx
push edx
call fcn.0041ab40
add esp, 0x1c
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x41a90f
mov eax, ebx
push 0
push 0x1e2
mov dword [esi + 0x12c], eax
shl eax, 4
push str.C:SrcToolsSourceMopaq_srcMPQAPI.cpp
lea ebx, [esi + 0x130]
push eax
mov dword [ebx], eax
call fcn.00408660
mov ecx, dword [ebx]
mov edx, ecx
mov edi, eax
shr ecx, 2
or eax, 0xffffffff
mov dword [esi + 0x138], edi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x28]
test eax, eax
je 0x41a9a2
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x114]
push 0
push 0
add eax, ecx
mov ecx, dword [esi + 8]
push eax
push ecx
call ebp
mov edx, dword [ebx]
mov eax, dword [esi + 0x138]
mov ecx, dword [esi + 8]
push 0
push ebx
push edx
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
push 3
push str._hash_table_
call fcn.0041c0d0
mov edx, dword [ebx]
push eax
mov eax, dword [esi + 0x138]
push edx
push eax
call fcn.0041c010
add esp, 0x14
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
cmp eax, edx
pop ebp
mov ecx, eax
jb 0x41a9b3
mov ecx, edx
cmp ecx, 0x20
jae 0x41a9bf
mov eax, 0x20
jmp 0x41a9c5
cmp eax, edx
jb 0x41a9c5
mov eax, edx
mov dword [esi + 0x118], eax
mov eax, dword [esp + 0x44]
test eax, eax
je 0x41a9ec
mov eax, dword [esp + 0x28]
test eax, eax
je 0x41a9ec
mov ecx, dword [esi + 0x128]
push eax
push ecx
push esi
call fcn.00419f00
add esp, 0xc
mov eax, dword [esi + 0xc]
test al, 0x24
je 0x41aa08
push esi
call fcn.0041aba0
add esp, 4
pop esi
pop edi
mov eax, 1
pop ebx
add esp, 0x20
ret
test al, 1
jne 0x41aa16
mov dword [esi + 0x148], 1
pop esi
pop edi
mov eax, 1
pop ebx
add esp, 0x20
ret