Function at 0x40ef90
Capabilities:
Check if file exists
Create directory
Delete file
Read .ini file

Disassembly:
sub esp, 0x920
push ebx
push ebp
push esi
push edi
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x331]
mov byte [esp + 0x330], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor ebp, ebp
mov ecx, 0x27
xor eax, eax
lea edi, [esp + 0x192]
mov word [esp + 0x190], bp
mov byte [esp + 0x14], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x13
xor eax, eax
lea edi, [esp + 0x15]
mov ebx, dword [esp + 0x934]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x7f
xor eax, eax
lea edi, [esp + 0x732]
mov word [esp + 0x730], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 2
lea eax, [ebx + 0x12131200]
push 0x30006
push eax
mov dword [esp + 0x1c], ebp
call dword [0x472f68]
add esp, 0xc
test ax, ax
jne 0x40f306
push 5
push 0x30006
push 0x12130199
call dword [0x472f68]
add esp, 0xc
call fcn.0040eed0
cmp eax, 1
je 0x40f05f
push 1
push 0x12180103
push 0x12130190
call dword [0x472f68]
add esp, 0xc
mov ecx, 0x41
xor eax, eax
mov edi, 0x472820
push 0x100
rep stosd dword es:[edi], eax
mov ecx, 0x19
mov edi, 0x472940
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x334]
mov byte [0x472a2c], bl
push ecx
call fcn.00402890
xor edx, edx
mov dl, byte [0x472a2c]
push edx
call fcn.0042ce90
mov edi, 0x472ac0
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x472940
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x330]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.ConfiguregdScan.ini
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x730]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor ecx, ecx
mov dl, byte [esp + ecx + 0x330]
test dl, dl
je 0x40f132
cmp dl, 0x5c
jne 0x40f11f
mov word [eax], 0x5c
add eax, 2
movsx dx, dl
mov word [eax], dx
inc ecx
add eax, 2
cmp ecx, 0x100
jl 0x40f107
lea eax, [esp + 0x730]
lea ecx, [esp + 0x190]
push eax
push 0x50
push ecx
push str.C:YQYCDiagnoseVehiclesV22.10
push str.SelectDigVer
push str.Settings
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [esp + 0x14]
lea eax, [esp + 0x190]
push edx
push eax
call fcn.00402400
mov edi, str.updatefileB30_
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x14]
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
push 0x472820
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x18]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x472820
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x40f1d9
push ebp
push 0x472820
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
xor eax, eax
mov al, byte [0x472a2c]
add eax, 0xffffffe8
cmp eax, 0xb7
ja case.0x40f1f6.30
xor ecx, ecx
mov cl, byte [eax + 0x40f5e0]
jmp dword [ecx*4 + 0x40f5c4]
push 0x472820
push 0x472ac0
push 0x4729c0
push 0x472800
call fcn.0042e3b0
add esp, 0x10
test eax, eax
jne 0x40f2f1
call fcn.0040fae0
jmp 0x40f31b
push 0x472820
push 0x472ac0
push 0x4729c0
push 0x472800
call fcn.0042e3b0
add esp, 0x10
test eax, eax
jne 0x40f2f1
call fcn.00411e10
jmp 0x40f31b
push 0x472820
push 0x472ac0
push 0x4729c0
push 0x472800
call fcn.0042e3b0
add esp, 0x10
test eax, eax
jne 0x40f2f1
call fcn.00415800
jmp 0x40f31b
push 0x472820
push 0x472ac0
push 0x4729c0
push 0x472800
call fcn.0042e3b0
add esp, 0x10
test eax, eax
jne 0x40f2f1
call fcn.00411700
jmp 0x40f31b
push 0x472820
push 0x472ac0
push 0x4729c0
push 0x472800
call fcn.0042e3b0
add esp, 0x10
test eax, eax
jne 0x40f2f1
call fcn.00413b20
jmp 0x40f31b
push 0x472820
push 0x472ac0
push 0x4729c0
push 0x472800
call fcn.0042e3b0
add esp, 0x10
test eax, eax
je 0x40f316
push 1
push 0x12180103
push 0x1213018f
call dword [0x472f68]
add esp, 0xc
pop edi
pop esi
pop ebp
mov eax, 0xff
pop ebx
add esp, 0x920
ret
call fcn.00414060
mov dword [esp + 0x10], eax
mov ecx, 0x4a
xor eax, eax
lea edi, [esp + 0x65]
mov byte [esp + 0x64], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x631]
mov byte [esp + 0x630], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x431]
mov byte [esp + 0x430], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov al, byte [0x472820]
test al, al
je 0x40f399
mov eax, 0x472820
lea esi, [esp + 0x64]
mov ecx, 0x472821
cmp byte [eax], 0x5c
jne 0x40f38d
cmp byte [ecx], 0x5c
jne 0x40f38d
inc ecx
inc eax
mov dl, byte [eax]
inc ecx
inc eax
mov byte [esi], dl
inc esi
cmp byte [eax], 0
jne 0x40f381
or ecx, 0xffffffff
lea edi, [esp + 0x64]
xor eax, eax
lea edx, [esp + 0x630]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x430]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x64]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x430]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x431d24
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x64]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x434]
push ecx
call dword [sym.imp.MSVCRT.dll__findfirst]
mov ebp, dword [sym.imp.MSVCRT.dll_remove]
add esp, 8
mov ebx, eax
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x231]
mov byte [esp + 0x230], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea edi, [esp + 0x78]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x230]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x230]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, 0x431d20
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40f4ab
test cl, cl
je 0x40f4a7
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40f4ab
add eax, 2
add esi, 2
test cl, cl
jne 0x40f487
xor eax, eax
jmp 0x40f4b0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40f56a
mov esi, 0x431d1c
lea eax, [esp + 0x230]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40f4e8
test cl, cl
je 0x40f4e4
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40f4e8
add eax, 2
add esi, 2
test cl, cl
jne 0x40f4c4
xor eax, eax
jmp 0x40f4ed
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40f56a
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x530]
lea edx, [esp + 0x530]
rep stosd dword es:[edi], eax
lea edi, [esp + 0x630]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x530]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x230]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x530]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebp
add esp, 4
lea ecx, [esp + 0x64]
push ecx
push ebx
call dword [sym.imp.MSVCRT.dll__findnext]
add esp, 8
test eax, eax
je 0x40f438
push ebx
call dword [sym.imp.MSVCRT.dll__findclose]
push 0
push 0
push 0
push 0
call dword [0x472d8c]
mov esi, dword [esp + 0x24]
add esp, 0x14
test esi, esi
jge 0x40f5b6
push 1
push 0x12180103
push 0x12130177
call dword [0x472f68]
add esp, 0xc
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x920
ret