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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x194
push ebx
push esi
push edi
xor eax, eax
xor ebx, ebx
push 0x3e
mov word [ebp - 0x48], ax
lea eax, [ebp - 0x46]
push ebx
push eax
call fcn.0042a910
add esp, 0xc
xor eax, eax
mov word [ebp - 0x88], ax
lea eax, [ebp - 0x86]
push 0x3e
push ebx
push eax
call fcn.0042a910
add esp, 0xc
mov dword [ebp - 4], ebx
lea edx, [ebp - 8]
mov dword [ebp - 8], ebx
lea ecx, [ebp - 4]
call fcn.0046e7a4
mov edi, 0xb7d4
push edi
test eax, eax
je 0x470189
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 4]
add eax, 0xfffff1e4
add eax, esi
mov dword [ebp - 4], eax
call fcn.0042493a
pop ecx
push edi
mov ebx, eax
push 0
push ebx
call fcn.0042a910
mov ecx, dword [ebp - 4]
lea edx, [ebx + 0xb7d0]
add esp, 0xc
mov dword [ebx + 0xb7c4], esi
mov eax, dword [ecx]
lea ecx, [ebx + 0xb7cc]
mov dword [ebx + 0xb7c8], eax
call fcn.0046e98b
mov eax, dword [ebp - 4]
mov ecx, 0x387
mov esi, eax
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x88]
mov dword [0x4ca9e8], ebx
lea ecx, [eax + 8]
push 2
sub esi, ecx
pop edx
movzx eax, word [ecx]
mov word [esi + ecx], ax
add ecx, edx
test ax, ax
jne 0x470158
mov ecx, dword [ebp - 4]
lea esi, [ebp - 0x48]
add ecx, 0xa1c
sub esi, ecx
movzx eax, word [ecx]
mov word [esi + ecx], ax
add ecx, edx
test ax, ax
jne 0x470174
xor edi, edi
jmp 0x4702d2
call fcn.0042493a
pop ecx
push edi
mov ebx, eax
push 0x4b8980
push ebx
call fcn.0042a2c0
add esp, 0xc
xor eax, eax
mov byte [ebp - 0x190], al
push 0x103
push eax
lea eax, [ebp - 0x18f]
push eax
call fcn.0042a910
add esp, 0xc
lea edx, [ebp - 0x190]
push str.data.cab
push 0x104
call fcn.00463088
xor eax, eax
push eax
push eax
push 3
push eax
push 1
push SysReAllocStringLen
lea eax, [ebp - 0x190]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp esi, 0xffffffff
je 0x47022d
push 0
push esi
call edi
push eax
mov dword [ebx + 0xb7c8], eax
call fcn.0040627a
pop ecx
push 0
lea ecx, [ebp - 8]
mov dword [ebx + 0xb7c4], eax
push ecx
push dword [ebx + 0xb7c8]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push str.theme.cab
push 0x104
lea edx, [ebp - 0x190]
call fcn.00463088
xor eax, eax
push eax
push eax
push 3
push eax
push 1
push SysReAllocStringLen
lea eax, [ebp - 0x190]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x47029a
push 0
push esi
call edi
push eax
mov dword [ebx + 0xb7d0], eax
call fcn.0040627a
pop ecx
xor edi, edi
mov dword [ebx + 0xb7cc], eax
push edi
lea ecx, [ebp - 8]
push ecx
push dword [ebx + 0xb7d0]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x47029c
xor edi, edi
push 2
mov dword [0x4ca9e8], ebx
mov ecx, edi
pop edx
movzx eax, word [ecx + 0x4b8988]
mov word [ebp + ecx - 0x88], ax
add ecx, edx
test ax, ax
jne 0x4702a7
mov ecx, edi
movzx eax, word [ecx + 0x4b939c]
mov word [ebp + ecx - 0x48], ax
add ecx, edx
test ax, ax
jne 0x4702bf
lea ecx, [ebp - 0x48]
mov dword [ebx + 0xf3c], edi
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, edx
cmp ax, di
jne 0x4702de
sub ecx, esi
sar ecx, 1
cmp word [ebp + ecx*2 - 0x4a], 0x2a
jne 0x47030a
mov eax, dword [0x4ca9e8]
mov dword [eax + 0xf3c], 1
xor eax, eax
mov word [ebp + ecx*2 - 0x4a], ax
mov esi, dword [0x4ca9e8]
lea ecx, [ebp - 0x48]
add esi, 0xf28
movzx eax, word [ecx]
add ecx, edx
mov word [esi], ax
add esi, edx
test ax, ax
jne 0x470319
mov eax, dword [0x4ca9e8]
lea esi, [ebp - 0x88]
add eax, 0xf40
movzx ecx, word [esi]
add esi, edx
mov word [eax], cx
add eax, edx
test cx, cx
jne 0x470338
mov ecx, dword [0x4ca9e8]
call fcn.0046d50b
pop edi
xor eax, eax
pop esi
inc eax
pop ebx
mov esp, ebp
pop ebp
ret