Function at 0x53f9d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x55325b
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
push ebx
push esi
push edi
mov eax, dword [0x5b1700]
xor eax, esp
push eax
lea eax, [esp + 0xf8]
mov dword fs:[0], eax
mov edi, 0xac
mov esi, 1
push str.Entering_CDefragmentation::DefragmentFreeSpace_n
lea eax, [esp + 0x60]
mov dword [esp + 0x60], 0x57d384
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], esi
call fcn.00417460
mov eax, dword [0x5c4c54]
mov edx, dword [eax + 0xc]
add esp, 4
mov ecx, 0x5c4c54
mov dword [esp + 0x78], 0x57d3dc
mov dword [esp + 0x7c], edi
mov dword [esp + 0x80], esi
call edx
add eax, 0x10
mov dword [esp + 0x84], eax
mov ebx, str.Leaving_CDefragmentation::DefragmentFreeSpace_n
lea eax, [esp + 0x84]
mov dword [esp + 0x100], 0
call fcn.00417880
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x40]
mov eax, dword [eax + 0xc]
movzx eax, word [eax + 0xfa]
movzx eax, ax
push eax
xor esi, esi
push str.DefragmentFreeSpace_for_volume__c:_started
lea eax, [esp + 0x64]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], esi
mov byte [esp + 0x2b], 1
mov dword [esp + 0x54], 0xa
mov dword [esp + 0x64], 0x57d434
mov dword [esp + 0x68], 0xb4
mov dword [esp + 0x6c], 1
call fcn.0040e5c0
sub esp, 0x20
fldz
mov edi, esp
mov dword [edi], vtable.IStatus.0
mov dword [edi], vtable.OperationStatus.0
fstp qword [edi + 8]
mov dword [edi + 0x10], esi
mov dword [edi + 0x14], esi
mov dword [edi + 0x18], esi
mov edx, dword [0x5c4c54]
mov eax, dword [edx + 0xc]
mov ecx, 0x5c4c54
mov dword [esp + 0x68], esp
call eax
add eax, 0x10
mov dword [edi + 0x20], eax
mov dword [edi + 0x10], 4
mov dword [edi + 0x14], 1
mov dword [edi + 0x18], esi
mov ecx, dword [ebx + 0x40]
call fcn.00401320
fld qword [0x584eb0]
mov eax, dword [ebx + 0x40]
fstp qword [esp + 0x6c]
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + 0x178]
mov ecx, dword [ecx + 0x17c]
xor edi, edi
cmp ecx, edi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
jl 0x53ffbc
jg 0x53fb54
cmp edx, edi
jbe 0x53ffbc
mov eax, dword [eax + 0xc]
fild qword [esp + 0x24]
mov ecx, dword [eax + 0x178]
mov edx, dword [eax + 0x17c]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], edx
fild qword [esp + 0x8c]
fdivp st(1)
fld qword [esp + 0x6c]
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x53fb91
fstp qword [esp + 0x6c]
jmp 0x53fb93
fstp st(0)
mov eax, dword [0x5c4c54]
mov edx, dword [eax + 0xc]
mov ecx, 0x5c4c54
call edx
add eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0x40]
mov edi, dword [eax + 0x18]
test edi, edi
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xa0], edi
je 0x53fbd0
lea eax, [edi + 4]
mov edx, 1
lock xadd dword [eax], edx
test ecx, ecx
mov byte [esp + 0x100], 2
je 0x53fc10
mov eax, dword [ebx + 0x40]
mov eax, dword [eax + 0x14]
push 0
push 0x5b3854
push 0x5b383c
push 0
push eax
call fcn.004f695d
add esp, 0x14
test eax, eax
je 0x53fc10
add eax, 0x20
lea edi, [esp + 0x40]
call fcn.004069e0
mov edi, dword [esp + 0xa0]
mov ecx, dword [esp + 0x40]
fld qword [esp + 0x6c]
sub esp, 0x28
mov eax, esp
mov dword [esp + 0xb0], esp
push ecx
sub esp, 8
fstp qword [esp]
push 2
push 4
push eax
call fcn.00401090
mov ecx, dword [ebx + 0x40]
call fcn.00401320
test edi, edi
mov byte [esp + 0x100], 1
je 0x53fc73
lea edx, [edi + 4]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x53fc73
mov edx, dword [edi]
mov eax, dword [edx + 4]
mov ecx, edi
call eax
lea ecx, [edi + 8]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x53fc73
mov eax, dword [edi]
mov edx, dword [eax + 8]
mov ecx, edi
call edx
mov byte [esp + 0x100], 0
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53fc9b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebx + 0x40]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
push eax
mov eax, dword [esp + 0x34]
call fcn.004d95a0
mov cl, byte [esp + 0x23]
test cl, al
je 0x53ff4b
mov edi, dword [ebx + 0x40]
push 1
push 4
call fcn.005344a0
add esp, 8
test al, al
je 0x540066
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
add ecx, 1
adc eax, 0
cmp esi, eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], eax
jl 0x53ff33
jg 0x53fcfa
cmp dword [esp + 0x24], ecx
jbe 0x53ff33
mov ebx, dword [esp + 0x24]
sub ebx, dword [esp + 0x34]
mov edi, esi
sbb edi, dword [esp + 0x38]
sub ebx, 1
sbb edi, 0
push edi
push ebx
push eax
push ecx
push str.Found_free_block_at__I64d__size__I64d.
lea eax, [esp + 0x64]
mov dword [esp + 0x64], 0x57d4f8
mov dword [esp + 0x68], 0xe4
mov dword [esp + 0x6c], 1
call fcn.0040e5c0
mov ecx, dword [esp + 0x38]
mov eax, dword [ebp + 8]
add esp, 0x14
push edi
push ebx
push esi
add eax, 0x2c
push ecx
push eax
call fcn.005315a0
test eax, eax
je 0x53fe91
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x40]
mov dword [esp + 0x40], ecx
mov ecx, dword [ecx + 0xc]
mov edx, dword [ecx + 0x178]
mov ecx, dword [ecx + 0x17c]
mov dword [esp + 0x5c], edx
mov edx, dword [eax + 0x18]
add edx, dword [esp + 0x24]
mov dword [esp + 0x60], ecx
mov ecx, dword [eax + 0x1c]
adc ecx, esi
mov dword [esp + 0x94], edx
mov dword [esp + 0x98], ecx
fild qword [esp + 0x94]
sub esp, 0x10
fild qword [esp + 0x6c]
mov ecx, esp
lea edx, [esp + 0x7c]
mov dword [ecx], edx
fdivp st(1)
mov edx, dword [esp + 0xb8]
mov dword [ecx + 4], edx
fstp qword [esp + 0xbc]
mov edx, dword [esp + 0xbc]
mov dword [ecx + 8], edx
mov edx, dword [esp + 0xc0]
mov dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x54]
push edx
push eax
mov eax, dword [ebp + 8]
add eax, 0x2c
push eax
call fcn.0053da40
add esp, 0x20
cmp eax, 0x80004004
je 0x5400bf
test eax, eax
jge 0x53fe49
cmp eax, 0xe0000002
je 0x53fe49
test edi, edi
jl 0x53ff30
jg 0x53fe16
cmp ebx, 1
jbe 0x53ff30
mov eax, dword [esp + 0x4c]
sub eax, 1
test eax, eax
mov dword [esp + 0x4c], eax
jle 0x53ff30
add dword [esp + 0x24], 0xffffffff
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov ebx, dword [ebp + 8]
adc esi, 0xffffffff
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
jmp 0x53ff8a
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
push 0
mov dword [esp + 0x38], edi
mov dword [esp + 0x28], edi
add edi, 1
mov ebx, esi
push 8
adc ebx, 0
push ebx
push edi
mov dword [esp + 0x48], esi
call fcn.004fd610
push 0
push 8
push ebx
push edi
mov dword [esp + 0x40], eax
call fcn.0054ab00
mov ebx, dword [ebp + 8]
mov dl, 1
mov ecx, eax
shl dl, cl
mov byte [esp + 0x23], dl
jmp 0x53ff8a
fld qword [esp + 0x6c]
mov edx, dword [esp + 0xb8]
sub esp, 0x10
fstp qword [esp + 0xcc]
mov eax, esp
lea ecx, [esp + 0x7c]
mov dword [eax], ecx
mov ecx, dword [esp + 0xcc]
mov dword [eax + 4], edx
mov edx, dword [esp + 0xd0]
mov dword [eax + 8], ecx
mov ecx, dword [ebp + 8]
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x34]
push esi
push eax
mov eax, dword [ebp + 8]
add eax, 0x2c
push eax
call fcn.0053f7e0
add esp, 0x1c
cmp eax, 0x80004004
je 0x5400ef
test eax, eax
jge 0x53fef3
cmp eax, 0xe0000002
jne 0x53ff30
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x38]
push 0
push 8
push ebx
push edi
mov dword [esp + 0x34], ecx
call fcn.004fd610
push 0
push 8
push ebx
push edi
mov dword [esp + 0x40], eax
call fcn.0054ab00
mov ebx, dword [ebp + 8]
mov dl, 1
mov ecx, eax
shl dl, cl
mov byte [esp + 0x23], dl
jmp 0x53ff8a
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x23]
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x4c], 0xa
cmp cl, 0x80
jne 0x53ff5c
add dword [esp + 0x30], 1
mov byte [esp + 0x23], 1
jmp 0x53ff67
add cl, cl
cmp cl, 1
mov byte [esp + 0x23], cl
jne 0x53ff8a
mov eax, dword [ebx + 0x40]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
push eax
mov eax, dword [esp + 0x34]
call fcn.004d95a0
test al, al
jne 0x53ff8a
add dword [esp + 0x24], 8
adc esi, 0
add dword [esp + 0x30], 1
add dword [esp + 0x24], 1
mov eax, dword [ebx + 0x40]
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + 0x178]
adc esi, 0
cmp esi, dword [ecx + 0x17c]
mov dword [esp + 0x28], esi
jl 0x53fb54
jg 0x53ffba
cmp dword [esp + 0x24], edx
jb 0x53fb54
xor edi, edi
fldz
sub esp, 0x28
mov esi, esp
mov dword [esi], vtable.IStatus.0
mov dword [esi], vtable.OperationStatus.0
fstp qword [esi + 8]
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], edi
mov eax, dword [0x5c4c54]
mov edx, dword [eax + 0xc]
mov ecx, 0x5c4c54
mov dword [esp + 0xb0], esp
call edx
add eax, 0x10
mov dword [esi + 0x20], eax
mov dword [esi + 0x10], 4
mov dword [esi + 0x14], 6
mov dword [esi + 0x18], edi
mov ecx, dword [ebx + 0x40]
call fcn.00401320
push str.DefragmentFreeSpace_ended
lea eax, [esp + 0x54]
mov dword [esp + 0x54], str.CDefragmentation::DefragmentFreeSpace
mov dword [esp + 0x58], 0x131
mov dword [esp + 0x5c], 1
call fcn.0040e5c0
add esp, 4
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0x104], 0xffffffff
call fcn.0045bf60
xor eax, eax
mov ecx, dword [esp + 0xf8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x57d4e0
lea eax, [esp + 0x54]
mov dword [esp + 0x54], 0x57d4b8
mov dword [esp + 0x58], 0xd8
mov dword [esp + 0x5c], 1
call fcn.0040e5c0
add esp, 4
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0x104], 0xffffffff
call fcn.0045bf60
mov eax, 0x80004004
mov ecx, dword [esp + 0xf8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [esp + 0x78]
push ecx
mov dword [esp + 0x104], 0xffffffff
call fcn.0045bf60
mov eax, 0x80004004
mov ecx, dword [esp + 0xf8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea edx, [esp + 0x78]
push edx
mov dword [esp + 0x104], 0xffffffff
call fcn.0045bf60
mov eax, 0x80004004
mov ecx, dword [esp + 0xf8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret