Function at 0x445c00
Capabilities:
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov edx, dword [eax + 0x30]
mov ebp, dword [eax + 0x2c]
test edx, edx
jne 0x445c21
lea edx, [ebp*8]
cmp dword [eax + 0x34], edx
je 0x445dc0
mov esi, dword [eax + 0x18]
mov edi, dword [eax + 0x1c]
mov ebx, eax
mov dword [esp + 0x34], 0
mov eax, dword [eax + 0x10]
mov edx, dword [ebx + 0x14]
mov dword [esp + 0x30], ebp
sub eax, esi
sbb edx, edi
mov dword [esp + 0x28], eax
mov ecx, eax
mov dword [esp + 0x2c], edx
mov eax, edx
mov edx, dword [esp + 0x34]
cmp ebp, ecx
mov ecx, dword [esp + 0x28]
sbb edx, eax
lea eax, [esp + 0x4c]
cmovb ecx, ebp
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 4], esi
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 8], edi
mov eax, dword [ebx]
mov dword [esp + 0x28], ecx
mov eax, dword [eax]
mov dword [esp], eax
call fcn.00415cf0
mov ecx, dword [esp + 0x28]
mov ebp, eax
mov eax, edx
or eax, ebp
jne 0x445dd0
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x28], ecx
cmp esi, ecx
jne 0x445d40
mov eax, dword [ebx + 0x2c]
cmp eax, esi
ja 0x445ee0
mov ecx, dword [ebx + 0x30]
test ecx, ecx
jne 0x445e73
mov ecx, dword [ebx + 0x2c]
mov eax, dword [ebx + 0x34]
lea esi, [ecx*8]
cmp eax, esi
je 0x445db4
mov esi, eax
mov edi, dword [ebx + 0x3c]
shr esi, 3
add edi, esi
and eax, 7
je 0x445d0f
movzx eax, al
mov ecx, 8
sub ecx, eax
mov eax, 1
shl eax, cl
lea ecx, [eax - 1]
and byte [edi], cl
mov ecx, dword [ebx + 0x3c]
neg eax
mov edi, dword [ebx + 0x40]
add ecx, esi
and al, byte [edi + esi]
or byte [ecx], al
add esi, 1
mov edi, dword [ebx + 0x3c]
mov ecx, dword [ebx + 0x2c]
add edi, esi
sub ecx, esi
add esi, dword [ebx + 0x40]
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], ecx
mov dword [esp + 0x28], edx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebx + 0x2c]
mov edx, dword [esp + 0x28]
shl eax, 3
mov dword [ebx + 0x34], eax
add esp, 0x5c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [fcn.004a1b90]
mov dword [esp], 2
mov ebp, 5
call ebx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0x53d400
mov dword [esp + 0x10], ecx
mov dword [esp + 4], 0x53d570
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call ebx
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x53d439
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call ebx
mov dword [esp], eax
call sub.msvcrt.dll_fflush
xor edx, edx
add esp, 0x5c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
add esp, 0x5c
xor ebp, ebp
xor edx, edx
pop ebx
mov eax, ebp
pop esi
pop edi
pop ebp
ret
mov dword [esp + 4], edx
mov dword [esp], ebp
mov dword [esp + 0x30], edx
mov dword [esp + 0x3c], ecx
call fcn.0041d490
mov ebx, dword [fcn.004a1b90]
mov dword [esp], 2
mov dword [esp + 0x28], eax
call ebx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], esi
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x14], edi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0x53d400
mov dword [esp + 4], 0x53d520
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call ebx
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x53d439
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call ebx
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov edx, dword [esp + 0x30]
add esp, 0x5c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebx + 0x3c]
mov esi, ecx
mov edi, ecx
mov ecx, dword [ebx + 0x40]
shr esi, 3
and edi, 7
mov dword [esp + 0x28], edx
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, edi
mov edx, dword [esp + 0x28]
test al, al
je 0x445ecd
mov ecx, edi
mov eax, 1
shl eax, cl
mov ecx, dword [ebx + 0x3c]
add ecx, esi
mov dword [esp + 0x28], ecx
mov edi, dword [esp + 0x28]
mov ecx, eax
sub eax, 1
neg ecx
and byte [edi], cl
mov ecx, dword [ebx + 0x3c]
mov edi, dword [ebx + 0x40]
add ecx, esi
and al, byte [edi + esi]
or byte [ecx], al
mov dword [ebx + 0x30], 0
jmp 0x445cbb
sub eax, esi
add esi, dword [ebx + 0x40]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov dword [esp], esi
mov dword [esp + 0x28], edx
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x28]
jmp 0x445cb0