Function at 0x10103660
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x27c
mov eax, dword [0x102519c8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
push esi
push edi
mov dword [ebp - 0x22c], ebx
cmp dword [ebx + 0xc0], 0
je 0x101042a3
call fcn.10009c50
mov ecx, dword [ebx + 0xc0]
push eax
call fcn.10121230
call fcn.101033f0
test eax, eax
jne 0x101042a3
call fcn.10009c50
test eax, eax
je 0x101036c2
mov eax, dword [ebx + 0xc0]
cmp dword [eax + 0x30], 0
je 0x101042a3
cmp dword [0x1025acd4], 0
mov dword [ebp - 0x248], 0
mov dword [ebp - 0x244], 0
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 0
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x260], 0
mov dword [ebp - 0x25c], 0
mov dword [ebp - 0x258], 0
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 0
mov dword [ebp - 0x220], 0
je 0x10104277
push 0x208
lea eax, [ebp - 0x20c]
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
call fcn.10009c50
test eax, eax
je 0x1010382e
call fcn.100ddff0
test eax, eax
je 0x10104277
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0x20c]
push 0
push 0x29
push eax
push 0
call esi
test eax, eax
je 0x101037a7
push 0
lea eax, [ebp - 0x248]
mov ecx, ebx
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.10104390
xor eax, eax
mov word [ebp - 0x20c], ax
lea eax, [ebp - 0x20c]
push eax
push 0x102
call fcn.100dbd90
add esp, 8
cmp word [ebp - 0x20c], 0
je 0x10103827
push 1
mov ecx, 0x1025b450
call fcn.10008cd0
push 1
lea eax, [ebp - 0x248]
mov ecx, ebx
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.10104390
push 0
push 0x24
lea eax, [ebp - 0x20c]
push eax
push 0
call esi
test eax, eax
je 0x1010381b
push 0
lea eax, [ebp - 0x23c]
mov ecx, ebx
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.10104c40
push 0
mov ecx, 0x1025b450
call fcn.10008cd0
mov eax, 1
jmp 0x10103889
lea eax, [ebp - 0x20c]
push eax
push 0x102
call fcn.100dbd90
add esp, 8
lea eax, [ebp - 0x248]
mov ecx, ebx
push 0
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.10104390
push 0
push 0x24
lea eax, [ebp - 0x20c]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x10103887
push 0
lea eax, [ebp - 0x23c]
mov ecx, ebx
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.10104c40
xor eax, eax
push eax
lea eax, [ebp - 0x260]
mov ecx, ebx
push eax
call fcn.10104930
mov ecx, dword [ebp - 0x244]
mov eax, 0x2aaaaaab
mov ebx, dword [ebp - 0x248]
sub ecx, ebx
imul ecx
mov dword [ebp - 0x214], ebx
sar edx, 2
mov edi, edx
shr edi, 0x1f
add edi, edx
mov dword [ebp - 0x21c], edi
je 0x10103a76
lea esp, [esp]
lea ecx, [ebp - 0x228]
call fcn.100996c0
mov esi, dword [ebp - 0x224]
cmp dword [ebp - 0x220], esi
je 0x10103905
mov eax, dword [ebx]
sub eax, 0x10
push eax
call fcn.10002a60
add eax, 0x10
add esp, 4
mov dword [esi], eax
add dword [ebp - 0x224], 4
jmp 0x10103912
push ebx
push esi
lea ecx, [ebp - 0x228]
call fcn.100048e0
push 0x10202940
lea ecx, [ebp - 0x210]
call fcn.10002490
push eax
lea eax, [ebp - 0x230]
push 0xd
push eax
call fcn.100053d0
mov edi, dword [ebx + 0x14]
add esp, 0xc
mov ebx, dword [ebx + 0x10]
mov esi, dword [eax]
push 1
push 0
push ecx
mov ecx, esp
push 0x10202940
call fcn.10002490
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
push ecx
mov ecx, esp
push 0x10202940
call fcn.10002490
push ecx
mov ecx, esp
push 0x10202940
call fcn.10002490
push ecx
mov ecx, esp
push 0x10202940
call fcn.10002490
push 0
push 0xffffffffffffffff
push 4
push 0
lea eax, [ebp - 0x228]
push eax
push 0
push esi
push 0x10202940
push edi
mov edi, dword [ebp - 0x22c]
mov ecx, edi
push ebx
call fcn.100cd930
mov edx, dword [ebp - 0x230]
mov esi, eax
add edx, 0xfffffff0
or ecx, 0xffffffff
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x101039c0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x210]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x101039de
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x214]
lea ecx, [ebp - 0x278]
push ebx
mov dword [ebp - 0x27c], esi
call fcn.10102660
mov ecx, dword [edi + 0xd0]
cmp dword [edi + 0xd4], ecx
je 0x10103a24
mov eax, dword [ebp - 0x27c]
mov dword [ecx], eax
lea eax, [ebp - 0x278]
push eax
add ecx, 4
call fcn.10102660
add dword [edi + 0xd0], 0x1c
jmp 0x10103a37
lea eax, [ebp - 0x27c]
push eax
push ecx
lea ecx, [edi + 0xcc]
call fcn.10102400
lea ecx, [ebp - 0x274]
call fcn.101029a0
mov edx, dword [ebp - 0x278]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10103a60
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0x18
sub dword [ebp - 0x21c], 1
mov dword [ebp - 0x214], ebx
jne 0x101038d0
mov ecx, dword [ebp - 0x238]
mov eax, 0x2aaaaaab
sub ecx, dword [ebp - 0x23c]
xor ebx, ebx
imul ecx
mov dword [ebp - 0x230], ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x254], eax
je 0x10104235
mov eax, 0x10202940
shr eax, 0x10
mov dword [ebp - 0x21c], eax
jmp 0x10103ac0
mov edi, dword [ebp - 0x224]
mov esi, dword [ebp - 0x228]
cmp esi, edi
je 0x10103af7
mov edx, dword [esi]
or eax, 0xffffffff
sub edx, 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10103aea
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, edi
jne 0x10103ad0
mov esi, dword [ebp - 0x228]
lea eax, [ebx + ebx*2]
mov ecx, dword [ebp - 0x23c]
mov dword [ebp - 0x224], esi
lea eax, [ecx + eax*8]
mov dword [ebp - 0x24c], eax
cmp dword [ebp - 0x220], esi
je 0x10103b33
mov eax, dword [eax]
sub eax, 0x10
push eax
call fcn.10002a60
add eax, 0x10
add esp, 4
mov dword [esi], eax
add dword [ebp - 0x224], 4
jmp 0x10103b40
push eax
push esi
lea ecx, [ebp - 0x228]
call fcn.100048e0
push 1
push 0
push ecx
mov ebx, esp
mov dword [ebp - 0x214], ebx
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
cmp dword [ebp - 0x21c], 0
mov dword [ebx], eax
push 0
jne 0x10103c61
mov eax, 0x10202940
mov ecx, 0x1025bea0
movzx ebx, ax
call fcn.101beff4
mov esi, eax
mov edi, 1
test esi, esi
je 0x10103c6d
mov ecx, ebx
shr ecx, 4
lea eax, [ecx + 1]
mov dword [ebp - 0x210], eax
lea esp, [esp]
push 0
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
test eax, eax
je 0x10103bbf
push ebx
push eax
push esi
call fcn.10003980
add esp, 0xc
test eax, eax
jne 0x10103bdd
push edi
mov ecx, 0x1025bea0
call fcn.101beff4
mov esi, eax
inc edi
test esi, esi
je 0x10103c6d
mov eax, dword [ebp - 0x210]
jmp 0x10103ba0
test esi, esi
je 0x10103c6d
push 6
push dword [ebp - 0x210]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10103c6d
push ebx
push eax
push esi
call fcn.10003980
mov esi, eax
add esp, 0xc
test esi, esi
je 0x10103c6d
mov ebx, dword [ebp - 0x214]
mov ecx, 1
movzx edx, word [esi]
mov edi, edx
mov ebx, dword [ebx]
mov eax, dword [ebx - 8]
sub ecx, dword [ebx - 4]
sub eax, edi
or eax, ecx
jge 0x10103c3a
mov ebx, dword [ebp - 0x214]
mov ecx, ebx
push edi
call fcn.10003310
mov ebx, dword [ebx]
movzx edx, word [esi]
movzx ecx, dx
lea eax, [esi + 2]
push ecx
push eax
push edi
push ebx
call fcn.101eb860
mov ecx, dword [ebp - 0x214]
add esp, 0x10
mov eax, dword [ecx]
mov dword [eax - 0xc], edi
mov eax, dword [ecx]
xor ecx, ecx
mov word [eax + edi*2], cx
jmp 0x10103c6d
push 0x10202940
mov ecx, ebx
call fcn.10003740
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
push ecx
mov ebx, esp
mov dword [ebp - 0x214], ebx
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
cmp dword [ebp - 0x21c], 0
mov dword [ebx], eax
push 0
jne 0x10103d91
mov eax, 0x10202940
mov ecx, 0x1025bea0
movzx ebx, ax
call fcn.101beff4
mov esi, eax
mov edi, 1
test esi, esi
je 0x10103d9d
mov ecx, ebx
shr ecx, 4
lea eax, [ecx + 1]
mov dword [ebp - 0x210], eax
jmp 0x10103cd0
push 0
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
test eax, eax
je 0x10103cef
push ebx
push eax
push esi
call fcn.10003980
add esp, 0xc
test eax, eax
jne 0x10103d0d
push edi
mov ecx, 0x1025bea0
call fcn.101beff4
mov esi, eax
inc edi
test esi, esi
je 0x10103d9d
mov eax, dword [ebp - 0x210]
jmp 0x10103cd0
test esi, esi
je 0x10103d9d
push 6
push dword [ebp - 0x210]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10103d9d
push ebx
push eax
push esi
call fcn.10003980
mov esi, eax
add esp, 0xc
test esi, esi
je 0x10103d9d
mov ebx, dword [ebp - 0x214]
mov ecx, 1
movzx edx, word [esi]
mov edi, edx
mov ebx, dword [ebx]
mov eax, dword [ebx - 8]
sub ecx, dword [ebx - 4]
sub eax, edi
or eax, ecx
jge 0x10103d6a
mov ebx, dword [ebp - 0x214]
mov ecx, ebx
push edi
call fcn.10003310
mov ebx, dword [ebx]
movzx edx, word [esi]
movzx ecx, dx
lea eax, [esi + 2]
push ecx
push eax
push edi
push ebx
call fcn.101eb860
mov ecx, dword [ebp - 0x214]
add esp, 0x10
mov eax, dword [ecx]
mov dword [eax - 0xc], edi
mov eax, dword [ecx]
xor ecx, ecx
mov word [eax + edi*2], cx
jmp 0x10103d9d
push 0x10202940
mov ecx, ebx
call fcn.10003740
push ecx
mov ebx, esp
mov dword [ebp - 0x214], ebx
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
cmp dword [ebp - 0x21c], 0
mov dword [ebx], eax
push 0
jne 0x10103eb6
mov eax, 0x10202940
mov ecx, 0x1025bea0
movzx ebx, ax
call fcn.101beff4
mov esi, eax
mov edi, 1
test esi, esi
je 0x10103ec2
mov ecx, ebx
shr ecx, 4
lea eax, [ecx + 1]
mov dword [ebp - 0x210], eax
push 0
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
test eax, eax
je 0x10103e14
push ebx
push eax
push esi
call fcn.10003980
add esp, 0xc
test eax, eax
jne 0x10103e32
push edi
mov ecx, 0x1025bea0
call fcn.101beff4
mov esi, eax
inc edi
test esi, esi
je 0x10103ec2
mov eax, dword [ebp - 0x210]
jmp 0x10103df5
test esi, esi
je 0x10103ec2
push 6
push dword [ebp - 0x210]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10103ec2
push ebx
push eax
push esi
call fcn.10003980
mov esi, eax
add esp, 0xc
test esi, esi
je 0x10103ec2
mov ebx, dword [ebp - 0x214]
mov ecx, 1
movzx edx, word [esi]
mov edi, edx
mov ebx, dword [ebx]
mov eax, dword [ebx - 8]
sub ecx, dword [ebx - 4]
sub eax, edi
or eax, ecx
jge 0x10103e8f
mov ebx, dword [ebp - 0x214]
mov ecx, ebx
push edi
call fcn.10003310
mov ebx, dword [ebx]
movzx edx, word [esi]
movzx ecx, dx
lea eax, [esi + 2]
push ecx
push eax
push edi
push ebx
call fcn.101eb860
mov ecx, dword [ebp - 0x214]
add esp, 0x10
mov eax, dword [ecx]
mov dword [eax - 0xc], edi
mov eax, dword [ecx]
xor ecx, ecx
mov word [eax + edi*2], cx
jmp 0x10103ec2
push 0x10202940
mov ecx, ebx
call fcn.10003740
push ecx
mov esi, esp
mov dword [ebp - 0x214], esi
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
cmp dword [ebp - 0x21c], 0
mov dword [esi], eax
push 0
jne 0x10103fdd
mov eax, 0x10202940
mov ecx, 0x1025bea0
movzx ebx, ax
call fcn.101beff4
mov esi, eax
mov edi, 1
test esi, esi
je 0x10103fe9
mov eax, ebx
shr eax, 4
inc eax
mov dword [ebp - 0x210], eax
push 0
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
test eax, eax
je 0x10103f37
push ebx
push eax
push esi
call fcn.10003980
add esp, 0xc
test eax, eax
jne 0x10103f55
push edi
mov ecx, 0x1025bea0
call fcn.101beff4
mov esi, eax
inc edi
test esi, esi
je 0x10103fe9
mov eax, dword [ebp - 0x210]
jmp 0x10103f18
test esi, esi
je 0x10103fe9
push 6
push dword [ebp - 0x210]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10103fe9
push ebx
push eax
push esi
call fcn.10003980
mov edi, eax
add esp, 0xc
test edi, edi
je 0x10103fe9
mov ebx, dword [ebp - 0x214]
movzx ecx, word [edi]
mov eax, ecx
mov esi, ecx
mov dword [ebp - 0x210], eax
mov ecx, 1
mov edx, dword [ebx]
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, esi
or ecx, eax
jge 0x10103fb6
push esi
mov ecx, ebx
call fcn.10003310
mov edx, dword [ebx]
movzx eax, word [edi]
jmp 0x10103fbc
mov eax, dword [ebp - 0x210]
movzx ecx, ax
lea eax, [edi + 2]
push ecx
push eax
push esi
push edx
call fcn.101eb860
mov eax, dword [ebx]
add esp, 0x10
xor ecx, ecx
mov dword [eax - 0xc], esi
mov eax, dword [ebx]
mov word [eax + esi*2], cx
jmp 0x10103fe9
push 0x10202940
mov ecx, esi
call fcn.10003740
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
cmp dword [ebp - 0x21c], 0
mov dword [ebp - 0x218], eax
push 0
jne 0x10104105
mov eax, 0x10202940
mov ecx, 0x1025bea0
movzx ebx, ax
call fcn.101beff4
mov esi, eax
mov edi, 1
test esi, esi
je 0x10104115
mov eax, ebx
shr eax, 4
inc eax
mov dword [ebp - 0x210], eax
lea ebx, [ebx]
push 0
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
test eax, eax
je 0x1010405f
push ebx
push eax
push esi
call fcn.10003980
add esp, 0xc
test eax, eax
jne 0x1010407d
push edi
mov ecx, 0x1025bea0
call fcn.101beff4
mov esi, eax
inc edi
test esi, esi
je 0x10104115
mov eax, dword [ebp - 0x210]
jmp 0x10104040
test esi, esi
je 0x10104115
push 6
push dword [ebp - 0x210]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x10104115
push ebx
push eax
push esi
call fcn.10003980
mov edi, eax
add esp, 0xc
test edi, edi
je 0x10104115
mov ecx, dword [ebp - 0x218]
movzx edx, word [edi]
mov esi, edx
mov ebx, edx
mov edx, 1
mov eax, dword [ecx - 8]
sub edx, dword [ecx - 4]
sub eax, esi
or edx, eax
jge 0x101040dc
push esi
lea ecx, [ebp - 0x218]
call fcn.10003310
movzx ebx, word [edi]
mov ecx, dword [ebp - 0x218]
movzx edx, bx
lea eax, [edi + 2]
push edx
push eax
push esi
push ecx
call fcn.101eb860
mov eax, dword [ebp - 0x218]
add esp, 0x10
xor ecx, ecx
mov dword [eax - 0xc], esi
mov eax, dword [ebp - 0x218]
mov word [eax + esi*2], cx
jmp 0x10104115
push 0x10202940
lea ecx, [ebp - 0x218]
call fcn.10003740
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x250]
push 0xd
push eax
call fcn.100053d0
mov edi, dword [ebp - 0x24c]
lea ecx, [ebp - 0x228]
add esp, 0xc
push 0
push 0xffffffffffffffff
push 4
push 0
push ecx
mov ecx, dword [ebp - 0x22c]
push 0
push dword [eax]
push 0x10202940
push dword [edi + 0x14]
push dword [edi + 0x10]
call fcn.100cd930
mov edx, dword [ebp - 0x250]
mov esi, eax
add edx, 0xfffffff0
or ecx, 0xffffffff
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x1010417c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x218]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1010419a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push edi
lea ecx, [ebp - 0x278]
mov dword [ebp - 0x27c], esi
call fcn.10102660
mov ebx, dword [ebp - 0x22c]
mov ecx, dword [ebx + 0xdc]
cmp dword [ebx + 0xe0], ecx
je 0x101041e0
mov eax, dword [ebp - 0x27c]
mov dword [ecx], eax
lea eax, [ebp - 0x278]
push eax
add ecx, 4
call fcn.10102660
add dword [ebx + 0xdc], 0x1c
jmp 0x101041f3
lea eax, [ebp - 0x27c]
push eax
push ecx
lea ecx, [ebx + 0xd8]
call fcn.10102400
lea ecx, [ebp - 0x274]
call fcn.101029a0
mov edx, dword [ebp - 0x278]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1010421c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x230]
inc ebx
mov dword [ebp - 0x230], ebx
cmp ebx, dword [ebp - 0x254]
jb 0x10103ac0
lea ecx, [ebp - 0x228]
call fcn.1002a3c0
lea ecx, [ebp - 0x260]
call fcn.10102850
lea ecx, [ebp - 0x23c]
call fcn.10102850
lea ecx, [ebp - 0x248]
call fcn.10102850
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.101f99c6
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x228]
call fcn.1002a3c0
lea ecx, [ebp - 0x260]
call fcn.10102850
lea ecx, [ebp - 0x23c]
call fcn.10102850
lea ecx, [ebp - 0x248]
call fcn.10102850
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.101f99c6
mov esp, ebp
pop ebp
ret