Function at 0x42dda0
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push esi
push edi
cmp dword [ebp + 0xc], 0
jne 0x42ddb5
mov dword [ebp + 0xc], 0xffffffff
push 1
push 0x80000000
mov eax, dword [ebp + 0x10]
push eax
call fcn.00438c44
add esp, 0xc
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x42de0b
mov edx, dword [ebp + 0x18]
mov dword [edx], 3
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
add ecx, 0x28
mov edi, eax
xor eax, eax
mov esi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
jmp 0x42df9e
push 0
mov edx, dword [ebp - 4]
mov ecx, dword [edx]
push ecx
call sub.KERNEL32.dll_GetFileSize
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, 0x244
push eax
call sub.KERNEL32.dll_EnterCriticalSection
cmp dword [ebp + 0xc], 0xffffffff
jle 0x42de91
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x138]
mov eax, dword [ecx + 8]
cmp eax, dword [ebp + 0xc]
jle 0x42de67
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x138]
mov eax, dword [ecx + 4]
mov edx, dword [ebp + 0xc]
mov ecx, dword [eax + edx*8 + 8]
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x138]
mov eax, dword [edx + 4]
mov edx, dword [ebp + 0xc]
sub ecx, dword [eax + edx*8]
jmp 0x42de6a
or ecx, 0xffffffff
mov eax, dword [ebp - 8]
add eax, 4
cmp ecx, eax
jae 0x42de91
mov edx, dword [ebp + 0xc]
push edx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x138]
push eax
call fcn.004216a4
mov dword [ebp + 0xc], 0xffffffff
add esp, 8
mov edx, dword [ebp + 0xc]
push edx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x138]
push eax
call fcn.0042154c
add esp, 8
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x42df4c
push 4
lea eax, [ebp + 0x14]
push eax
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x138]
mov eax, dword [ecx]
push eax
call fcn.00438dc0
add esp, 0xc
cmp eax, 4
je 0x42dee0
mov edx, dword [ebp + 0x18]
mov dword [edx], 5
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x42df0d
mov eax, dword [ebp - 8]
push eax
mov edx, dword [ebp - 4]
push edx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x138]
mov edx, dword [eax]
push edx
mov ecx, dword [ebp + 8]
push ecx
call fcn.0042e094
add esp, 0x10
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov eax, dword [ebp + 0x18]
cmp dword [eax], 0
je 0x42df2f
lea ecx, [ebp + 0xc]
push ecx
push 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x138]
push edx
call fcn.004215f4
add esp, 0xc
jmp 0x42df4c
lea ecx, [ebp + 0xc]
push ecx
push 0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x138]
push edx
call fcn.004215f4
add esp, 0xc
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
push eax
call fcn.00438d70
pop ecx
mov edx, dword [ebp + 8]
add edx, 0x244
push edx
call sub.KERNEL32.dll_LeaveCriticalSection
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
je 0x42df9b
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
add eax, 0x28
mov edi, edx
mov esi, eax
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
jmp 0x42df9e
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ecx
pop ecx
pop ebp
ret