Function at 0x548550
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x18
push ebx
push ebp
push esi
mov esi, eax
mov ebp, dword [esi + 0x20]
mov edx, dword [esi + ebp*4 + 0x44]
mov ecx, dword [esi + 0x10]
mov ebx, dword [esi + 0x24]
add ecx, 3
dec edx
push edi
mov edi, dword [esi + 0xc]
sar ebx, cl
mov eax, edx
sar eax, cl
lea edi, [edi*8 - 1]
and edi, edx
mov ecx, ebx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ecx
cmp ebx, eax
ja 0x548648
lea edx, [esi + ebx*4 + 0x13c]
mov dword [esp + 0x18], edx
jmp 0x5485b4
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
mov edx, dword [edx]
mov dword [esp + 0x10], edx
test edx, edx
jne 0x5485e5
mov edi, ecx
call fcn.005482e0
mov dword [esp + 0x10], eax
test eax, eax
je 0x548726
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
cmp ecx, eax
je 0x5485f3
mov edi, dword [esi + 0xc]
lea edi, [edi*8 - 1]
cmp ecx, ebx
jne 0x548618
mov ebx, dword [esi + 0xc]
lea ebx, [ebx*8 - 1]
and ebx, dword [esi + 0x24]
mov eax, ebx
cdq
and edx, 0x1f
add eax, edx
mov edx, dword [esp + 0x10]
sar eax, 5
and ebx, 0xffffffe0
jmp 0x54861c
xor ebx, ebx
xor eax, eax
cmp ebx, edi
jg 0x54862e
cmp dword [edx + eax*4], 0xffffffff
jne 0x548668
add ebx, 0x20
inc eax
cmp ebx, edi
jle 0x548620
mov eax, dword [esp + 0x14]
add dword [esp + 0x18], 4
mov edi, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x20], ecx
cmp ecx, eax
jbe 0x5485b0
mov edx, dword [esi + ebp*4 + 0x44]
mov dword [esi + 0x24], edx
inc dword [esi + ebp*4 + 0x44]
mov ebx, dword [esi + ebp*4 + 0x44]
test ebp, ebp
je 0x5486fa
mov edx, dword [esi + ebp*4 + 0x40]
jmp 0x5486fc
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + eax*4]
mov edi, 1
xor edx, edx
test edi, eax
je 0x548682
inc edx
add edi, edi
cmp edx, 0x20
jb 0x548676
add ebx, edx
mov eax, ebx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
lea eax, [ecx + eax*4]
mov ecx, ebx
and ecx, 0x8000001f
jns 0x5486a1
dec ecx
or ecx, 0xffffffe0
inc ecx
mov edx, 1
shl edx, cl
or dword [eax], edx
mov eax, dword [esi + 0xc]
add eax, eax
add eax, eax
add eax, eax
imul eax, dword [esp + 0x20]
lea ebx, [ebx + eax + 1]
cmp ebx, dword [esi + 0x24]
jl 0x5486c7
lea ecx, [ebx - 1]
mov dword [esi + 0x24], ecx
xor eax, eax
test ebp, ebp
jbe 0x5486e4
lea ecx, [esi + 0x44]
cmp ebx, dword [ecx]
jle 0x5486dc
inc eax
add ecx, 4
cmp eax, ebp
jb 0x5486d0
test eax, eax
je 0x5486e4
sub ebx, dword [esi + eax*4 + 0x40]
cmp ebx, 0x7ff
jl 0x5487d2
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret
xor edx, edx
sub ebx, edx
cmp ebx, 0x7ff
jle 0x548745
inc ebp
cmp ebp, 0x20
jl 0x548730
call fcn.0040d9bf
add eax, 0x40
push eax
push 0x31
push 1
push str.HASH:_Out_of_overflow_pages.__Increase_page_size_n
call fcn.0040b251
add esp, 0x10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret
mov dword [esi + 0x20], ebp
mov edx, dword [esi + ebp*4 + 0x40]
mov dword [esi + ebp*4 + 0x44], edx
dec edx
mov dword [esi + ebp*4 + 0x40], edx
mov ebx, 1
mov ecx, dword [esi + 0xc]
lea edx, [ecx*8 - 1]
cmp edi, edx
jne 0x5487a5
inc eax
cmp eax, 0x20
jge 0x54870c
push eax
mov eax, ebp
shl eax, 0xb
push 1
add eax, ebx
push eax
push esi
call fcn.00548050
add esp, 0x10
test eax, eax
jne 0x548726
inc dword [esi + ebp*4 + 0x44]
inc ebx
cmp ebx, 0x7ff
jle 0x5487d0
inc ebp
cmp ebp, 0x20
jge 0x54870c
mov dword [esi + 0x20], ebp
mov eax, dword [esi + ebp*4 + 0x40]
mov dword [esi + ebp*4 + 0x44], eax
dec eax
mov dword [esi + ebp*4 + 0x40], eax
pop edi
mov eax, ebp
pop esi
xor ebx, ebx
shl eax, 0xb
pop ebp
add eax, ebx
pop ebx
add esp, 0x18
ret
mov ecx, dword [esp + 0x10]
inc edi
mov eax, edi
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
lea eax, [ecx + eax*4]
mov ecx, edi
and ecx, 0x8000001f
jns 0x5487c7
dec ecx
or ecx, 0xffffffe0
inc ecx
mov edx, 1
shl edx, cl
or dword [eax], edx
mov eax, ebp
pop edi
pop esi
shl eax, 0xb
pop ebp
add eax, ebx
pop ebx
add esp, 0x18
ret