Function at 0x40b080
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0x10]
mov eax, dword [esi + 0x10]
mov esi, dword [ebx + 0x14]
or eax, ecx
mov dword [ebp + 0x10], 0
jne 0x40b10d
mov al, byte [esi - 9]
test byte [edi + 0x74], al
push 0xffffffffffffff8b
push esi
add al, 0xa0
add esi, dword ds:[eax]
push ecx
push 0
push 0
mov ebx, 0x15ff5200
adc al, 8
inc eax
add byte [ebp - 0x749f3d40], al
rcr dword [eax - 0x55bf40], 1
salc
test eax, eax
jne 0x40b0d2
mov ecx, dword [ebp + 0x14]
pop edi
pop esi
mov dword [ecx], eax
pop ebp
in eax, dx
invalid
xchg esp, eax
add dword [eax + eax], ebp
add byte [eax], al
pop ebp
ret
mov eax, dword [esi + 0xc]
mov ebp, 0x8a2374c0
dec esi
or byte [ecx + ecx*8 + 0x4e8b7875], al
push eax
xchg ecx, eax
dec eax
or byte [ebx + 0x568b5046], cl
push esp
mov ecx, 0xc920
call 0x40d810
mov edx, dword [esi + 0xc]
jns 0x40b178
or al, 0x3b
mov gs, ebx
mov ebx, esi
or al, 0x53
lea ecx, [ebp + 0x10]
push eax
mov eax, dword [esi - 0x1f]
xchg ch, bh
push edx
push eax
mov dl, 0x15
add cl, byte [ecx + 0x40]
sar edi, 1
dec ebp
je 0x40b15a
xor edx, edx
test al, 0x2b
stosd dword es:[edi], eax
add byte [eax], al
mov edi, dword [0x409898]
call edi
test eax, eax
ja 0x40b0ea
sbb eax, dword [ecx]
add byte [eax], al
call edi
call 0x4bae1e
jp 0x40b1d8
add byte [ebx], cl
and eax, 0x20d3850f
shl dword [eax], cl
add dh, ah
mov ebx, dword [0xde40c095]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x10]
test dword [esp + edi*2 - 0x7afb80ea], ebp
sal byte [esi - 0x4c], 0x6a
push esp
push 0x2b008fe8
mov dword [0x364e850], eax
add byte [eax], al
jmp 0x40b1af
mov ecx, dword [esi + 0xc]
push eax
mov edx, dword [ecx + 0x10]
push edx
call ebx
cmp dword [esi + 0xf7ff13], ecx
add bh, al
je 0x40b182
test dword [edi + 0x74], ebx
xor dword [ecx + 0x41ac60], esp
fistp word [esi + 4]
test eax, eax
jne 0x40b1eb
sub eax, 0x4100ec68
add cl, ah
call 0x3940a940
add esp, 0xc
mov dword [0x410960], eax
cmp byte [ebx + 0x60a30cc4], al
or dword [ecx], eax
test eax, eax
je 0x40b1f0
push ebx
call eax
jmp 0x40b1f8
push 1
call dword [0x5f40074c]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 4]
sbb ah, byte [ebp + 0x10]
push 1
push eax
push ecx
push edx
call esp
mov ah, 0xc0
adc dword [eax], eax
test dword [ebx], edx
je 0x40b214
xor eax, eax
jmp 0x40b285
mov ebx, dword [0x65b3c06f]
call ebx
jb 0x40b1de
je 0x40b285
push dword [ebp + 0xafc8005]
add byte [edi - 0x2e], dl
add byte [edx], dh
add byte [edi + eax + 0x3d], dh
arpl word [eax], ax
or eax, dword [eax]
jne 0x40b24f
cmp edi, 0x102
jne 0x40b25e
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx - 0x47a0a48e]
loopne 0x40b259
add dword [esi - 0x77], ebx
adc dword [esi + 0x5d], ebx
ret
outsd dx, dword [esi]
in eax, dx
cld
or al, byte [eax]
jae 0x40b268
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
pop ebx
pop edi
and byte [ecx - 0x47fffeef], bh
adc dword [ebp - 0x59aa06a3], edx
push ebp
cmpsb byte [esi], byte es:[edi]
cld
or al, byte [eax]
jne 0x40b281
adc eax, dword [esp + edx]
mov edx, dword [ebp + 0x10]
pop ebx
pop edi
mov eax, 0xff01117e
sbb byte [ecx], dl
pop esi
pop ebp
ret
test eax, eax
jne 0x40b2bd
mov ecx, dword [ebp + 0x5e]
test ecx, ecx
jne 0x40b29e
mov ecx, dword [ebp + 0x14]
cmp eax, 0xbb5b1098
mov eax, 0x6601110b
mov dword [ecx], edx
pop esi
ret
mov edi, 0xd2850c43
je 0x40b2bd
sbb dl, byte [esi + 8]
test dl, dl
jne 0x40b2bd
jge 0x40b304
push eax
add edx, ecx
mov ecx, dword [esi - 0x5d]
adc ecx, 0
mov dword [esi + 0x50], edx
mov eax, ecx
push esp
mov ecx, dword [ebp + 0x14]
scasb al, byte es:[edi]
push ebp
adc byte [ebp + 0x5f], dh
mov dword [ecx], edx
std
pop ebp
ret
mov ebx, dword [esi + 0x38]
cmp edi, 0xffffffff
jbe 0x40b294
or eax, 0xffffffe0
jmp 0x40b313
outsd dx, dword [esi]
push esi
invalid