Function at 0x10022e40
Capabilities:
Check if file exists
Copy file
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100716a2
mov eax, dword fs:[0]
push eax
sub esp, 0x148
mov eax, dword [0x1008ab54]
xor eax, ebp
mov dword [ebp - 0x18], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 8]
mov edi, ecx
push eax
lea ecx, [ebp - 0x3c]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0xa0], edi
mov byte [ebp - 0x45], 0
call fcn.10013140
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x3c]
cmp dword [eax - 0xc], 0
jge 0x10022ea1
or eax, 0xffffffff
jmp 0x10022ebd
push str.Extensions
push eax
call fcn.10049be9
add esp, 8
test eax, eax
jne 0x10022eb8
or eax, 0xffffffff
jmp 0x10022ebd
sub eax, dword [ebp - 0x3c]
sar eax, 1
push eax
push 0
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x3c]
call fcn.1001e310
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 1
call fcn.1000d4b0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10022efc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.10040589
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x10022f16
push 0x80004005
call fcn.10001100
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x44], eax
mov byte [ebp - 4], 2
call fcn.10040589
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x10022f43
push 0x80004005
call fcn.10001100
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x54], eax
mov byte [ebp - 4], 3
mov ecx, str.Baidu
mov eax, edi
lea ecx, [ecx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x10022f86
test dx, dx
je 0x10022f82
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x10022f86
add eax, 4
add ecx, 4
test dx, dx
jne 0x10022f60
xor eax, eax
jmp 0x10022f8b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10022fa6
mov ecx, dword [ebp - 0x3c]
push 0x1007ab50
push ecx
push str._s_s
lea edx, [ebp - 0x44]
push edx
jmp 0x1002306b
mov ecx, str.UCBrowser
mov eax, edi
lea ecx, [ecx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x10022fd6
test dx, dx
je 0x10022fd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x10022fd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x10022fb0
xor eax, eax
jmp 0x10022fdb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
mov eax, dword [ebp - 0x3c]
jne 0x1002305c
cmp dword [eax - 0xc], 0
jge 0x10022fed
or eax, 0xffffffff
jmp 0x10023009
push str.Default
push eax
call fcn.10049be9
add esp, 8
test eax, eax
jne 0x10023004
or eax, 0xffffffff
jmp 0x10023009
sub eax, dword [ebp - 0x3c]
sar eax, 1
push eax
push 0
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x3c]
call fcn.1001e310
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 4
call fcn.1000d4b0
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10023048
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x3c]
push 0x1007ab70
push ecx
push str._s_s
lea edx, [ebp - 0x44]
push edx
jmp 0x1002306b
push 0x1007ab88
push eax
push str._s_s
lea ecx, [ebp - 0x44]
push ecx
call fcn.10012ec0
add esp, 0x10
push 0x1007a4f8
push 0x10078c64
lea edx, [ebp - 0x44]
push edx
call fcn.10012630
mov eax, dword [0x10093428]
push edi
push str.Preferences.
push eax
lea ecx, [ebp - 0x54]
push str._s_s_s
push ecx
call fcn.10012ec0
add esp, 0x14
push 0x1007a4f8
push 0x10078c64
lea edx, [ebp - 0x54]
push edx
call fcn.10012630
call fcn.10040589
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x100230d0
push 0x80004005
call fcn.10001100
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x50], eax
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x3c]
push 0x1007abcc
push ecx
lea edx, [ebp - 0x50]
push str._s_s
push edx
call fcn.10012ec0
mov esi, dword [ebp - 0x50]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 0x10
push esi
call ebx
test eax, eax
je 0x100231e0
mov ecx, str.Chrome
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x1002313e
test dx, dx
je 0x1002313a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x1002313e
add eax, 4
add ecx, 4
test dx, dx
jne 0x10023118
xor eax, eax
jmp 0x10023143
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100231e0
lea eax, [esi - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1002316b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1002318e
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 - 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100231b1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100242a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x100242a0
mov edi, dword [ebp - 0x44]
mov esi, dword [ebp - 0x54]
push edi
mov byte [ebp - 4], 6
call ebx
cmp eax, 1
je 0x10023288
mov byte [ebp - 4], 3
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 0x10023219
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10023239
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10023259
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100242a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x100242a0
push esi
call ebx
cmp eax, 1
jne 0x10023296
push esi
call fcn.10047be3
push 1
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov ecx, dword [0x10093438]
push ecx
push str.__TTK_ID
push 0x10093444
call fcn.10012630
mov edx, dword [0x1009342c]
push edx
push str.__TTK_VERSION
push 0x10093444
call fcn.10012630
call fcn.10040589
xor ecx, ecx
xor ebx, ebx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x100232e8
push 0x80004005
call fcn.10001100
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x58], eax
lea ecx, [ebp - 0x58]
push ecx
mov ecx, esi
mov byte [ebp - 4], 7
call fcn.100253f0
add esp, 4
cmp eax, 0xffffffff
jne 0x100233c7
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x58]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10023335
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
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 0x10023358
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10023378
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10023398
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100242a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x100242a0
and dword [ebp - 0x6c], 0xfffffe00
mov dword [ebp - 0x68], ebx
mov byte [ebp - 4], 9
mov esi, dword [ebp - 0x58]
cmp dword [esi - 4], 1
jle 0x100233ed
mov ecx, dword [esi - 0xc]
push ecx
lea ecx, [ebp - 0x58]
call fcn.10001a90
mov esi, dword [ebp - 0x58]
push esi
lea ecx, [ebp - 0x9c]
call fcn.10002770
mov eax, 0xf
mov dword [ebp - 0x12c], ebx
mov dword [ebp - 0x128], ebx
mov dword [ebp - 0x124], ebx
mov dword [ebp - 0x120], ebx
mov dword [ebp - 0x118], ebx
mov dword [ebp - 0x114], ebx
mov dword [ebp - 0x110], ebx
mov dword [ebp - 0x10c], ebx
mov dword [ebp - 0xf0], eax
mov dword [ebp - 0xf4], ebx
mov byte [ebp - 0x104], 0
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0xc4], ebx
mov byte [ebp - 0xd4], 0
mov byte [ebp - 0xbc], 1
mov byte [ebp - 0xbb], 0
push 0xffffffffffffffff
push ebx
lea edx, [ebp - 0x9c]
push edx
lea ecx, [ebp - 0x108]
mov byte [ebp - 4], 0xb
call fcn.10002220
cmp dword [ebp - 0xf0], 0x10
mov eax, dword [ebp - 0x104]
jae 0x10023490
lea eax, [ebp - 0x104]
mov ecx, dword [ebp - 0xf4]
lea edx, [ebp - 0x74]
push edx
add ecx, eax
push ecx
push eax
lea eax, [ebp - 0x130]
push eax
call fcn.100370d0
test al, al
lea edi, [ebp - 0x130]
sete bl
call fcn.1001c380
mov byte [ebp - 4], 9
cmp dword [ebp - 0x84], 0x10
jb 0x100234d6
mov ecx, dword [ebp - 0x98]
push ecx
call fcn.1003efae
add esp, 4
test bl, bl
je 0x100235a2
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 7
call fcn.100336a0
lea eax, [esi - 0x10]
mov byte [ebp - 4], 6
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1002350a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
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 0x1002352d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10023550
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 - 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10023573
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100242a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x100242a0
mov ecx, dword [ebp - 0x4c]
push ecx
lea edx, [ebp - 0xb8]
push edx
call fcn.10020f10
add esp, 8
mov byte [ebp - 4], 0xc
mov ecx, dword [eax]
lea eax, [ebp - 0x74]
push eax
lea edx, [ebp - 0x78]
push edx
call fcn.10020aa0
add esp, 8
mov byte [ebp - 4], 0xe
mov eax, dword [ebp - 0xb8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100235f1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x78]
push ecx
mov eax, 0x10093438
call fcn.1001a940
add esp, 4
test al, al
je 0x100236ea
lea eax, [ebp - 0x78]
lea esi, [ebp - 0x38]
call fcn.100201e0
mov esi, eax
mov byte [ebp - 4], 0xf
call fcn.10001850
push eax
lea ecx, [ebp - 0x9c]
call fcn.10002770
lea edx, [ebp - 0x9c]
push edx
lea edi, [ebp - 0x74]
mov byte [ebp - 4], 0x10
call fcn.10020fe0
add esp, 4
lea ecx, [ebp - 0x9c]
call fcn.100027b0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xe
call fcn.10001ba0
lea eax, [ebp - 0x78]
lea esi, [ebp - 0x38]
call fcn.100201e0
mov esi, eax
mov byte [ebp - 4], 0x11
call fcn.10001850
push eax
lea ecx, [ebp - 0x9c]
call fcn.10002770
lea eax, [ebp - 0x9c]
push eax
mov ecx, edi
push ecx
mov byte [ebp - 4], 0x12
call fcn.100212b0
add esp, 8
lea ecx, [ebp - 0x9c]
call fcn.100027b0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xe
call fcn.10001ba0
mov eax, dword [ebp - 0xa0]
mov ecx, str.360SE6
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x100236d9
test dx, dx
je 0x100236d5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x100236d9
add eax, 4
add ecx, 4
test dx, dx
jne 0x100236b3
xor eax, eax
jmp 0x100236de
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100236ea
lea ecx, [ebp - 0x78]
call fcn.10021620
push str.backup
lea edx, [ebp - 0x74]
push edx
call fcn.10034210
cmp byte [eax + 8], 0
push str.backup
je 0x100238d5
lea eax, [ebp - 0x74]
push eax
call fcn.10034210
push str.extensions
push eax
call fcn.10034210
cmp byte [eax + 8], 0
push str.backup
je 0x100238bc
lea ecx, [ebp - 0x74]
push ecx
call fcn.10034210
push str.extensions
push eax
call fcn.10034210
push 0x1007ab44
push eax
call fcn.10034210
cmp byte [eax + 8], 0
je 0x10023893
xor edi, edi
push str.backup
lea edx, [ebp - 0x74]
push edx
call fcn.10034210
push str.extensions
push eax
call fcn.10034210
push 0x1007ab44
push eax
call fcn.10034210
mov ecx, eax
call fcn.10033de0
cmp edi, eax
jae 0x1002381e
mov eax, 0x10093438
lea esi, [ebp - 0x38]
call fcn.100201e0
mov ebx, eax
push str.backup
lea eax, [ebp - 0x74]
push eax
mov byte [ebp - 4], 0x13
call fcn.10034210
push str.extensions
push eax
call fcn.10034210
push 0x1007ab44
push eax
call fcn.10034210
push edi
push eax
call fcn.10033ea0
lea esi, [ebp - 0x34]
mov ecx, eax
call fcn.100337d0
mov esi, eax
mov byte [ebp - 4], 0x14
mov eax, dword [ebx]
sub eax, 0x10
cmp dword [eax + 0xc], 1
jle 0x100237ec
mov ecx, dword [eax + 4]
push ecx
mov ecx, ebx
call fcn.10001a90
mov ecx, dword [ebx]
mov eax, esi
call fcn.100286e0
test eax, eax
lea ecx, [ebp - 0x34]
sete bl
call fcn.100027b0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xe
call fcn.10001ba0
test bl, bl
jne 0x100238ef
add edi, 1
jmp 0x10023755
xor al, al
jne 0x100238ef
mov eax, 0x10093438
lea esi, [ebp - 0x38]
call fcn.100201e0
mov bl, 0x15
mov esi, eax
mov byte [ebp - 4], bl
call fcn.10001850
push eax
lea esi, [ebp - 0xb4]
call fcn.10033470
push str.backup
lea edx, [ebp - 0x74]
push edx
mov byte [ebp - 4], 0x16
call fcn.10034210
push str.extensions
push eax
call fcn.10034210
push 0x1007ab44
push eax
call fcn.10034210
mov ecx, esi
push ecx
call fcn.100344d0
mov eax, esi
mov byte [ebp - 4], bl
call fcn.100336a0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xe
call fcn.10001ba0
jmp 0x100238ef
push str.backup
lea edx, [ebp - 0x74]
push edx
call fcn.10034210
push str.extensions
push eax
call fcn.10034210
lea ecx, [ebp - 0x94]
push 0x1007ab44
push ecx
mov ecx, eax
jmp 0x100238df
lea edx, [ebp - 0x74]
push edx
call fcn.10034210
lea ecx, [ebp - 0x94]
push str.extensions
push ecx
mov ecx, eax
jmp 0x100238df
lea edx, [ebp - 0x94]
push edx
lea ecx, [ebp - 0x74]
call fcn.10034500
lea eax, [ebp - 0x94]
call fcn.100336a0
push str.extensions
lea eax, [ebp - 0x74]
push eax
call fcn.10034210
cmp byte [eax + 8], 0
push str.extensions
lea ecx, [ebp - 0x74]
je 0x1002401a
push ecx
call fcn.10034210
push str.settings
push eax
call fcn.10034210
cmp byte [eax + 8], 0
je 0x10023ffc
mov eax, 0x10093438
lea esi, [ebp - 0x38]
mov byte [ebp - 0x3d], 0
call fcn.100201e0
mov esi, eax
push str.extensions
lea edx, [ebp - 0x74]
push edx
mov byte [ebp - 4], 0x17
call fcn.10034210
push str.settings
push eax
call fcn.10034210
mov edi, eax
call fcn.10001850
push eax
push edi
call fcn.10034210
cmp byte [eax + 8], 0
lea ecx, [ebp - 0x38]
setne bl
mov byte [ebp - 4], 0xe
call fcn.10001ba0
mov eax, 0x10093438
lea esi, [ebp - 0x38]
call fcn.100201e0
test bl, bl
mov esi, eax
je 0x10023fb1
push str.extensions
lea eax, [ebp - 0x74]
push eax
mov byte [ebp - 4], 0x18
call fcn.10034210
push str.settings
push eax
call fcn.10034210
mov edi, eax
call fcn.10001850
push eax
push edi
call fcn.10034210
push eax
lea ecx, [ebp - 0xb4]
call fcn.10033540
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x1a
call fcn.10001ba0
push str.manifest
lea ecx, [ebp - 0xb4]
push ecx
call fcn.10034210
cmp byte [eax + 8], 0
je 0x10023fa5
push str.manifest
lea edx, [ebp - 0xb4]
push edx
call fcn.10034210
push str.version
push eax
call fcn.10034210
cmp byte [eax + 8], 0
je 0x10023fa5
push str.manifest
lea eax, [ebp - 0xb4]
push eax
call fcn.10034210
push str.version
push eax
call fcn.10034210
lea esi, [ebp - 0x34]
mov ecx, eax
call fcn.100337d0
mov eax, 0x1009342c
lea esi, [ebp - 0x4c]
mov byte [ebp - 4], 0x1b
call fcn.100201e0
mov esi, eax
mov byte [ebp - 4], 0x1c
call fcn.10001850
push eax
lea ecx, [ebp - 0x9c]
call fcn.10002770
lea ecx, [ebp - 0x9c]
push ecx
lea edx, [ebp - 0x34]
push edx
mov byte [ebp - 4], 0x1d
call fcn.10020400
add esp, 8
cmp eax, 0xffffffff
lea ecx, [ebp - 0x9c]
sete bl
call fcn.100027b0
lea ecx, [ebp - 0x4c]
call fcn.10001ba0
test bl, bl
mov bl, 1
jne 0x10023a9d
mov bl, byte [ebp - 0x3d]
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0x1a
call fcn.100027b0
test bl, bl
je 0x10023b02
mov eax, 0x10093438
lea esi, [ebp - 0x4c]
call fcn.100201e0
mov esi, eax
push str.extensions
lea eax, [ebp - 0x74]
push eax
mov byte [ebp - 4], 0x1e
call fcn.10034210
push str.settings
push eax
call fcn.10034210
mov edi, eax
call fcn.10001850
push eax
lea ecx, [ebp - 0x94]
push ecx
mov ecx, edi
call fcn.10034500
lea eax, [ebp - 0x94]
call fcn.100336a0
lea ecx, [ebp - 0x4c]
call fcn.10001ba0
lea eax, [ebp - 0xb4]
mov byte [ebp - 4], 0xe
call fcn.100336a0
test bl, bl
je 0x10024031
and dword [ebp - 0xac], 0xfffffe00
mov dword [ebp - 0xa8], 0
mov eax, 0x10093444
lea esi, [ebp - 0x38]
mov byte [ebp - 4], 0x21
call fcn.100201e0
mov esi, eax
mov byte [ebp - 4], 0x22
call fcn.10001850
push eax
lea ecx, [ebp - 0x34]
call fcn.10002770
lea eax, [ebp - 0x130]
call fcn.10037050
mov edi, eax
lea ecx, [ebp - 0xb4]
push ecx
lea eax, [ebp - 0x34]
mov byte [ebp - 4], 0x24
call fcn.10037090
lea edi, [ebp - 0x130]
mov bl, al
call fcn.1001c380
lea ecx, [ebp - 0x34]
call fcn.100027b0
lea ecx, [ebp - 0x38]
call fcn.10001ba0
test bl, bl
je 0x10023f96
lea ecx, [ebp - 0x4c]
call fcn.10013240
lea ecx, [ebp - 0x38]
call fcn.10013240
lea ecx, [ebp - 0x64]
call fcn.10013240
push 0x104
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x27
call fcn.10001f90
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov edx, dword [ebp - 0x38]
push str.extkey.ini
push edx
lea eax, [ebp - 0x4c]
push str._s_s
push eax
call fcn.10012ec0
add esp, 0x10
push 0xffffffffffffffff
lea ecx, [ebp - 0x38]
call fcn.10028660
push 0x1007ac38
lea ecx, [ebp - 0x5c]
call fcn.10012ee0
mov ebx, eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0x28
call fcn.10001980
push 0x400
lea ecx, [ebp - 0x64]
mov edi, eax
call fcn.10001f90
mov ecx, ebx
mov esi, eax
call fcn.10001980
mov ecx, dword [ebp - 0xa0]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push edi
push 0x400
push esi
push 0x10077b2c
push eax
push ecx
call ebx
lea ecx, [ebp - 0x5c]
mov esi, eax
mov byte [ebp - 4], 0x27
call fcn.10001ba0
test esi, esi
je 0x10023cfd
add esi, 1
cmp esi, 0x400
je 0x10023cfd
push str.manifest
lea edx, [ebp - 0xb4]
push edx
call fcn.10034210
push 0x1007ac38
lea ecx, [ebp - 0x94]
push ecx
mov ecx, eax
call fcn.10034500
lea eax, [ebp - 0x94]
call fcn.100336a0
lea eax, [ebp - 0x64]
lea esi, [ebp - 0x5c]
call fcn.100201e0
mov esi, eax
mov byte [ebp - 4], 0x29
call fcn.10001850
push eax
lea esi, [ebp - 0x94]
call fcn.10033470
push str.manifest
lea edx, [ebp - 0xb4]
push edx
mov byte [ebp - 4], 0x2a
call fcn.10034210
push 0x1007ac38
push eax
call fcn.10034210
mov esi, eax
lea eax, [ebp - 0x94]
call fcn.10033740
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 0x29
call fcn.100336a0
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x27
call fcn.10001ba0
push str.update_url
lea ecx, [ebp - 0x60]
call fcn.10012ee0
mov dword [ebp - 0x5c], eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0x2b
call fcn.10001980
push 0x400
lea ecx, [ebp - 0x64]
mov edi, eax
call fcn.10001f90
mov ecx, dword [ebp - 0x5c]
mov esi, eax
call fcn.10001980
push edi
push 0x400
push esi
push 0x10077b2c
push eax
mov eax, dword [ebp - 0xa0]
push eax
call ebx
lea ecx, [ebp - 0x60]
mov esi, eax
mov byte [ebp - 4], 0x27
call fcn.10001ba0
test esi, esi
je 0x10023e06
add esi, 1
cmp esi, 0x400
je 0x10023e06
push str.manifest
lea ecx, [ebp - 0xb4]
push ecx
call fcn.10034210
push str.update_url
lea edx, [ebp - 0x94]
push edx
mov ecx, eax
call fcn.10034500
lea eax, [ebp - 0x94]
call fcn.100336a0
lea eax, [ebp - 0x64]
lea esi, [ebp - 0x60]
call fcn.100201e0
mov esi, eax
mov byte [ebp - 4], 0x2c
call fcn.10001850
push eax
lea esi, [ebp - 0x94]
call fcn.10033470
push str.manifest
lea eax, [ebp - 0xb4]
push eax
mov byte [ebp - 4], 0x2d
call fcn.10034210
push str.update_url
push eax
call fcn.10034210
mov esi, eax
lea eax, [ebp - 0x94]
call fcn.10033740
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 0x2c
call fcn.100336a0
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0x27
call fcn.10001ba0
push 0x1007aab0
lea ecx, [ebp - 0x5c]
call fcn.10012ee0
mov dword [ebp - 0x60], eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0x2e
call fcn.10001980
push 0x400
lea ecx, [ebp - 0x64]
mov edi, eax
call fcn.10001f90
mov ecx, dword [ebp - 0x60]
mov esi, eax
call fcn.10001980
mov ecx, dword [ebp - 0xa0]
push edi
push 0x400
push esi
push 0x10077b2c
push eax
push ecx
call ebx
lea ecx, [ebp - 0x5c]
mov esi, eax
mov byte [ebp - 4], 0x27
call fcn.10001ba0
test esi, esi
je 0x10023f2b
add esi, 1
cmp esi, 0x400
je 0x10023f2b
push str.manifest
lea edx, [ebp - 0xb4]
push edx
call fcn.10034210
push 0x1007aab0
lea ecx, [ebp - 0x94]
push ecx
mov ecx, eax
call fcn.10034500
lea eax, [ebp - 0x94]
call fcn.100336a0
lea ecx, [ebp - 0x64]
call fcn.10001980
mov edx, eax
lea eax, [ebp - 0x34]
call fcn.10008620
lea edx, [ebp - 0x34]
push edx
lea edi, [ebp - 0x14c]
mov byte [ebp - 4], 0x2f
call fcn.10020550
add esp, 4
mov bl, 0x30
lea esi, [ebp - 0x94]
mov byte [ebp - 4], bl
call fcn.100334d0
push str.manifest
lea eax, [ebp - 0xb4]
push eax
mov byte [ebp - 4], 0x31
call fcn.10034210
push 0x1007aab0
push eax
call fcn.10034210
mov esi, eax
lea eax, [ebp - 0x94]
call fcn.10033740
lea eax, [ebp - 0x94]
mov byte [ebp - 4], bl
call fcn.100336a0
mov ecx, edi
call fcn.100027b0
lea esi, [ebp - 0x34]
mov byte [ebp - 4], 0x27
call fcn.10001820
mov eax, 0x10093438
lea esi, [ebp - 0x60]
call fcn.100201e0
mov esi, eax
push str.extensions
lea ecx, [ebp - 0x74]
push ecx
mov byte [ebp - 4], 0x32
call fcn.10034210
push str.settings
push eax
call fcn.10034210
mov edi, eax
call fcn.10001850
push eax
push edi
call fcn.10034210
mov esi, eax
lea eax, [ebp - 0xb4]
call fcn.10033740
lea ecx, [ebp - 0x60]
call fcn.10001ba0
lea ecx, [ebp - 0x64]
mov byte [ebp - 0x45], 1
call fcn.10001ba0
lea ecx, [ebp - 0x38]
call fcn.10001ba0
lea ecx, [ebp - 0x4c]
call fcn.10001ba0
mov byte [ebp - 4], 0xe
lea eax, [ebp - 0xb4]
jmp 0x1002402c
mov byte [ebp - 0x3d], 1
mov bl, byte [ebp - 0x3d]
jmp 0x10023aad
push str.extensions
lea edx, [ebp - 0x74]
push edx
mov byte [ebp - 4], 0x1f
call fcn.10034210
push str.settings
push eax
call fcn.10034210
mov edi, eax
call fcn.10001850
push eax
lea eax, [ebp - 0x94]
push eax
mov ecx, edi
call fcn.10034500
lea eax, [ebp - 0x94]
call fcn.100336a0
lea ecx, [ebp - 0x38]
call fcn.10001ba0
jmp 0x10023b19
push str.extensions
lea edx, [ebp - 0x74]
push edx
call fcn.10034210
lea ecx, [ebp - 0x94]
push str.settings
push ecx
mov ecx, eax
jmp 0x10024021
lea edx, [ebp - 0x94]
push edx
call fcn.10034500
lea eax, [ebp - 0x94]
call fcn.100336a0
lea esi, [ebp - 0x34]
lea edi, [ebp - 0x74]
call fcn.100348f0
mov byte [ebp - 4], 0x33
mov edi, dword [ebp - 0x54]
push edi
mov ecx, eax
call fcn.10025550
add esp, 4
test eax, eax
sete bl
mov byte [ebp - 4], 0xe
cmp dword [ebp - 0x1c], 0x10
jb 0x10024069
mov eax, dword [ebp - 0x30]
push eax
call fcn.1003efae
add esp, 4
test bl, bl
je 0x10024158
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x78]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10024094
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 7
call fcn.100336a0
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100240c3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
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 0x100240e6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10024106
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 - 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10024129
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100242a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x100242a0
cmp byte [ebp - 0x45], 0
mov esi, dword [ebp - 0x44]
je 0x1002417d
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmp eax, 1
jne 0x10024173
push esi
call fcn.10047be3
push 1
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmp eax, 1
jne 0x1002418f
push edi
call fcn.10047be3
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x78]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100241b2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 7
call fcn.100336a0
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100241e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 3
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 0x10024207
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10024227
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10024247
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1002426d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
jmp 0x100242a3
or eax, 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x18]
xor ecx, ebp
call fcn.10048e2f
mov esp, ebp
pop ebp
ret