Function at 0x1013af60
Capabilities:
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc4
mov eax, dword [0x102519c8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
push esi
mov esi, dword [ebx + 0x428]
push edi
lea edi, [ebx + 0x428]
mov dword [ebp - 0xa4], ebx
mov ecx, edi
mov dword [ebp - 0xc0], edi
push dword [esi + 4]
call fcn.1013b890
mov eax, dword [edi]
add ebx, 0x14
mov dword [eax + 4], esi
mov eax, dword [edi]
mov dword [eax], esi
mov eax, dword [edi]
mov dword [eax + 8], esi
mov dword [edi + 4], 0
call fcn.10003180
mov edi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [eax + 0x154]
test esi, esi
je 0x1013afca
push esi
call edi
push 8
call fcn.10003680
add esp, 4
push 0
push 0
push 3
push 0
push 1
push SysReAllocString
push ebx
test eax, eax
je 0x1013afec
call eax
jmp 0x1013aff2
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [ebp - 0x9c], eax
test esi, esi
je 0x1013b005
push esi
call ebx
cmp dword [ebp - 0x9c], 0xffffffff
je 0x1013b318
call fcn.10003180
mov esi, dword [eax + 0x154]
test esi, esi
je 0x1013b024
push esi
call edi
push 0x11
call fcn.10003680
add esp, 4
push 0
push dword [ebp - 0x9c]
test eax, eax
je 0x1013b03e
call eax
jmp 0x1013b044
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
test esi, esi
je 0x1013b04d
push esi
call ebx
lea eax, [edi + 1]
mov dword [ebp - 0xa0], edi
push eax
mov dword [ebp - 0xac], eax
call sub.msvcrt.dll_void____cdecl_operator_new___unsigned_int_
add esp, 4
mov dword [ebp - 0xbc], 0
lea ecx, [ebp - 0xbc]
mov dword [ebp - 0xb8], 0
push dword [ebp - 0xb4]
push eax
call fcn.1013a9c0
mov edi, dword [ebp - 0xbc]
mov dword [ebp - 0xb0], edi
test edi, edi
je 0x1013b2ed
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x98], eax
call fcn.10003180
mov esi, dword [eax + 0x154]
test esi, esi
je 0x1013b0c1
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 9
call fcn.10003680
add esp, 4
push 0
test eax, eax
je 0x1013b0e9
lea ecx, [ebp - 0xa0]
push ecx
push dword [ebp - 0x98]
push edi
push dword [ebp - 0x9c]
call eax
jmp 0x1013b103
lea eax, [ebp - 0xa0]
push eax
push dword [ebp - 0x98]
push edi
push dword [ebp - 0x9c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov dword [ebp - 0x98], eax
test esi, esi
je 0x1013b110
push esi
call ebx
cmp dword [ebp - 0x98], 0
je 0x1013b2e2
mov edx, dword [ebp - 0xa0]
test edx, edx
je 0x1013b2e2
mov ecx, dword [ebp - 0xa4]
push edx
push edi
push 0x10
lea eax, [ecx + 4]
push eax
push edx
push edi
call fcn.1013ac50
mov ecx, eax
test ecx, ecx
jle 0x1013b2e2
cmp ecx, dword [ebp - 0xac]
jge 0x1013b2e2
mov eax, 0x38e38e39
mov byte [edi + ecx], 0
mul ecx
mov esi, edx
shr esi, 5
mov dword [ebp - 0xa4], esi
test esi, esi
je 0x1013b2e2
mov ebx, edi
lea eax, [ebp - 0x94]
sub ebx, eax
mov edi, edi
push edi
lea ecx, [ebp - 0x98]
call fcn.10002490
mov edx, 0x40
lea eax, [ebp - 0x94]
jmp 0x1013b1a0
lea ecx, [edx + 0x7fffffbe]
test ecx, ecx
je 0x1013b1c0
movzx ecx, word [ebx + eax]
test cx, cx
je 0x1013b1c0
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x1013b1a0
jmp 0x1013b1c4
test edx, edx
jne 0x1013b1c7
sub eax, 2
xor ecx, ecx
mov word [eax], cx
mov eax, dword [edi + 0x80]
mov dword [ebp - 0x14], eax
mov eax, dword [edi + 0x84]
mov dword [ebp - 0x10], eax
mov eax, dword [edi + 0x88]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 0x8c]
mov edi, dword [ebp - 0xc0]
mov ecx, edi
mov dword [ebp - 8], eax
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0xac]
push eax
call fcn.1005e9c0
mov esi, dword [ebp - 0xac]
cmp esi, dword [edi]
je 0x1013b24f
mov ecx, dword [esi + 0x10]
mov eax, dword [ebp - 0x98]
mov edi, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x1013b246
test dx, dx
je 0x1013b242
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x1013b246
add eax, 4
add ecx, 4
test dx, dx
jne 0x1013b220
xor eax, eax
jmp 0x1013b24b
sbb eax, eax
or eax, 1
test eax, eax
jns 0x1013b28f
lea eax, [ebp - 0x98]
mov ecx, edi
mov dword [ebp - 0xc4], eax
lea eax, [ebp - 0xa5]
push eax
lea eax, [ebp - 0xc4]
push eax
push 0x102175c4
call fcn.1013a500
push eax
add eax, 0x10
mov ecx, edi
push eax
push esi
lea eax, [ebp - 0xb4]
push eax
call fcn.1013a6f0
mov esi, dword [ebp - 0xb4]
lea edi, [esi + 0x14]
mov ecx, 0x24
lea esi, [ebp - 0x94]
or eax, 0xffffffff
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebp - 0x98]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1013b2bd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0xb0]
add ebx, 0x90
add edi, 0x90
sub dword [ebp - 0xa4], 1
mov dword [ebp - 0xb0], edi
jne 0x1013b180
push dword [ebp - 0x9c]
call fcn.1006c110
mov esi, dword [ebp - 0xb8]
test esi, esi
je 0x1013b318
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x1013b318
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock xadd dword [esi + 8], ebx
dec ebx
jne 0x1013b318
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.101f99c6
mov esp, ebp
pop ebp
ret