Function at 0x46e650
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x400
push ebx
mov ebx, eax
cmp dword [ebx*4 + 0x56e878], 0
push ebp
lea ebp, [ebx*4 + 0x56e878]
je 0x46e676
pop ebp
xor eax, eax
pop ebx
add esp, 0x400
ret
call fcn.00473d10
test eax, eax
jne 0x46e68b
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x400
ret
push esi
lea esi, [esp + 0xc]
mov ecx, eax
sub esi, eax
mov dl, byte [ecx]
mov byte [esi + ecx], dl
add ecx, 1
test dl, dl
jne 0x46e694
push eax
call fcn.00418550
mov eax, 0x542864
add esp, 4
mov edx, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x46e6b0
push edi
lea edi, [esp + 0x10]
sub eax, edx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x46e6c3
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [ebx*4 + 0x542018]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x46e6e6
lea edi, [esp + 0x10]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
lea ebx, [ebx]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x46e700
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov eax, str..m2u
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
nop
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x46e720
lea edi, [esp + 0x10]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x46e734
mov edx, dword [0x53f4e4]
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [0x56ec14]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [eax*8]
sub ecx, eax
test byte [edx + ecx*4 + 0xc], 0x40
lea eax, [edx + ecx*4]
je 0x46e790
mov eax, dword [eax]
mov ecx, dword [str._unknown_program_]
push eax
push ecx
push str._s_MONITOR:_s:
call fcn.00442db0
lea edx, [esp + 0x1c]
push edx
push str.Loading_M2U_table___s__n
call fcn.00442cd0
add esp, 0x14
lea eax, [esp + 0x10]
push 0x542894
push eax
call fcn.00500fa5
mov edi, eax
add esp, 8
test edi, edi
jne 0x46e7b3
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x400
ret
push edi
push 0x10
lea ecx, [esp + 0x18]
push 1
push ecx
call fcn.00501672
add esp, 0x10
cmp eax, 0x10
jne 0x46e8b2
mov eax, 0xa
mov ecx, str.PV_M2U0100
lea edx, [esp + 0x10]
lea esp, [esp]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x46e7f8
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x46e7e0
test eax, eax
je 0x46e855
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x46e847
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x46e855
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x46e847
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x46e855
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x46e847
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x46e855
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x46e855
test esi, esi
mov eax, 1
jg 0x46e857
or eax, 0xffffffff
jmp 0x46e857
xor eax, eax
test eax, eax
jne 0x46e8b2
cmp byte [esp + 0x1b], 2
jne 0x46e8b2
movzx esi, byte [esp + 0x1f]
movzx eax, byte [esp + 0x1e]
movzx ecx, byte [esp + 0x1d]
movzx edx, byte [esp + 0x1c]
shl esi, 8
add esi, eax
shl esi, 8
add esi, ecx
shl esi, 8
add esi, edx
push esi
call fcn.00443680
push edi
push esi
push 1
push eax
mov dword [ebp], eax
call fcn.00501672
add esp, 0x14
cmp eax, esi
je 0x46e8b2
mov eax, dword [ebp]
push eax
call fcn.00418550
add esp, 4
mov dword [ebp], 0
push edi
call fcn.0042d717
mov eax, dword [ebp]
add esp, 4
neg eax
pop edi
sbb eax, eax
pop esi
neg eax
pop ebp
sub eax, 1
pop ebx
add esp, 0x400
ret