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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4e4
mov eax, dword [0x4e3a68]
push ebx
push esi
push edi
mov esi, dword [sym.imp.KERNEL32.dll_CreateFileW]
xor edx, edx
mov dword [esp + 0x2c], eax
xor eax, eax
mov word [esp + 0x298], dx
mov ecx, 0x95
lea edi, [esp + 0x29a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push edx
push edx
xor eax, eax
mov ecx, 0x98
lea edi, [esp + 0x38]
rep stosd dword es:[edi], eax
push 3
push edx
push 7
stosw word es:[edi], ax
mov edi, dword [ebp + 8]
push 0xc0000000
push edi
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], 1
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edx
call esi
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x47207f
mov esi, 0x501
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push edi
push str.Unable_to_Create_TOCFile__s___dwRet__0x_08x___Windows_RC__0x_08x
push str.Engine
call fcn.004572b0
add esp, 0x14
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0xc]
push 0
push 0
push 3
push 0
push 0
push 0xc0000000
push edi
call esi
mov esi, eax
cmp esi, 0xffffffff
mov dword [esp + 0x20], esi
jne 0x4720cf
mov esi, 0x510
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push edi
push str.Unable_to_Create_HashFile__s___dwRet__0x_08x___Windows_RC__0x_08x
push str.Engine
call fcn.004572b0
add esp, 0x14
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ecx, dword [0x4e3a68]
mov edi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
lea ecx, [ecx + ecx*2]
shl ecx, 1
cmp ecx, eax
push 0
push 0
jae 0x4720f4
push ecx
jmp 0x472100
mov dword [0x4e3a68], 0
push 0
push esi
call edi
mov ecx, dword [ebp + 0x10]
push ecx
push 0x12c
lea edx, [esp + 0x2a0]
push edx
call fcn.0040120a
lea eax, [esp + 0x298]
push eax
call dword [sym.imp.MSVCR71.dll__wcsupr]
lea ecx, [esp + 0x29c]
push ecx
call dword [sym.imp.MSVCR71.dll_wcslen]
push eax
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x2a8]
push eax
call fcn.00455fa0
mov eax, dword [esp + 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_ReadFile]
add esp, 0x14
test eax, eax
je 0x4721fe
lea ecx, [ecx]
mov eax, dword [esp + 0x20]
push 0
lea ecx, [esp + 0x14]
push ecx
push 6
lea edx, [esp + 0x24]
push edx
push eax
call esi
test eax, eax
je 0x47233e
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4721fe
mov cx, word [esp + 0x18]
cmp cx, word [esp + 0x28]
jne 0x4721e5
mov edx, dword [esp + 0x1a]
imul edx, edx, 0x262
push 0
push 0
push edx
push ebx
call edi
push 0
lea eax, [esp + 0x14]
push eax
push 0x262
lea ecx, [esp + 0x3c]
push ecx
push ebx
call esi
test eax, eax
je 0x472348
mov eax, dword [esp + 0x10]
test eax, eax
je 0x472348
mov eax, dword [ebp + 0x10]
lea edx, [esp + 0x30]
push edx
push eax
call dword [sym.imp.MSVCR71.dll__wcsicmp]
add esp, 8
test eax, eax
je 0x472352
mov ecx, dword [0x4e3a68]
mov eax, dword [esp + 0x10]
inc ecx
test eax, eax
mov dword [0x4e3a68], ecx
jne 0x472160
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4722f9
mov eax, dword [esp + 0x20]
push 0
push 0
push 0
push eax
mov dword [esp + 0x20], 1
mov dword [0x4e3a68], 0
call edi
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4722f9
jmp 0x472240
mov ecx, dword [esp + 0x24]
cmp dword [esp + 0x2c], ecx
je 0x4722f9
mov ecx, dword [esp + 0x20]
push 0
lea edx, [esp + 0x14]
push edx
push 6
lea eax, [esp + 0x24]
push eax
push ecx
call esi
test eax, eax
je 0x47233e
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4722f9
mov dx, word [esp + 0x18]
cmp dx, word [esp + 0x28]
jne 0x4722d7
mov eax, dword [esp + 0x1a]
imul eax, eax, 0x262
push 0
push 0
push eax
push ebx
call edi
push 0
lea ecx, [esp + 0x14]
push ecx
push 0x262
lea edx, [esp + 0x3c]
push edx
push ebx
call esi
test eax, eax
je 0x472348
mov eax, dword [esp + 0x10]
test eax, eax
je 0x472348
mov ecx, dword [ebp + 0x10]
lea eax, [esp + 0x30]
push eax
push ecx
call dword [sym.imp.MSVCR71.dll__wcsicmp]
add esp, 8
test eax, eax
je 0x47236d
mov edx, dword [0x4e3a68]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
inc edx
inc ecx
test eax, eax
mov dword [0x4e3a68], edx
mov dword [esp + 0x24], ecx
jne 0x472240
mov ecx, dword [0x4e3a68]
mov edx, dword [esp + 0x2c]
push ecx
push edx
push str.FindTOCEntry_fails_with_dwStartingHashLocation___d___g_dwHashLocation___d
push str.Uber
mov dword [esp + 0x24], 0x548
call fcn.004572b0
add esp, 0x10
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [esp + 0x14]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x14], 0x512
jmp 0x47231f
mov dword [esp + 0x14], 0x549
jmp 0x47231f
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x1a]
mov edi, dword [ebp + 0x18]
mov dword [ecx], edx
mov ecx, 0x98
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x47231f
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x1a]
mov edi, dword [ebp + 0x18]
mov dword [edx], eax
mov ecx, 0x98
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x47231f