Function at 0x553070
Capabilities:
Check if file exists
Create directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57a8e5
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push ebx
push esi
push edi
mov eax, dword [0x5d52e0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [esi]
mov ecx, dword [esi + 4]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x55315d
mov eax, dword [edi]
sub eax, 0x10
push eax
call fcn.00401a10
lea edi, [eax + 0x10]
add esp, 4
mov dword [ebp - 0x14], edi
mov dword [ebp - 4], 0
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
or eax, ecx
jge 0x5530f9
push 0x104
lea ecx, [ebp - 0x14]
call fcn.004019b0
mov edi, dword [ebp - 0x14]
push edi
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov eax, dword [edi - 8]
push eax
push edi
call fcn.004ff818
add esp, 8
test eax, eax
js 0x55319e
cmp eax, dword [edi - 8]
jg 0x55319e
xor ecx, ecx
mov dword [edi - 0xc], eax
push edi
mov word [edi + eax*2], cx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x55313a
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
add edi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea edx, [edi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x55315d
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov edi, dword [esi]
mov ecx, dword [esi + 4]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x14], 1
cmp eax, 1
jbe 0x5533e4
mov ecx, dword [0x5dd9c0]
mov dword [ebp - 0x10], ecx
cmp ecx, dword [0x5dd9c4]
je 0x5533ce
jmp 0x5531b3
push 0x80070057
call fcn.004010a0
jmp 0x5531b0
mov ecx, dword [ebp - 0x10]
sub ecx, dword [0x5dd9c0]
mov edi, dword [esi]
mov eax, 0x92492493
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
sar edx, 4
mov ebx, edx
sub ecx, edi
shr ebx, 0x1f
add ebx, edx
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, ebx
jbe 0x553434
lea eax, [ebx*8]
sub eax, ebx
add eax, eax
add eax, eax
mov edi, dword [edi + eax]
push ecx
mov ecx, dword [edi - 0x10]
mov edx, dword [ecx]
sub edi, 0x10
mov dword [ebp - 0x18], eax
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x1c], esp
call eax
cmp dword [edi + 0xc], 0
lea edx, [edi + 0xc]
jl 0x55322d
cmp eax, dword [edi]
jne 0x55322d
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x55326c
mov ecx, dword [edi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov dword [ebp - 0x14], eax
test eax, eax
je 0x5533df
mov ecx, dword [edi + 4]
mov dword [eax + 4], ecx
mov ecx, dword [edi + 4]
lea edx, [ecx + ecx + 2]
push edx
add edi, 0x10
push edi
lea ecx, [ecx + ecx + 2]
push ecx
add eax, 0x10
push eax
call fcn.004ffad4
mov edi, dword [ebp - 0x14]
add esp, 0x10
mov edx, dword [ebp - 0x1c]
lea eax, [ebp - 0x20]
add edi, 0x10
push eax
mov dword [edx], edi
call fcn.00531490
add esp, 8
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 1
mov edi, dword [esi]
mov ecx, dword [esi + 4]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, ebx
jbe 0x553434
add edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
mov dword [ebp - 0x14], edi
mov edi, dword [edi]
lea eax, [edx - 0x10]
sub edi, 0x10
cmp eax, edi
je 0x55330e
cmp dword [edi + 0xc], 0
jl 0x553301
mov ecx, dword [eax]
cmp ecx, dword [edi]
jne 0x553301
push eax
call fcn.00401a10
mov dword [ebp - 0x1c], eax
add esp, 4
lea eax, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x5532f4
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
add eax, 0x10
mov dword [ecx], eax
jmp 0x55330e
mov eax, dword [edx - 0xc]
mov ecx, dword [ebp - 0x14]
push eax
push edx
call fcn.00401900
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x553334
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
push 0x80
lea ecx, [ebp - 0x30]
mov dword [ebp - 4], 2
call fcn.00403220
mov ecx, dword [ebp - 0x10]
lea edi, [ebp - 0x30]
call fcn.00403370
mov edi, dword [esi]
mov ecx, dword [esi + 4]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, ebx
jbe 0x553434
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
lea eax, [edi + edx]
push ecx
push eax
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x30]
push edx
push eax
call fcn.005527b0
mov edi, eax
lea ebx, [ebp - 0x30]
mov dword [ebp - 0x14], edi
mov dword [ebp - 4], 0xffffffff
call fcn.00403a00
test edi, edi
jne 0x5533c5
mov eax, dword [ebp - 0x10]
add eax, 0x1c
mov dword [ebp - 0x10], eax
cmp eax, dword [0x5dd9c4]
jne 0x5531b0
cmp edi, 2
je 0x55350f
mov eax, esi
mov ecx, 0x5dd9c0
call fcn.00404720
jmp 0x55350f
call fcn.00401ae0
jne 0x553508
push ecx
mov dword [ebp - 0x20], esp
mov eax, dword [edi]
sub eax, 0x10
mov ebx, esp
push eax
call fcn.00401a10
lea ecx, [ebp - 0x20]
add esp, 4
add eax, 0x10
push ecx
mov dword [ebx], eax
call fcn.00531490
add esp, 8
mov ebx, eax
mov dword [ebp - 4], 3
mov ecx, dword [esi]
mov edi, dword [esi + 4]
sub edi, ecx
mov eax, 0x92492493
imul edi
add edx, edi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x55343e
push str.invalid_vector_T__subscript
call fcn.0051b845
push ebx
call fcn.004015b0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x55346a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esi]
mov ecx, dword [esi + 4]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x553490
push str.invalid_vector_T__subscript
call fcn.0051b845
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push edx
push edi
push 0x5dd9c0
push eax
call fcn.005527b0
mov dword [ebp - 0x14], eax
cmp eax, 2
je 0x55350f
mov ecx, dword [0x5dd9c4]
mov edx, dword [0x5dd9c0]
push ecx
push edx
lea eax, [ebp + 0xc]
push eax
push 0x5dd9c0
call fcn.00403890
push 0x80
mov ecx, 0x5dd9c0
call fcn.00403220
mov ecx, dword [esi]
mov esi, dword [esi + 4]
sub esi, ecx
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x5534fc
push str.invalid_vector_T__subscript
call fcn.0051b845
mov edi, 0x5dd9c0
call fcn.00403370
jmp 0x55350f
mov dword [ebp - 0x14], 0
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8