Function at 0x43dbc0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
mov ecx, dword [0x4c0e18]
push ebx
push esi
push edi
push 1
push 0
or edi, 0xffffffff
push edi
push 0
mov esi, eax
mov dword [esp + 0x20], ecx
call fcn.0046dd60
mov ecx, dword [0x4c17f0]
push 1
push 0
push edi
push 0x49e30c
call fcn.0046dd60
mov eax, dword [0x4bd41c]
mov eax, dword [eax + 0xf0]
and eax, 0x7fffffff
mov byte [esp + 0xf], 0
mov byte [esp + 0x14], 0
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x1c], eax
mov eax, esi
movzx ecx, word [eax]
cmp ecx, 0x20
je 0x43dc31
cmp ecx, 9
jne 0x43dc36
add eax, 2
jmp 0x43dc24
cmp word [eax], 0x2a
jne 0x43dd16
movzx ebx, word [eax + 2]
lea esi, [eax + 2]
test ebx, 0xffffff80
jne 0x43dc61
push 2
push ebx
call fcn.0048757e
add esp, 8
test eax, eax
je 0x43dc61
and ebx, 0xffffffdf
movzx eax, bx
add eax, 0xffffffbd
cmp eax, 0x11
ja case.0x43dc77.68
movzx ecx, byte [eax + 0x43e05c]
jmp dword [ecx*4 + 0x43e048]
mov byte [esp + 0x14], 1
jmp case.0x43dc77.68
lea ebx, [esi + 2]
mov eax, ebx
call fcn.0040c9b0
movzx edx, al
neg edx
sbb edx, edx
and edx, 6
add edx, 0xa
push edx
push 0
push ebx
call fcn.00487d1e
add esp, 0xc
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
test edx, edx
ja 0x43e037
jb 0x43dcc5
cmp eax, 0x40000000
ja 0x43e037
mov ebx, 0x49e6d0
mov eax, esi
call fcn.00409070
mov esi, eax
test esi, esi
je 0x43e037
sub esi, 2
jmp case.0x43dc77.68
lea eax, [esi + 2]
push eax
call fcn.004875c6
add esp, 4
mov dword [esp + 0x1c], eax
jmp 0x43dcc5
mov byte [esp + 0xf], 1
cmp word [esi], 0
je 0x43dc22
add esi, 2
cmp word [esi], 0
je 0x43dc22
add esi, 2
jmp 0x43dc22
push 0
push 0x8000000
push 3
push 0
push 3
push SysReAllocString
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
jne 0x43dd53
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x4bd41c]
mov dword [ecx + 0x30], eax
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp byte [esp + 0x14], 0
je 0x43dd83
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + 0x17]
test al, al
jne 0x43dd6b
mov edx, dword [ecx + 0xc]
mov al, byte [edx + 0x17]
cmp al, 2
jne 0x43dd83
mov eax, dword [ebp + 8]
push eax
mov ebx, edi
call fcn.0043ea70
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, edi
call fcn.0046c350
mov ebx, eax
mov esi, edx
mov ecx, ebx
and ecx, esi
cmp ecx, 0xffffffff
je 0x43e021
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, eax
and edx, ecx
cmp edx, 0xffffffff
jne 0x43ddc2
test esi, esi
ja 0x43e021
jb 0x43ddc2
cmp ebx, 0x40000000
ja 0x43e021
cmp ecx, esi
ja 0x43ddd0
jb 0x43ddcc
cmp eax, ebx
jae 0x43ddd0
mov ebx, eax
mov esi, ecx
mov ecx, dword [0x4c17f0]
push 1
push 0
push 0xffffffffffffffff
push 0x49b8d0
call fcn.0046dd60
mov eax, ebx
or eax, esi
jne 0x43ddfa
mov ecx, dword [0x4bd41c]
mov dword [ecx + 0x30], eax
jmp 0x43e030
cmp byte [esp + 0x14], 0
je 0x43de35
mov esi, dword [esp + 0x10]
push 0
mov edx, ebx
mov eax, ebx
shr edx, 1
and eax, 1
push 1
add edx, eax
push edx
push 0
mov ecx, esi
call fcn.0046dd60
cmp eax, 1
je 0x43de43
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
lea ecx, [ebx + 2]
push ecx
call fcn.004863c4
add esp, 4
jmp 0x43de4e
push 0
push 1
mov ecx, esi
call fcn.00401240
push 0
lea edx, [esp + 0x1c]
push edx
push ebx
mov esi, eax
push esi
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x4bd41c]
push edi
mov dword [ecx + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x43dfd3
cmp byte [esp + 0x14], 0
mov edx, dword [esp + 0x18]
mov byte [edx + esi], 0
mov eax, dword [esp + 0x18]
mov byte [eax + esi + 1], 0
jne 0x43df25
mov eax, dword [esp + 0x18]
cmp eax, 3
jb 0x43dece
cmp byte [esi], 0xef
jne 0x43dece
cmp byte [esi + 1], 0xbb
jne 0x43dece
cmp byte [esi + 2], 0xbf
jne 0x43dece
mov ebx, dword [esp + 0x10]
push 0xfde9
add eax, 0xfffffffd
push eax
lea ecx, [esi + 3]
push ecx
call fcn.0046e850
jmp 0x43df09
cmp eax, 2
jb 0x43df76
cmp byte [esi], 0xff
jne 0x43df76
cmp byte [esi + 1], 0xfe
jne 0x43df76
mov dl, 1
mov ecx, esi
test dl, dl
je 0x43def8
lea ecx, [esi + 2]
add eax, 0xfffffffe
push 1
push 0
shr eax, 1
push eax
push ecx
mov ecx, dword [esp + 0x20]
call fcn.0046dd60
test esi, esi
je 0x43df16
push esi
call fcn.00487975
add esp, 4
mov ecx, dword [esp + 0x10]
push 0
push 1
call fcn.00401240
mov esi, eax
cmp byte [esp + 0xf], 0
je 0x43df49
push 0
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x4a53dc
push 0x4a47f0
push esi
xor eax, eax
call fcn.0046baa0
add esp, 0x1c
cmp byte [esp + 0x14], 0
je 0x43df99
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
call fcn.004129f0
mov edx, dword [esp + 0x14]
mov dword [eax], esi
mov eax, dword [esp + 0x10]
push edx
call fcn.00412b10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [esp + 0x1c]
xor dl, dl
cmp ecx, 0x4b0
je 0x43deec
mov ebx, dword [esp + 0x10]
push ecx
push eax
push esi
call fcn.0046e850
jmp 0x43df09
lea ecx, [esi + 2]
lea esp, [esp]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x43dfa0
mov eax, dword [esp + 0x10]
sub esi, ecx
sar esi, 1
add esi, esi
call fcn.004129f0
mov edx, dword [esp + 0x14]
mov dword [eax], esi
mov eax, dword [esp + 0x10]
push edx
call fcn.00412b10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp byte [esp + 0x14], 0
jne 0x43dfe3
push esi
call fcn.00487975
add esp, 4
mov ecx, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push 0
call fcn.0046dd60
mov ecx, dword [0x4c17f0]
push 1
push 0
push 0xffffffffffffffff
push 0x49e30c
call fcn.0046dd60
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edx
call fcn.00412b10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [0x4bd41c]
mov dword [ecx + 0x30], eax
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 4