Function at 0x46e8e0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x400
push ebx
mov ebx, eax
cmp dword [ebx*4 + 0x56e7c0], 0
push ebp
lea ebp, [ebx*4 + 0x56e7c0]
je 0x46e906
pop ebp
xor eax, eax
pop ebx
add esp, 0x400
ret
call fcn.00473d10
test eax, eax
jne 0x46e91b
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 0x46e924
push eax
call fcn.00418550
mov eax, str._etc_charset_
add esp, 4
mov edx, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x46e940
push edi
lea edi, [esp + 0x10]
sub eax, edx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x46e953
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 0x46e976
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 0x46e990
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov eax, str..u2m
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
nop
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x46e9b0
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 0x46e9c4
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 0x46ea20
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_U2M_table___s__n
call fcn.00442cd0
add esp, 0x14
lea eax, [esp + 0x10]
push 0x5428d4
push eax
call fcn.00500fa5
mov edi, eax
add esp, 8
test edi, edi
jne 0x46ea43
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x400
ret
push edi
push 0x14
lea ecx, [esp + 0x18]
push 1
push ecx
call fcn.00501672
add esp, 0x10
cmp eax, 0x14
jne 0x46ebbd
mov eax, 0xa
mov ecx, str.PV_U2M0100
lea edx, [esp + 0x10]
lea esp, [esp]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x46ea88
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x46ea70
test eax, eax
je 0x46eae5
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x46ead7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x46eae5
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x46ead7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x46eae5
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x46ead7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x46eae5
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x46eae5
test esi, esi
mov eax, 1
jg 0x46eae7
or eax, 0xffffffff
jmp 0x46eae7
xor eax, eax
test eax, eax
jne 0x46ebbd
cmp byte [esp + 0x1b], 1
jne 0x46ebbd
push 0x14
call fcn.00443680
mov esi, eax
mov al, byte [esp + 0x1e]
mov byte [esi], al
movzx ecx, byte [esp + 0x23]
movzx edx, byte [esp + 0x22]
movzx eax, byte [esp + 0x21]
shl ecx, 8
add ecx, edx
movzx edx, byte [esp + 0x20]
shl ecx, 8
add ecx, eax
shl ecx, 8
add ecx, edx
mov dword [esi + 4], ecx
movzx eax, byte [esp + 0x27]
movzx ecx, byte [esp + 0x26]
movzx edx, byte [esp + 0x25]
shl eax, 8
add eax, ecx
movzx ecx, byte [esp + 0x24]
shl eax, 8
add eax, edx
mov edx, dword [esi + 4]
shl eax, 8
add eax, ecx
push edx
mov dword [esi + 8], eax
call fcn.00443680
mov dword [esi + 0xc], eax
mov eax, dword [esi + 8]
push eax
call fcn.00443680
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0xc]
push edi
push ecx
push 1
push edx
mov dword [esi + 0x10], eax
call fcn.00501672
add esp, 0x1c
cmp eax, dword [esi + 4]
jne 0x46eba2
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x10]
push edi
push eax
push 1
push ecx
call fcn.00501672
add esp, 0x10
cmp eax, dword [esi + 8]
jne 0x46eba2
mov dword [ebp], esi
jmp 0x46ebbd
mov edx, dword [esi + 0xc]
push edx
call fcn.00418550
mov eax, dword [esi + 0x10]
push eax
call fcn.00418550
push esi
call fcn.00418550
add esp, 0xc
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