Function at 0x40b080
Capabilities:
Read file on windows

Disassembly:
in al, dx
sub esp, 0xc
push ebx
push esi
mov esi, dword [ebp + 0x10]
sbb al, byte [ebx - 0xe88a0c2]
pop edi
ja 0x40ae52
pop edi
ja 0x40ae52
fiadd word [esi]
add byte [eax], al
add byte [eax], al
pop edi
cmp dh, byte [ebx]
jecxz 0x40aec7
pop ds
in eax, 0x5d
ret 0xd30c
adc byte [edi - 0x77], dl
dec ebx
or al, 0xff
adc eax, 0x5681a0
mov esi, eax
or al, 0x89
mov dl, 0xa6
adc dword [ebx - 0x61], eax
mov ecx, dword [eax + 0x10]
test ecx, ecx
jne 0x40af09
mov esi, dword [0xc18fc04d]
call esi
xor al, 0xc0
jne 0x40aef3
pop edi
pop esi
lodsd eax, dword [esi]
push edi
int1
xor al, dl
or al, 0
call esi
pop edi
and al, byte [0xafc80]
pop ebx
mov esp, ebp
loop 0x40aea2
or al, 0
sub eax, 0xcf833043
invalid
or byte [ebx - 0x76b5bfea], cl
push ss
mov edx, dword [esi]
inc eax
dec edx
mov dword [esi], edx
mov dword [esi - 0x31], ebx
mov ecx, dword [esi]
jl 0x40af46
or al, 0x89
leave
jne 0x40af17
invalid
add cl, dh
add bl, bl
rol dword [eax + eax*8 + 0x5b], cl
mov esp, ebp
adc eax, edx
jle 0x40af17
mov cl, byte [ebx + 0x2c]
xchg edx, eax
leave
je 0x40b03f
mov edx, dword [ebx + 0x58]
mov edi, dword [eax - 0x3ba76ba]
mov dword [ebp - 8], edi
call 0xffe0a2d0
cmp dword [ebx + 0x48], 1
jne 0x40af81
push ebx
call 0x3d40b2d0
bswap ecx
mov esp, 0xc13b0845
je 0x40aef4
or al, byte [ebx + 0x58]
push eax
call fcn.0040a340
test dword [ebp + 8], 0x8b5b5e5f
in eax, 0x6a
ret 0x94
enter 0x37be, 0xffffffffffffff8b
mov ecx, 0x38368b40
lea edx, [ebp - 0xc]
push edx
push eax
push ecx
push ebx
call 0x40b080
mov ebp, dword [ebp - 0xc]
xor edx, edx
add esp, 0xffffffff
cmp ecx, edi
mov dword [eax + ecx + 0x74], eax
mov esi, dword fs:[ebx + 0x50]
jae 0x40aff8
mov eax, dword [ebx + 0x54]
add esi, ecx
mov dword [ebx - 0x2c], ecx
adc ebp, dword [edx - 0x76af8c77]
add dword [ecx + ecx*4 + 0x53], edx
cmp al, 0x8b
push ebx
cmp al, 0x8b
inc ebx
inc esp
sub eax, edx
cmp edi, eax
ja 0x40afc9
mov eax, edi
mov esi, dword [ebx + 0x38]
mov edi, dword [ebp - 4]
mov ecx, eax
add esi, edx
jl 0x40afa6
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov edx, dword [eax + 0x17]
push ebp
cld
test eax, 0xd00303e1
adc ah, byte [eax + ebp + 0x4d1c3c73]
clc
int 0xf0
sub ecx, eax
ja 0x40b037
mov eax, dword [0x8b3c4e65]
jne 0x40b009
adc byte [ecx - 0x3f7a03ab], cl
mov dword [ebp - 4], edx
test eax, eax
mov dword [ebp - 8], ecx
wrmsr
push eax
mov bh, bh
invalid
cmp eax, 0x11196
jne 0x40b04a
invalid
pop esi
insb byte es:[edi], dx
mov ebx, eax
add eax, 0x8b000cc2
ja 0x40afcf
mov esi, dword [edi - 0x73]
dec ebp
or al, 0x51
push edx
push eax
push ebx
call 0x40f680
inc esi
add byte [eax], al
adc ecx, 0x10
cmp eax, 0x47557e
mov dword [ebp + 8], eax
jne 0x40b061
mov dword [ebx + 0x19], 1
mov eax, dword [ebp + 0x52]
pop ecx
push esi
push es
mov eax, dword [ebp + 8]
pop esi
pop ebx
mov edx, dword [edi + 0xcc25d]
nop
nop
nop
nop
add byte [eax - 0x336f6f70], dl
nop
nop
adc al, 0xf
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0x66]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
or eax, ecx
add eax, dword [ebp + 0x4d]
add byte [eax], al
add byte [ebp + 0x468a7171], bh
or byte [eax + eax*8 + 0x568b6af6], al
add al, 0x7d
sal ebp, 0xa8
add byte [ecx + 0x6a], dl
add dh, cl
add byte [edx], ch
push edx
call dword [0x71c0d2]
test eax, eax
jne 0x40b0f2
mov esi, dword [0x40c017]
call esi
shr byte ss:[eax - 0xb248f7], 0x5f
pop esi
mov dword [ecx], eax
pop ebp
ret
loop 0x40b139
xchg edi, eax
test esi, esi
mov dl, 0xe
mov edx, dword [ebp + 0x14]
pop edi
inc ebx
mov dword [edx], eax
lodsd eax, dword [esi]
mov esp, 0x5d000000
cmp edi, dword [ebx]
clc
jbe 0x40b10d
mov edx, dword [ebx + ecx*4]
inc esi
or al, 0x11
rol byte [edx + 0x84e9b23], 0x84
leave
jne 0x40b137
mov eax, dword [esi + 0xc]
adc eax, eax
and byte [ebx], 0x9b
dec esi
or byte [ecx + ecx*8 + 0x52a61c75], al
cmpsb byte [esi], byte es:[edi]
push edx
push eax
fisttp qword [eax + 8]
aam 0x46
push eax
mov edx, dword [esi + 0x54]
jg 0x40b149
sub al, byte [eax]
invalid
mov eax, dword [esi + 0xc]
mov edx, dword [ebp + 0xc]
push ebx
or al, 0x8b
push ebp
or al, 0x53
lea ecx, [ebp + 0x10]
push eax
mov eax, dword [esi + 4]
push ecx
push edi
push edx
xchg edx, eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test dword [ebp - 0x3f0add8c], esp
jmp 0x40b2a3
add byte [ecx - 0x3ca2a1a0], cl
test eax, eax
jne 0x40b2bd
and cl, byte [ebp + 0x10]
test ecx, ecx
jne 0x40b29e
jnp 0x40b2dd
cmp dword [ebx + 0x5f870e55], ecx
push ebx
jle 0x40b2a8
and eax, dword [eax]
cmc
adc dword [esi + 0x5d], ebx
ret
mov edx, dword [esi + 0xc]
cdq
sub dword [esp + edi - 0x76], esi
push esi
or byte [edx + edx*8 + 0x568b11d3], al
push eax
je 0x40b2e1
mov dl, byte [esi + 8]
test dl, dl
rcl dword [ecx], cl
mov edx, dword [esi + 0x50]
add esp, dword [ebx - 0x65]
xchg ecx, eax
push esp
adc ecx, 0
mov dword [esi + 0x50], edx
mov dword [esi + 0x54], ecx
mov edx, dword [ebp + 0x2e]
mov edx, dword [ebp + 0x10]
pop ebx
pop edi
mov dword [eax - 0x6f3c5cc1], edi
nop
nop
nop
aad 0x64
push ebp
mov esi, esp
push ecx
jno 0x40b27b
jne 0x40b2e0
mov al, byte [esi + 0x2c]
test byte [esi - 0x4b], bl
test ah, bl
mov ch, 0x84
fadd qword [eax]
add byte [eax], al
add byte [ebx - 0x4fcc18b2], cl
push ebx
cmp ecx, 1
add byte [eax], al
mov ecx, dword [esi - 0x19]
xor esi, dword [eax + 0x1f98353]
push edi
clc
inc ebp
cld
jmp 0x854fbb0a