Function at 0x405310
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe0
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [0x40d4cc]
mov dword [ebp - 0x18], eax
mov ax, word [0x40d4d0]
mov word [ebp - 0x1a], ax
mov si, word [0x40d4e4]
mov eax, dword [ebp - 0xc]
mov ax, word [eax*2 + 0x40c164]
mov word [ebp - 0x10], ax
mov eax, dword [ebp + 8]
mov ax, word [eax*2 + 0x40c164]
mov word [ebp - 0x12], ax
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov ax, word [ebp - 0xc]
call fcn.00404c3c
mov edi, dword [ebp - 4]
mov edi, dword [edi]
mov ax, word [ebp - 0x18]
and ax, word [ebp - 0x10]
movzx eax, ax
shl eax, 3
add edi, eax
movsx ebx, byte [edi]
cmp bx, 0x10
jbe 0x4053db
cmp bx, 0x10
jbe 0x4053db
cmp bx, 0x63
jne 0x40539c
mov eax, 1
jmp 0x40561c
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
movsx eax, byte [edi + 1]
call fcn.00404c60
sub bx, 0x10
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.00404c3c
movzx eax, bx
movzx eax, word [eax*2 + 0x40c164]
and eax, dword [ebp - 0x18]
shl eax, 3
add eax, dword [edi + 4]
mov edi, eax
movsx ebx, byte [edi]
cmp bx, 0x10
ja 0x40538c
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
movsx eax, byte [edi + 1]
call fcn.00404c60
cmp bx, 0x10
jne 0x405441
movzx eax, si
mov edx, dword [0x40d4d8]
mov cl, byte [edi + 2]
mov byte [edx + eax], cl
inc esi
cmp si, 0x8000
jne 0x405359
push 0
lea eax, [ebp - 0x20]
push eax
movzx ebx, si
push ebx
mov eax, dword [0x40d4d8]
push eax
mov eax, dword [0x40c44c]
mov eax, dword [eax]
push eax
call sub.KERNEL32.DLL_WriteFile
mov ecx, dword [0x40c424]
mov edx, ebx
mov eax, dword [0x40d4d8]
call fcn.0040b858
xor esi, esi
jmp 0x405359
cmp bx, 0xf
je 0x405601
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.00404c3c
movzx eax, bx
mov ax, word [eax*2 + 0x40c164]
and ax, word [ebp - 0x18]
add ax, word [edi + 2]
mov word [ebp - 0xe], ax
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.00404c60
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov ax, word [ebp + 8]
call fcn.00404c3c
mov edi, dword [ebp - 8]
mov edi, dword [edi]
movzx eax, word [ebp - 0x12]
and eax, dword [ebp - 0x18]
shl eax, 3
add edi, eax
movsx ebx, byte [edi]
cmp bx, 0x10
jbe 0x4054f8
cmp bx, 0x63
jne 0x4054b5
mov eax, 1
jmp 0x40561c
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
movsx eax, byte [edi + 1]
call fcn.00404c60
sub bx, 0x10
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.00404c3c
movzx eax, bx
mov ax, word [eax*2 + 0x40c164]
and ax, word [ebp - 0x18]
movzx eax, ax
shl eax, 3
add eax, dword [edi + 4]
mov edi, eax
movsx ebx, byte [edi]
cmp bx, 0x10
ja 0x4054a5
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
movsx eax, byte [edi + 1]
call fcn.00404c60
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.00404c3c
mov eax, esi
sub ax, word [edi + 2]
movzx edx, bx
mov dx, word [edx*2 + 0x40c164]
and dx, word [ebp - 0x18]
sub ax, dx
mov edi, eax
lea ecx, [ebp - 0x1a]
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.00404c60
and di, 0x7fff
cmp si, di
jae 0x40554e
mov bx, 0x8000
sub bx, di
jmp 0x405555
mov bx, 0x8000
sub bx, si
cmp bx, word [ebp - 0xe]
jbe 0x40555f
mov bx, word [ebp - 0xe]
sub word [ebp - 0xe], bx
movzx edx, si
movzx eax, di
sub edx, eax
movzx ecx, bx
cmp edx, ecx
jl 0x405599
movzx edx, si
mov ecx, dword [0x40d4d8]
lea edx, [ecx + edx]
push edx
mov edx, dword [0x40d4d8]
lea eax, [edx + eax]
movzx ecx, bx
pop edx
call fcn.00402608
add si, bx
add di, bx
jmp 0x4055b9
movzx eax, di
mov edx, dword [0x40d4d8]
mov al, byte [edx + eax]
movzx edx, si
mov ecx, dword [0x40d4d8]
mov byte [ecx + edx], al
inc esi
inc edi
dec ebx
test bx, bx
ja 0x405599
cmp si, 0x8000
jne 0x4055f1
push 0
lea eax, [ebp - 0x20]
push eax
movzx ebx, si
push ebx
mov eax, dword [0x40d4d8]
push eax
mov eax, dword [0x40c44c]
mov eax, dword [eax]
push eax
call sub.KERNEL32.DLL_WriteFile
mov ecx, dword [0x40c424]
mov edx, ebx
mov eax, dword [0x40d4d8]
call fcn.0040b858
xor esi, esi
cmp word [ebp - 0xe], 0
jne 0x40553b
jmp 0x405359
mov word [0x40d4e4], si
mov eax, dword [ebp - 0x18]
mov dword [0x40d4cc], eax
mov ax, word [ebp - 0x1a]
mov word [0x40d4d0], ax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4