Function at 0x1c7e8e0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov edi, ecx
mov eax, dword [0x1cf3040]
xor eax, ebp
mov dword [esp + 0xb8], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
lea eax, [esp + 0x50]
push 0x7f
push str....._base_files_file_win.cc
push str.Write
push eax
call fcn.01c7f230
add esp, 0x10
mov eax, dword [0x1cf656c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov esi, dword [eax + 0xa4]
mov eax, esi
shr eax, 0xe
mov ecx, esi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x1cfae94]
bt ecx, eax
jae 0x1c7ea64
push esi
call section..text
add esp, 4
mov dword [esp + 0x70], esi
mov eax, dword [0x1cf656c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
lea esi, [eax + 0xa8]
mov ebx, dword [esi]
mov eax, ebx
shr eax, 0xe
mov ecx, ebx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x1cfae94]
bt ecx, eax
jae 0x1c7ea53
push ebx
call section..text
add esp, 4
lea eax, [esp + 0x70]
mov dword [eax + 4], ebx
mov dword [eax + 8], esi
mov ecx, dword [esi]
mov dword [esi], eax
mov dword [eax + 0xc], ecx
mov eax, dword [eax + 4]
test eax, eax
je 0x1c7ea4c
mov al, byte [eax + 0x10]
mov byte [esp + 0x80], al
xor eax, eax
mov byte [esp + 0x88], al
mov byte [esp + 0x98], al
mov ecx, dword [0x1cf656c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp byte [ecx + 0xac], al
je 0x1c7eb08
mov eax, dword [esp + 0x74]
cmp byte [esp + 0x80], 0
je 0x1c7ea75
test eax, eax
je 0x1c7eb36
cmp byte [eax + 0x28], 0
je 0x1c7eb36
mov esi, dword [eax + 0x20]
mov dword [eax + 0x20], 0
test esi, esi
je 0x1c7eb36
lock dec dword [esi]
jne 0x1c7eb36
mov ecx, esi
call fcn.01c25c80
push esi
call fcn.01c95155
add esp, 4
jmp 0x1c7eb36
xor eax, eax
jmp 0x1c7e9c9
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x1d02e94], 1
jmp 0x1c7e9aa
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x1d02e94], 1
jmp 0x1c7e96c
test eax, eax
jne 0x1c7eb36
lea esi, [esp + 0x88]
cmp byte [esi + 0x10], 0
je 0x1c7ea99
mov ecx, esi
call fcn.01cbf190
mov byte [esp + 0x98], 0
mov ecx, esi
call fcn.01c7f520
mov byte [esp + 0x98], 1
jmp 0x1c7eb36
movzx ecx, al
lea eax, [esp + 0xa8]
lea edx, [esp + 0x50]
mov dword [eax], edx
lea ebx, [esp + 0xb4]
mov dword [ebx], str.ScopedBlockingCall
lea edx, [esp + 0xa4]
push eax
push ebx
call fcn.01c7f4c0
add esp, 8
jmp 0x1c7eb73
movzx eax, al
mov dword [esp + 0x50], 0
lea ecx, [esp + 0xa8]
push 2
lea edx, [esp + 0x54]
push edx
push ecx
push eax
call fcn.01c76f10
add esp, 0x10
jmp 0x1c7ebe3
mov eax, dword [0x1d06124]
mov ecx, dword [0x1cf656c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x1c7ef1c
cmp byte [0x1d06120], 0
je 0x1c7e9fc
mov esi, dword [esp + 0x70]
test esi, esi
je 0x1c7eb58
cmp dword [esp + 0x74], 0
jne 0x1c7eb58
mov eax, dword [esi]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x1cef298]
mov ecx, esi
push 0
call ebx
mov esi, dword [ebp + 0xc]
mov dword [esp + 0xa4], 0xa
mov al, byte [0x1cf8cca]
test al, al
jne 0x1c7eaad
xor ecx, ecx
dec ecx
test esi, esi
js 0x1c7ebc7
mov eax, dword [ebp + 0x14]
test eax, eax
js 0x1c7ebc7
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
pxor xmm0, xmm0
movdqa xmmword [esp + 0x50], xmm0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ecx
lea esi, [esp + 0xa8]
mov dword [esi], 0xffffffff
lea ecx, [esp + 0x50]
push ecx
push esi
push eax
push edx
push dword [edi]
call dword [sym.imp.KERNEL32.dll_WriteFile]
xor ecx, ecx
cmp eax, 1
sbb ecx, ecx
or ecx, dword [esi]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xa8], 0xa
mov al, byte [0x1cf8cca]
test al, al
jne 0x1c7eae0
call fcn.01c968ab
mov eax, dword [eax]
mov dword [esp + 0x10], eax
call fcn.01c968ab
xor esi, esi
mov dword [eax], esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ebx, dword [esp + 0x70]
test ebx, ebx
je 0x1c7ecbf
cmp dword [esp + 0x74], 0
jne 0x1c7ecbf
mov eax, dword [ebx]
mov esi, dword [eax + 0xc]
cmp esi, 0x1c769b0
jne 0x1c7ed5f
cmp byte [ebx + 0x11], 0
je 0x1c7ecbf
mov esi, dword [ebx + 0x20]
add esi, 0x50
mov ecx, esi
shr ecx, 0xe
mov eax, esi
shr eax, 0x13
mov dword [esp + 0xc], eax
mov eax, dword [eax*4 + 0x1cfae94]
mov dword [esp + 8], ecx
bt eax, ecx
jae 0x1c7ed70
push esi
call section..text
add esp, 4
test esi, esi
je 0x1c7f0df
push esi
call dword [sym.imp.progwrp.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x1c7ec83
push esi
call dword [sym.imp.progwrp.dll_AcquireSRWLockExclusive]
xor eax, eax
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x18], eax
cmp byte [ebx + 0x2a], 0
je 0x1c7ee8a
mov word [ebx + 0x28], 0
push esi
call dword [sym.imp.progwrp.dll_ReleaseSRWLockExclusive]
mov eax, dword [esp + 0xc]
mov eax, dword [eax*4 + 0x1cfae94]
mov ecx, dword [esp + 8]
bt eax, ecx
jae 0x1c7ecbf
push esi
call fcn.01c212b0
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_SetLastError]
call fcn.01c968ab
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
cmp byte [esp + 0x98], 0
je 0x1c7ecea
mov eax, dword [esp + 0x90]
test eax, eax
jne 0x1c7ed81
mov eax, dword [esp + 0x78]
test eax, eax
je 0x1c7ecf8
mov ecx, dword [esp + 0x7c]
mov dword [eax], ecx
mov eax, dword [esp + 0x74]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x1cfae94]
bt edx, ecx
jb 0x1c7f0d1
mov dword [esp + 0x74], 0
mov eax, dword [esp + 0x70]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x1cfae94]
bt edx, ecx
jb 0x1c7ed54
mov ecx, dword [esp + 0xb8]
xor ecx, ebp
call fcn.01c98173
mov eax, dword [esp + 0x1c]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
push eax
call fcn.01c212b0
add esp, 4
jmp 0x1c7ed38
mov ecx, esi
call dword [0x1cef298]
mov ecx, ebx
call esi
jmp 0x1c7ecbf
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x1d02e94], 1
jmp 0x1c7ec69
mov ecx, dword [fcn.01c8e4e0]
cmp ecx, 0x1c93d50
mov dword [esp + 0x10], eax
jne 0x1c7ee6a
xor eax, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], eax
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov edx, 0x7bd05af6
cmp edx, eax
mov edx, 0x863
mov esi, ecx
sbb edx, ecx
mov edi, dword [0x1cf8cbc]
mov ebx, dword [0x1cf8cb8]
jl 0x1c7f0fa
mov ecx, 0xf4240
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push edi
push ebx
push ecx
push eax
call fcn.01cb6960
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], edx
mov edi, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
mov esi, dword [esp + 0xa8]
mov edx, dword [esp + 0xac]
mov dword [esp + 8], esi
sub esi, edi
mov dword [esp + 0xc], edx
sbb edx, ecx
seto al
mov ebx, edx
sar ebx, 0x1f
test al, al
cmovne esi, ebx
add ebx, 0x80000000
test al, al
cmove ebx, edx
cmp esi, 0xf4240
mov eax, ebx
sbb eax, 0
jge 0x1c7ef4f
mov edi, dword [esp + 0x90]
test edi, edi
je 0x1c7ecea
lock dec dword [edi]
jne 0x1c7ecea
jmp 0x1c7f0e2
call dword [0x1cef298]
lea eax, [esp + 0xa8]
push eax
call ecx
add esp, 4
jmp 0x1c7edfc
dec dword [eax + 0xb4]
jmp 0x1c7eeb6
cmp byte [ebx + 0x28], 0
mov eax, dword [ebx + 0x20]
je 0x1c7ee82
mov ecx, dword [eax + 0x5c]
mov edx, dword [eax + 0xa4]
dec edx
mov dword [eax + 0xa4], edx
cmp ecx, dword [eax + 0x60]
je 0x1c7eeb0
cmp dword [eax + 0xac], edx
jae 0x1c7ef05
mov word [eax + 0x78], 0
cmp byte [ebx + 0x11], 0
je 0x1c7f0f7
cmp byte [ebx + 0x10], 0
jne 0x1c7ec95
cmp byte [ebx + 0x29], 0
mov eax, dword [ebx + 0x20]
je 0x1c7eefa
dec dword [eax + 0xa8]
mov ecx, dword [eax + 0x5c]
cmp ecx, dword [eax + 0x60]
je 0x1c7eeef
mov edx, dword [eax + 0xac]
cmp edx, dword [eax + 0xa4]
jae 0x1c7ef0f
mov word [eax + 0x78], 0
jmp 0x1c7ec95
dec dword [eax + 0xb8]
jmp 0x1c7ec95
movzx ecx, word [ecx + 8]
mov word [eax + 0x78], cx
jmp 0x1c7eeb6
movzx ecx, word [ecx + 8]
mov word [eax + 0x78], cx
jmp 0x1c7ec95
push 0x1d06124
call fcn.01c9518a
add esp, 4
cmp dword [0x1d06124], 0xffffffff
jne 0x1c7eb29
mov byte [0x1d06120], 1
push 0x1d06124
call fcn.01c951d9
add esp, 4
jmp 0x1c7eb29
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ecx
mov edx, 0x3938700
mov edi, dword [esp + 0x10]
add edx, dword [edi + 0xf8]
mov eax, dword [edi + 0xfc]
adc eax, 0
mov ecx, 0x7fffffff
cmovno ecx, eax
mov eax, 0xffffffff
cmovo edx, eax
cmp dword [esp + 8], edx
mov edx, dword [esp + 0xc]
mov eax, edx
sbb eax, ecx
jge 0x1c7f1ca
mov ecx, dword [edi + 0xf8]
mov eax, dword [edi + 0xfc]
mov edx, dword [esp + 0x14]
mov dword [esp + 0xc], ecx
sub edx, ecx
mov edi, dword [esp + 0x18]
mov dword [esp + 8], eax
sbb edi, eax
seto cl
mov eax, edi
sar eax, 0x1f
test cl, cl
cmovne edx, eax
add eax, 0x80000000
test cl, cl
cmove eax, edi
mov ecx, edx
add ecx, 1
mov edi, eax
adc edi, 0x80000000
cmp ecx, 2
sbb edi, 0
jb 0x1c7f1a6
movd xmm0, edx
movd xmm1, eax
punpckldq xmm0, xmm1
movq qword [esp + 0x48], xmm0
fild qword [esp + 0x48]
fstp qword [esp + 0x40]
movsd xmm0, qword [esp + 0x40]
divsd xmm0, qword [0x1ce4730]
sub esp, 8
movsd qword [esp], xmm0
call fcn.01cbe4f0
add esp, 8
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
movsd xmm1, qword [0x1ce4738]
ucomisd xmm1, xmm0
jb 0x1c7f178
maxsd xmm0, qword [0x1ce4740]
cvttsd2si edi, xmm0
movd xmm0, esi
xor ecx, ecx
inc ecx
add ecx, esi
mov eax, 0x80000000
adc eax, ebx
movd xmm1, ebx
cmp ecx, 2
sbb eax, 0
punpckldq xmm0, xmm1
movq qword [esp + 0x30], xmm0
fild qword [esp + 0x30]
fstp qword [esp + 0x28]
jae 0x1c7f079
movsd xmm0, qword [0x1ce4748]
jmp 0x1c7f087
movsd xmm0, qword [esp + 0x28]
divsd xmm0, qword [0x1ce4730]
mov esi, dword [esp + 0x10]
sub esp, 8
movsd qword [esp], xmm0
call fcn.01cbe5ed
add esp, 8
fstp qword [esp + 0x20]
movsd xmm0, qword [esp + 0x20]
movsd xmm1, qword [0x1ce4738]
ucomisd xmm1, xmm0
jb 0x1c7f18f
maxsd xmm0, qword [0x1ce4740]
cvttsd2si eax, xmm0
mov ecx, esi
push eax
push edi
call fcn.01c241a0
jmp 0x1c7ee4d
push eax
call fcn.01c212b0
add esp, 4
jmp 0x1c7ed16
int3
mov ecx, edi
call fcn.01c25c80
push edi
call fcn.01c95155
add esp, 4
jmp 0x1c7ecea
int3
mov dword [esp + 8], edi
push edi
mov dword [esp + 0x18], ebx
push ebx
mov ebx, esi
push esi
push eax
mov dword [esp + 0x1c], eax
call fcn.01cb6960
mov edi, edx
mov ecx, eax
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x14]
mul esi
imul ecx, dword [esp + 8]
add edx, ecx
mov ecx, edi
imul edi, edi, 0xf4240
imul ecx, esi
add ecx, edx
mov edx, ecx
mov ecx, dword [esp + 0xc]
sub ecx, eax
sbb ebx, edx
mov edx, 0xf4240
mov eax, dword [esp + 0x18]
mul edx
mov dword [esp + 0xc], eax
add edx, edi
mov edi, edx
mov eax, ecx
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add edx, ecx
push dword [esp + 8]
push esi
push edx
push eax
call fcn.01cb6960
add eax, dword [esp + 0xc]
adc edx, edi
jmp 0x1c7edee
xor eax, eax
ucomisd xmm0, qword [0x1ce4740]
mov edi, 0x7fffffff
cmovb edi, eax
jmp 0x1c7f041
xor ecx, ecx
ucomisd xmm0, qword [0x1ce4740]
mov eax, 0x7fffffff
cmovb eax, ecx
jmp 0x1c7f0c3
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0xc]
mov eax, dword [esp + 0x18]
sbb eax, dword [esp + 8]
setl al
movzx eax, al
movsd xmm0, qword [eax*8 + 0x1ce4720]
jmp 0x1c7f001
mov eax, dword [esp + 8]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
sub esp, 0xc
movq xmm0, qword [esp + 0x5c]
movq qword [esp + 4], xmm0
lea eax, [esp + 0xc0]
mov dword [esp], eax
call fcn.01c736a0
add esp, 0xc
lea eax, [esp + 0xb4]
mov ecx, dword [eax]
test ecx, ecx
je 0x1c7ef91
mov eax, ecx
lock dec dword [ecx]
jne 0x1c7ef91
mov ecx, eax
mov dword [esp + 8], eax
call fcn.01c25c80
push dword [esp + 8]
call fcn.01c95155
add esp, 4
jmp 0x1c7ef91