Function at 0x430e30
Capabilities:
Get file size
Read file on windows
Write file on windows

Disassembly:
sub esp, 0x18
push ebx
push ebp
push esi
mov esi, dword [esp + 0x2c]
push edi
xor edi, edi
cmp esi, edi
jne 0x430e4b
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret
push esi
call fcn.00433e40
add esp, 4
test eax, eax
jne 0x430e60
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
mov eax, dword [esi]
mov dword [esp + 0x10], edi
cmp eax, 1
jne 0x430fdf
mov ebx, dword [esi + 4]
push eax
push edi
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov esi, eax
cmp esi, 0xffffffff
jne 0x430e8d
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
mov dword [esp + 0x14], 0
sub edi, esi
test edi, edi
mov dword [esp + 0x24], edi
jle 0x430eeb
push edi
call fcn.0043af5d
add esp, 4
mov ebp, eax
lea eax, [esp + 0x20]
mov dword [esp + 0x14], ebp
push 0
push eax
push edi
push ebp
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x430edf
push ebp
call fcn.0043adf1
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
push 0
push 0
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ecx, dword [esp + 0x2c]
mov eax, 1
cmp ecx, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
jle 0x430f9a
lea ebp, [esp + 0x3c]
mov eax, dword [ebp + 8]
mov dword [esp + 0x18], 0
cmp eax, reloc.EGfxLib.dll_Ordinal_4
jne 0x430f1f
mov esi, dword [ebp]
jmp 0x430f36
push ebp
call fcn.00433f00
mov esi, eax
add esp, 4
test esi, esi
je 0x430f7a
mov dword [esp + 0x18], 1
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ecx, ecx
jle 0x430f5d
lea edx, [esp + 0x20]
push eax
push edx
push ecx
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x430f5d
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x430f6e
push esi
call fcn.0043b40a
add esp, 4
mov eax, dword [esp + 0x10]
test eax, eax
je 0x430fbe
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
inc eax
add ebp, 0xc
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x430f08
mov eax, dword [esp + 0x10]
test eax, eax
je 0x430fbe
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4310d5
lea ecx, [esp + 0x20]
push 0
push ecx
push edi
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x430fbe
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4310d5
push eax
call fcn.0043adf1
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
cmp eax, 2
jne 0x4310d5
mov ebx, dword [esi + 4]
mov ecx, ebx
mov edx, dword [ebx]
call dword [edx + 0x14]
mov eax, dword [ebx]
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
push 0xffffffffffffffff
push edi
mov ecx, ebx
call dword [eax + 0x30]
mov ebp, eax
mov dword [esp + 0x1c], edi
cmp ebp, edi
mov dword [esp + 0x18], ebp
jle 0x431037
push ebp
call fcn.0043af5d
mov esi, dword [esp + 0x28]
mov ecx, ebp
mov dword [esp + 0x20], eax
mov edi, eax
mov eax, ecx
add esp, 4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x10], 1
cmp eax, 1
jle 0x4310bb
dec eax
lea ebp, [esp + 0x3c]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x2c], 0
cmp eax, reloc.EGfxLib.dll_Ordinal_4
jne 0x431068
mov esi, dword [ebp]
jmp 0x43107f
push ebp
call fcn.00433f00
mov esi, eax
add esp, 4
test esi, esi
je 0x4310a9
mov dword [esp + 0x2c], 1
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ecx, ecx
jle 0x431098
mov edx, dword [ebx]
push ecx
push esi
mov ecx, ebx
call dword [edx + 0x24]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4310a9
push esi
call fcn.0043b40a
add esp, 4
mov eax, dword [esp + 0x20]
add ebp, 0xc
dec eax
mov dword [esp + 0x20], eax
jne 0x431051
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x4310d5
mov eax, dword [ebx]
push ebp
push esi
mov ecx, ebx
call dword [eax + 0x24]
push esi
call fcn.0043adf1
add esp, 4
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret