Function at 0x433b78
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push esi
push edi
cmp dword [ebp + 0xc], 0
jne 0x433b8d
mov dword [ebp + 0xc], 0xffffffff
push 1
push 0x80000000
mov eax, dword [ebp + 0x10]
push eax
call fcn.0043eb5c
add esp, 0xc
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x433be3
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 0x433d79
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 0x433c6c
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x138]
mov eax, dword [ecx + 0xc]
cmp eax, dword [ebp + 0xc]
jle 0x433c42
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]
sub ecx, 8
jmp 0x433c45
or ecx, 0xffffffff
mov eax, dword [ebp - 8]
add eax, 4
cmp ecx, eax
jae 0x433c6c
mov edx, dword [ebp + 0xc]
push edx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x138]
push eax
call fcn.00429a90
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.004297fc
add esp, 8
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x433d27
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.0043ecd8
add esp, 0xc
cmp eax, 4
je 0x433cbb
mov edx, dword [ebp + 0x18]
mov dword [edx], 5
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x433ce8
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.00433e70
add esp, 0x10
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov eax, dword [ebp + 0x18]
cmp dword [eax], 0
je 0x433d0a
lea ecx, [ebp + 0xc]
push ecx
push 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x138]
push edx
call fcn.00429920
add esp, 0xc
jmp 0x433d27
lea ecx, [ebp + 0xc]
push ecx
push 0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x138]
push edx
call fcn.00429920
add esp, 0xc
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
push eax
call fcn.0043ec88
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 0x433d76
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 0x433d79
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ecx
pop ecx
pop ebp
ret