Function at 0x43e050
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x20
push ebx
push ebp
mov ebp, dword [0x4ae860]
push esi
push edi
push 1
push 0
mov edi, ecx
mov dword [esp + 0x20], ebp
push 0xffffffffffffffff
push 0
mov ecx, ebp
mov dword [esp + 0x3c], edi
call fcn.004744e0
mov esi, dword [esp + 0x34]
or eax, 0xffffffff
mov dword [esp + 0x20], eax
mov eax, dword [0x4aa1d8]
mov byte [esp + 0x13], 0
mov byte [esp + 0x1c], 0
mov dword [esp + 0x24], 0xffffffff
mov ebx, dword [eax + 0xdc]
and ebx, 0x7fffffff
mov dword [esp + 0x28], ebx
mov eax, esi
lea ebx, [ebx]
mov cl, byte [eax]
cmp cl, 0x20
je 0x43e0bc
cmp cl, 9
jne 0x43e0bf
inc eax
jmp 0x43e0b0
cmp byte [eax], 0x2a
jne 0x43e1f1
movzx ebx, byte [eax + 1]
lea esi, [eax + 1]
test ebx, 0xffffff80
jne 0x43e0e9
push 2
push ebx
call fcn.00485bac
add esp, 8
test eax, eax
je 0x43e0e9
and ebx, 0xffffffdf
movsx eax, bl
add eax, 0xffffffbd
cmp eax, 0x11
ja case.0x43e0ff.68
movzx eax, byte [eax + 0x43e590]
jmp dword [eax*4 + 0x43e57c]
mov byte [esp + 0x1c], 1
jmp case.0x43e0ff.68
lea ecx, [esi + 1]
call fcn.0042e560
mov bl, byte [esi]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
test bl, bl
je 0x43e144
mov ecx, 0x49e8b4
mov al, 0x20
lea ecx, [ecx]
cmp bl, al
je 0x43e179
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x43e130
mov bl, byte [esi + 1]
inc esi
test bl, bl
jne 0x43e126
mov eax, dword [0x4aa1d8]
mov dword [eax + 0x30], 0x57
test byte [eax + 0xe0], 1
jne 0x43e1d4
mov ecx, dword [0x4ad0c8]
push 1
push 0
push 0xffffffffffffffff
push 0x49e628
call fcn.004744e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
dec esi
jmp case.0x43e0ff.68
lea eax, [esi + 1]
push eax
call fcn.00485ca0
mov dl, byte [esi]
add esp, 4
mov dword [esp + 0x28], eax
test dl, dl
je 0x43e144
mov ecx, 0x49e8b4
mov al, 0x20
lea esp, [esp]
cmp dl, al
je 0x43e179
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x43e1a0
mov dl, byte [esi + 1]
inc esi
test dl, dl
jne 0x43e192
jmp 0x43e144
mov byte [esp + 0x13], 1
cmp byte [esi], 0
je 0x43e0a8
inc esi
cmp byte [esi], 0
je 0x43e0a8
inc esi
jmp 0x43e0a8
push 0x49bc4d
push 0
push 0x49e628
mov ecx, edi
call fcn.0042c8f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
push 0
push 0x8000000
push 3
push 0
push 3
push SysReAllocString
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x43e22c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x4aa1d8]
test byte [ecx + 0xe0], 1
mov dword [ecx + 0x30], eax
jmp 0x43e157
mov ecx, ebx
call fcn.00472600
mov esi, eax
mov ecx, esi
and ecx, edx
cmp ecx, 0xffffffff
jne 0x43e265
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x4aa1d8]
push ebx
mov dword [ecx + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, edi
call fcn.0042f240
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
mov ecx, dword [esp + 0x24]
cmp edx, ecx
jb 0x43e27b
mov eax, dword [esp + 0x20]
ja 0x43e277
cmp esi, eax
jbe 0x43e27b
mov esi, eax
mov edx, ecx
test edx, edx
jne 0x43e55c
cmp esi, 0xfffffffd
ja 0x43e55c
mov eax, esi
or eax, edx
jne 0x43e2c5
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x4aa1d8]
mov dword [eax + 0x30], 0
mov ecx, dword [0x4ad0c8]
push 1
push 0
push 0xffffffffffffffff
push 0x49bca8
call fcn.004744e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
cmp byte [esp + 0x1c], 0
je 0x43e394
mov al, byte [ebp + 0x17]
test al, al
jne 0x43e2dd
mov eax, dword [ebp + 0xc]
mov al, byte [eax + 0x17]
cmp al, 2
je 0x43e394
push 0
push 1
lea eax, [esi + 1]
mov byte [esp + 0x3c], 1
push eax
push 0
mov ecx, ebp
call fcn.004744e0
cmp eax, 1
jne 0x43e3c3
push 0
push eax
mov ecx, ebp
call fcn.00401490
mov edi, eax
test edi, edi
je 0x43e3c3
push 0
lea eax, [esp + 0x18]
push eax
push esi
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x4aa1d8]
push ebx
mov dword [ecx + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebp, ebp
je 0x43e509
cmp byte [esp + 0x1c], 0
jne 0x43e4b3
mov eax, dword [esp + 0x14]
cmp eax, 3
jb 0x43e3d6
cmp byte [edi], 0xef
jne 0x43e3d6
cmp byte [edi + 1], 0xbb
jne 0x43e3d6
cmp byte [edi + 2], 0xbf
jne 0x43e3d6
mov ebx, dword [esp + 0x18]
add eax, 0xfffffffd
push 0xfde9
push eax
lea eax, [edi + 3]
mov ecx, ebx
push eax
call fcn.00475000
test eax, eax
jne 0x43e455
xor ebp, ebp
jmp 0x43e455
lea eax, [esi + 2]
mov byte [esp + 0x34], 0
push eax
call fcn.00484535
mov edi, eax
add esp, 4
test edi, edi
jne 0x43e318
mov ecx, dword [esp + 0x2c]
push 0x49bc4d
push eax
push str.Out_of_memory.
call fcn.0042cbc0
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
cmp eax, 2
jb 0x43e3ee
cmp byte [edi], 0xff
jne 0x43e3ee
cmp byte [edi + 1], 0xfe
jne 0x43e3ee
lea ecx, [edi + 2]
add eax, 0xfffffffe
jmp 0x43e43d
mov ebx, dword [esp + 0x28]
cmp ebx, 0x4b0
je 0x43e43b
test ebx, ebx
je 0x43e425
call dword [sym.imp.KERNEL32.dll_GetACP]
cmp ebx, eax
je 0x43e421
push ebx
push dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
mov ecx, ebx
push edi
call fcn.00475000
test eax, eax
jne 0x43e455
xor ebp, ebp
jmp 0x43e455
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, ebx
mov byte [eax + edi], 0
push dword [esp + 0x14]
push edi
call fcn.00474b70
jmp 0x43e462
mov ecx, edi
mov ebx, dword [esp + 0x18]
sub esp, 0xc
shr eax, 1
push eax
push ecx
mov ecx, ebx
call fcn.004750d0
neg eax
sbb eax, eax
and ebp, eax
test edi, edi
je 0x43e462
push edi
call fcn.004843d4
add esp, 4
push 0
push 1
mov ecx, ebx
call fcn.00401490
cmp byte [esp + 0x13], 0
mov esi, eax
je 0x43e52d
mov ecx, ebx
call fcn.00413890
mov dword [esp + 0x34], eax
mov edx, 0x4a1f00
lea eax, [esp + 0x34]
mov ecx, esi
push eax
push 0
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x4a2508
call fcn.00471db0
add esp, 0x18
mov ecx, ebx
push dword [esp + 0x34]
call fcn.00413850
jmp 0x43e52d
mov ebx, dword [esp + 0x18]
mov al, byte [ebx + 0x17]
test al, al
jne 0x43e4c4
mov eax, dword [ebx + 0xc]
mov al, byte [eax + 0x17]
cmp al, 2
jne 0x43e4f6
mov edx, dword [esp + 0x14]
mov ecx, edi
call fcn.00474310
push edi
lea esi, [eax - 1]
neg esi
sbb esi, esi
call fcn.004843d4
add esp, 4
inc esi
jne 0x43e2a5
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
mov esi, dword [esp + 0x14]
mov ecx, ebx
mov byte [esi + edi], 0
call fcn.00413820
mov dword [eax], esi
jmp 0x43e52d
mov ebx, dword [esp + 0x18]
mov ecx, ebx
mov byte [edi], 0
call fcn.00413820
cmp byte [esp + 0x34], 0
mov dword [eax], 0
jne 0x43e52d
push edi
call fcn.004843d4
add esp, 4
push dword [esp + 0x1c]
mov ecx, ebx
call fcn.00413920
test eax, eax
je 0x43e3ca
mov ecx, dword [esp + 0x2c]
test ebp, ebp
sete al
movzx eax, al
push eax
call fcn.0042c990
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
push 0x49bc4d
push 0
push str.Out_of_memory.
mov ecx, edi
call fcn.0042cbc0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4