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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d3cdd
mov eax, dword fs:[0]
push eax
sub esp, 0x30
mov eax, dword [0x510200]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebx]
mov esi, dword [ebp + 8]
test eax, eax
je 0x43bbcf
push eax
call fcn.004aa0a3
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x43bbdf
push eax
call fcn.004aa0a3
add esp, 4
push 0x510ce4
lea ecx, [ebp - 0x28]
mov dword [ebx], 0
mov dword [ebx + 4], 0
call fcn.004029e0
push esi
mov dword [ebp - 4], 0
call dword [sym.imp.SHLWAPI.dll_PathIsRelativeW]
mov edx, esi
lea edi, [edx + 2]
nop dword [eax]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x43bc10
sub edx, edi
lea ecx, [ebp - 0x28]
sar edx, 1
push edx
push esi
test eax, eax
je 0x43bc2f
call fcn.00402860
jmp 0x43bc34
call fcn.00401ff0
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
push 0
cmovae eax, dword [ebp - 0x28]
push 0x80
push 3
push 0
push 1
push SysReAllocString
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x30], eax
cmp eax, 0xffffffff
jne 0x43bc67
mov eax, 0x4f90c8
jmp 0x43bc7e
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
mov dword [ebp - 0x38], esi
test esi, esi
jne 0x43bc94
mov eax, str.File_is_empty
mov ecx, ebx
mov edx, 0xd8
mov edi, 0x10
add ebx, edi
lea esi, [ecx + edx]
jmp 0x43bd1a
cmp esi, 0x400000
jbe 0x43bca3
mov eax, str.File_too_large
jmp 0x43bd11
push esi
mov dword [ebp - 0x34], 0
call fcn.0049db2a
add esp, 4
mov edi, eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x3c], edi
push 0
push eax
push esi
push edi
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_ReadFile]
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x34], esi
je 0x43bd3a
push edi
call fcn.0049da79
mov eax, dword [ebx]
add esp, 4
test eax, eax
je 0x43bcef
push eax
call fcn.004aa0a3
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x43bcff
push eax
call fcn.004aa0a3
add esp, 4
mov dword [ebx], 0
mov eax, str.Could_not_read_file
mov dword [ebx + 4], 0
lea esi, [ebx + 0xd8]
add ebx, 0x10
push 0x63
push eax
push ebx
call fcn.004b5570
push 0x31
push 0x4f4ad0
push esi
call fcn.004b5570
add esp, 0x18
xor bl, bl
jmp 0x43bdeb
mov eax, edi
mov dword [ebp - 0x30], eax
cmp esi, 3
jb 0x43bd61
cmp byte [edi], 0xef
jne 0x43bd61
cmp byte [edi + 1], 0xbb
jne 0x43bd61
cmp byte [edi + 2], 0xbf
jne 0x43bd61
lea eax, [edi + 3]
add esi, 0xfffffffd
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x38], esi
mov edi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
push esi
push eax
push 0
push 0xfde9
call edi
mov esi, eax
lea ecx, [esi*2 + 2]
push ecx
call fcn.004afcdb
add esp, 4
mov dword [ebx], eax
push esi
push eax
push dword [ebp - 0x38]
push dword [ebp - 0x30]
push 0
push 0xfde9
call edi
mov eax, dword [ebx]
xor ecx, ecx
mov word [eax + esi*2], cx
mov ecx, ebx
call fcn.0043be50
mov byte [ebp - 0x29], al
test al, al
jne 0x43bddd
mov eax, dword [ebx]
test eax, eax
je 0x43bdc0
push eax
call fcn.004aa0a3
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x43bdd0
push eax
call fcn.004aa0a3
add esp, 4
mov dword [ebx], 0
mov dword [ebx + 4], 0
push dword [ebp - 0x3c]
call fcn.0049da79
mov bl, byte [ebp - 0x29]
add esp, 4
mov ecx, dword [ebp - 0x14]
cmp ecx, 8
jb 0x43be21
mov edx, dword [ebp - 0x28]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x43be17
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43be41
push ecx
push edx
call fcn.0049da2e
add esp, 8
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049da3c
mov esp, ebp
pop ebp
ret 8
call fcn.004a9f9f
int3