Function at 0x4b4dd0
Capabilities:
Check if file exists
Get file attributes
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4cf808
mov eax, dword fs:[0]
push eax
sub esp, 0xac
push ebx
push esi
push edi
mov eax, dword [0x50f880]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x30]
mov esi, dword [ebx + 0x2c]
add ebx, 0x2c
mov dword [ebp - 0x1c], ebx
cmp esi, eax
je 0x4b4e2c
mov ecx, eax
sub ecx, eax
sar ecx, 2
lea edi, [ecx*4]
push edi
push eax
push esi
call fcn.00454320
add esp, 0xc
add edi, esi
mov dword [ebx + 4], edi
push 0x100000
call fcn.0044d57b
xor ebx, ebx
add esp, 4
mov byte [ebp - 0x18], bl
mov ecx, dword [ebp - 0x18]
push ecx
push eax
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x38], eax
call fcn.0042b180
mov edx, dword [ebp + 0xc]
lea eax, [ebp - 0x90]
mov dword [ebp - 4], ebx
mov ebx, dword [edx]
push eax
call fcn.00401920
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], 0
nop
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx]
lea esi, [ebp - 0x50]
call fcn.004018f0
push eax
lea edx, [ebp - 0x10]
push edx
mov ebx, str.DFOptimize_
mov byte [ebp - 4], 2
call fcn.00409990
add esp, 8
mov ebx, 4
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b4eca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x20]
push ecx
push str._d.bin
lea edi, [ebp - 0x10]
call fcn.0041b4b0
add esp, 8
call fcn.004aaf30
test al, al
jne 0x4b51d5
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4b4f02
test al, 0x10
jne 0x4b51d5
mov eax, dword [ebp - 0x10]
push 0
push 0x80
push 1
push 0
push 0
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x14]
cmp ecx, eax
jae 0x4b4f94
mov edx, dword [esi]
cmp edx, ecx
ja 0x4b4f94
mov edi, ecx
mov ecx, dword [esi + 8]
sub edi, edx
sar edi, 2
cmp eax, ecx
jne 0x4b4f82
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x4b5204
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x4b4f82
mov edx, ecx
shr edx, 1
mov ebx, 0x3fffffff
sub ebx, edx
cmp ebx, ecx
jae 0x4b4f6f
xor ecx, ecx
jmp 0x4b4f71
add ecx, edx
cmp ecx, eax
jae 0x4b4f77
mov ecx, eax
push ecx
call fcn.004325e0
mov ebx, 4
mov eax, dword [esi + 4]
mov edx, dword [esi]
lea edi, [edx + edi*4]
test eax, eax
je 0x4b4fe4
mov ecx, dword [edi]
mov dword [eax], ecx
jmp 0x4b4fe4
mov ecx, dword [esi + 8]
cmp eax, ecx
jne 0x4b4fd8
mov edx, dword [esi]
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x4b5204
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x4b4fd8
mov edx, ecx
shr edx, 1
mov edi, 0x3fffffff
sub edi, edx
cmp edi, ecx
jae 0x4b4fca
xor ecx, ecx
jmp 0x4b4fcc
add ecx, edx
cmp ecx, eax
jae 0x4b4fd2
mov ecx, eax
push ecx
call fcn.004325e0
mov eax, dword [esi + 4]
test eax, eax
je 0x4b4fe4
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
add dword [esi + 4], ebx
mov esi, dword [ebp + 8]
cmp byte [esi + 0x20], 0
je 0x4b4ff9
lea eax, [ebp - 0x10]
push eax
call fcn.004b19a0
mov edi, dword [ebp + 0x10]
lea ecx, [ebp - 0x10]
call fcn.00409e60
mov dword [ebp - 0x18], 0
mov ebx, dword [esi + 0x60]
mov edi, dword [ebp + 0x14]
lea eax, [esi + 0x54]
push eax
push 1
call fcn.004ab480
add esp, 8
test al, al
je 0x4b520e
cmp byte [esi + 0x20], 0
je 0x4b505e
mov eax, dword [esi + 0x24]
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0
push eax
call edi
cmp eax, 0x102
jne 0x4b505e
mov eax, dword [esi + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 0x24]
push 0xffffffffffffffff
push eax
call edi
mov eax, dword [esi + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x14]
push 0
lea ecx, [ebp - 0x54]
push ecx
push 0x100000
push edx
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp dword [ebp - 0x54], 0x100000
jb 0x4b530b
test eax, eax
je 0x4b530b
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x30]
add eax, 0xfff00000
adc ecx, 0xffffffff
sub edx, eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x2c]
sbb eax, ecx
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x60], edx
fild qword [ebp - 0x60]
mov dword [ebp - 0x24], ecx
fild qword [ebp - 0x30]
fdivp st(1)
fld qword [ebp + 0x18]
fmul st(1), st(0)
fxch st(1)
fst qword [ebp - 0x48]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x4b50d2
fstp st(0)
fst qword [ebp - 0x48]
jmp 0x4b50d4
fstp st(1)
cmp byte [esi + 0x20], 0
je 0x4b50e7
sub esp, 8
fstp qword [esp]
call fcn.004b1a80
jmp 0x4b50e9
fstp st(0)
mov edx, dword [0x50f008]
mov eax, dword [edx + 0xc]
push ecx
mov ebx, esp
mov dword [ebp - 0x4c], esp
mov ecx, 0x50f008
mov dword [ebp - 0x4c], ebx
call eax
add eax, 0x10
mov dword [ebx], eax
mov ecx, 0x4ecf88
mov byte [ebp - 4], 5
test ecx, 0xffff0000
jne 0x4b5132
mov edx, ecx
movzx edi, dx
call fcn.0041ae00
test eax, eax
je 0x4b513f
push eax
mov eax, edi
mov edi, ebx
call fcn.0041afb0
jmp 0x4b513f
push 0x4ecf88
push ebx
xor ebx, ebx
call fcn.0041b280
push 0x4ecf8c
sub esp, 8
mov bl, 4
mov byte [ebp - 4], bl
fld qword [ebp - 0x48]
mov eax, dword [esi + 0x60]
fstp qword [esp]
push 2
push eax
lea ecx, [ebp - 0xb8]
push ecx
call fcn.0042d760
mov edx, dword [ebp + 0x14]
push eax
push edx
mov byte [ebp - 4], 6
call fcn.0041e710
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x98]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b5197
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x9c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b51b9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0xb8], vtable.IStatus.0
mov dword [ebp - 0x18], eax
cmp eax, 0x400
jl 0x4b500b
mov ebx, 1
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b51fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add dword [ebp - 0x20], ebx
jmp 0x4b4e80
push str.vector_T__too_long
call fcn.0044d5a8
mov ebx, 1
push 0x4ecf64
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], str.SsdOptimizer::CreateOptimizationFiles
mov dword [ebp - 0x44], 0x2f0
mov dword [ebp - 0x40], ebx
call fcn.00409c10
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b5256
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x68]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b5279
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x80]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b5298
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x90]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b52ba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov esi, dword [ebp - 0x34]
test esi, esi
je 0x4b52f2
lea ecx, [esi + 4]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x4b52f2
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
lea eax, [esi + 8]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x4b52f2
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
mov eax, 3
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b532e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x68]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b5351
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x80]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b5370
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x90]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b5392
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov esi, dword [ebp - 0x34]
test esi, esi
je 0x4b53ca
lea ecx, [esi + 4]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x4b53ca
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
lea eax, [esi + 8]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x4b53ca
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18