Function at 0x4297a4
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push esi
push edi
cmp dword [ebp + 0xc], 0
jne 0x4297b9
mov dword [ebp + 0xc], 0xffffffff
push 1
push 0x80000000
mov eax, dword [ebp + 0x10]
push eax
call fcn.00434518
add esp, 0xc
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x42980f
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 0x4299a2
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 0x429895
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x138]
mov eax, dword [ecx + 8]
cmp eax, dword [ebp + 0xc]
jle 0x42986b
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 0x42986e
or ecx, 0xffffffff
mov eax, dword [ebp - 8]
add eax, 4
cmp ecx, eax
jae 0x429895
mov edx, dword [ebp + 0xc]
push edx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x138]
push eax
call fcn.0041ff84
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.0041fe2c
add esp, 8
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x429950
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.00434694
add esp, 0xc
cmp eax, 4
je 0x4298e4
mov edx, dword [ebp + 0x18]
mov dword [edx], 5
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x429911
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.00429a98
add esp, 0x10
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov eax, dword [ebp + 0x18]
cmp dword [eax], 0
je 0x429933
lea ecx, [ebp + 0xc]
push ecx
push 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x138]
push edx
call fcn.0041fed4
add esp, 0xc
jmp 0x429950
lea ecx, [ebp + 0xc]
push ecx
push 0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x138]
push edx
call fcn.0041fed4
add esp, 0xc
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
push eax
call fcn.00434644
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 0x42999f
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 0x4299a2
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ecx
pop ecx
pop ebp
ret