Function at 0x40ad90
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
lcall 0x7402, 0xe8830845
adc bh, bh
outsb dx, byte [esi]
sub al, 0xbb
inc eax
add bh, al
add byte [edi], bh
daa
add byte [ecx - 0x3ca239ea], ah
jp 0x40adf2
or eax, 0xcb104d8b
push ebp
or al, 0x50
push ecx
push edx
in al, dx
xchg dword [eax], eax
cwde
pop ecx
jg 0x40ade3
or al, 0x5d
ret
add bh, al
add byte [eax + eax], bl
add byte [eax], al
out 0xc0, al
pop ebp
ret
mov esi, dword [ebp + 8]
push edi
mov edi, 4
or byte [edi - 0x41], dl
add al, 0
add byte [eax], al
pop ebp
push es
inc esi
cmp al, 0x63
mov byte [eax], dh
adc byte [esi + 0x1a], dh
mov ebp, dword [edi + 0x10]
inc edx
add byte fs:[eax + edi*2 + 0x25], dh
dec dword [edi + 0xc]
add byte [ecx + 0x30e233f7], bl
mov byte [ebp + 0x10], dl
mov bh, al
inc ecx
dec edx
sub byte [ecx + ecx], bh
jbe 0x40ae38
mov eax, dword [ebp + 0x10]
mov ebx, 0x7a000a
and eax, 0x26ff
and cl, byte [ecx - 0x39]
add al, 0x30
mov byte [ecx], al
inc ecx
mov al, dl
xor byte [eax - 0x3d75beff], cl
add al, 0x30
mov byte [ecx], al
inc ecx
mov byte [ecx], 0x2e
inc ecx
dec edi
jne 0x40ae32
aam 0x45
inc ecx
pop edi
pop esi
enter 0xffffffffffffff79, 0
loope 0x40ae98
pop eax
push ebp
mov ebp, esp
or dword [ecx], 0xffffffe1
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
inc ecx
xor byte [eax], al
ja 0x40adf0
mov dword [esi], 0x9b0076
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
retf 0xc
cmp dword [eax], ecx
sahf
js 0x40aea9
push edi
je 0x40aef7
jb 0x40af1a
adc byte [edi + 0x53], dl
dec ebx
or al, 0xff
adc eax, sym.imp.KERNEL32.dll_CreateEventA
mov edx, dword [ebx + 0xc]
mov dword [edx + 0x10], eax
mov eax, dword [ebx + 0xc]
add al, 0x48
mov al, byte [0x8b0040c0]
push ebx
or al, 0x89
inc edx
adc byte [ebx + 0x48040c43], cl
retf 0xb885
mov edx, dword [ecx]
push ss
mov dword [ebx + 0x30], edi
mov ecx, dword [esi]
mov dword [ebp + 0xc], eax
sbb cl, cl
jne 0x40af5a
add byte [esi], 1
add byte [eax], al
add byte [edi + 0x4c], bl
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0xc
test cl, cl
je 0x40b03f
in eax, 0x53
or byte [ebx + 0x4589523e], cl
cld
mov dword [ebp - 8], edi
call fcn.004037d0
cmp dword [ebx + 0x48], 1
jne 0x40af66
push ebx
push esp
xchg ecx, eax
add eax, dword [eax]
add byte [ebx], dh
leave
mov dword [ebp + 8], eax
cmp eax, ecx
je 0x40afc4
mov eax, dword [ebx + 0x58]
push eax
dec ebp
out dx, eax
invalid
ret 0xcb0c
invalid
clc
ja 0x40b013
mov eax, edi
mov esi, dword [ebx + 0x38]
mov edi, dword [ebp - 4]
mov ecx, eax
add esi, edx
dec esi
sal ecx, 1
jmp 0x8be684dd
add dword [edi], ebx
add byte [ebx + 0x4d8bfc45], cl
or al, 0x43
lds ecx, [ecx - 0x384c1efa]
lcall 0x8b14, 0x2b0008
ja 0x40b085
jb 0x40b041
or eax, 0xe536fff3
inc ebp
or byte [edi + 0x5e], bl
sub edi, esi
in eax, 0x5d
popfd
or al, 0
mov edx, dword [esi]
xchg esp, eax
dec ebp
or al, 0x51
push edx
push eax
push ebx
call fcn.0040b080
or dword [esi + 0x10], 0x3d
jle 0x40b064
add dword [eax], eax
mov ecx, edi
sal byte [ebp + 7], cl
mov dword [ebx + 0x28], 1
dec edi
inc ebp
or al, 0x5f
pop edi
mov dword [esi], eax
mov eax, dword [ebp + 8]
sbb al, 0x5b
mov esp, ebp
xchg esp, eax
ret 0xc
jne 0x40b08f
push edi
mov edi, dword [ebp + 0x10]
jne 0x40b0d3
sub al, 0x8b
dec esi
add eax, 0x50c7c10b
adc byte [eax], al
add byte [eax], al
add byte [ebp - 0x35], dh
mov al, byte [esi + 8]
test al, al
je 0x40b10d
mov edx, dword [esi + 4]
dec ebp
pop ds
push 0
push ecx
stosb byte es:[edi], al
add byte [edx], ch
push 0
push edx
mov ch, 0x15
or al, 0xc0
and al, byte [eax]
test eax, eax
jne 0x40b0ea
mov esi, dword [0x398998]
xor eax, 0x398998
call esi
test eax, eax
jne 0x40b0be
movsd dword es:[edi], dword [esi]
sbb eax, 0x895e5f14
add dword [ebp - 0x3d], ebx
call esi
salc
add eax, 0xa5f99
imul ebp, ebp, 0xfffffffc
or al, byte [eax]
jne 0x40b0e5
mov eax, 0xc5117e
mov ecx, dword [ebp + 0x14]
pop edi
pop esi
mov dword [ecx], 0xb50000
pop ebp
ret
inc esi
or al, 0x85
sal byte [ebx - 0x76], 0x4e
or byte [edx - 0x34e3b437], bh
dec esi
push eax
or byte [eax + 8], 0x8b
call 0x54523c77
mov ecx, 0x20
call 0xdfb810
mov edx, dword [esi + 0xc]
mov dword [edx + 0xc], eax
mov eax, dword [esi - 0x59]
mov edx, dword [ebp + 0xc]
push ebx
invalid