Function at 0x4771c0
Capabilities:
Get common file path

Disassembly:
test dword [0x87ed4c], 0xffffa000
jne 0x477200
test dword [0x87ed4c], 0xfffff000
jne 0x4776c0
test dword [0x87ed4c], 0xffffffff
jne 0x477ad0
call fcn.007663a0
jmp fcn.004771c0
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x674
mov edi, edx
mov eax, dword [0x84f814]
test eax, eax
je 0x4775c2
lea esi, [esp + 0x430]
push eax
push 0x799014
push esi
push 0xe6
call fcn.0047d0b0
add esp, 0x10
mov eax, esi
movsx edx, byte [esp + 0x430]
test edx, edx
je 0x47724f
inc eax
movsx edx, byte [eax]
test edx, edx
jne 0x477247
sub eax, esi
and eax, 0x3fffffff
je 0x477265
cmp byte [esp + eax + 0x42f], 0x5c
jne 0x477265
dec eax
jne 0x477258
mov byte [esp + eax + 0x430], 0
push esi
push str._setilqs_
push edi
push 0xe7
call fcn.0047d0b0
add esp, 0x10
mov ebx, edi
test edi, edi
je 0x4775bb
movsx eax, byte [edi]
test eax, eax
je 0x47729a
inc ebx
movsx eax, byte [ebx]
test eax, eax
jne 0x477292
sub ebx, edi
and ebx, 0x3fffffff
cmp dword [0x830384], 0
lea esi, [edi + ebx]
je 0x4772d7
push 5
call dword [0x8303c0]
pop ecx
mov edx, eax
test edx, edx
je 0x4772d9
push edx
mov dword [esp + 0x568], edx
call dword [0x8303c8]
mov edx, dword [esp + 0x568]
add esp, 4
jmp 0x4772d9
xor edx, edx
xor eax, eax
mov ecx, 0x10101010
movd xmm0, ecx
pshufd xmm1, xmm0, 0
mov ecx, 0xd
movd xmm0, ecx
movdqa xmmword [esp + 0x540], xmm1
mov ecx, 0xe
pinsrb xmm0, ecx, 1
mov ecx, 0xf
pinsrb xmm0, ecx, 2
mov ecx, 0x10
pinsrb xmm0, ecx, 3
mov dword [esp + 0x564], edx
mov ecx, 0x11
pinsrb xmm0, ecx, 4
mov ecx, 0x12
pinsrb xmm0, ecx, 5
mov ecx, 0x13
pinsrb xmm0, ecx, 6
mov dword [esp + 0x560], ebx
mov ecx, 0x14
pinsrb xmm0, ecx, 7
mov ecx, 0x15
pinsrb xmm0, ecx, 8
mov ecx, 0x16
pinsrb xmm0, ecx, 9
mov dword [esp + 0x53c], edi
mov ecx, 0x17
pinsrb xmm0, ecx, 0xa
mov ecx, 0x18
pinsrb xmm0, ecx, 0xb
mov ecx, 0x19
pinsrb xmm0, ecx, 0xc
mov ecx, 0x1a
pinsrb xmm0, ecx, 0xd
mov ecx, 0x1b
pinsrb xmm0, ecx, 0xe
mov ecx, 0x1c
pinsrb xmm0, ecx, 0xf
movdqa xmmword [esp + 0x550], xmm0
mov ebx, eax
movzx edx, byte [0x84f400]
test edx, edx
jne 0x4774dd
xor edx, edx
mov word [0x84f401], dx
call fcn.0058d940
test eax, eax
jne 0x477426
cmp dword [0x830384], 0
je 0x47741e
push 2
call dword [0x8303c0]
pop ecx
test eax, eax
je 0x47741e
push eax
mov dword [esp + 0x53c], eax
call dword [0x8303c8]
mov eax, dword [esp + 0x53c]
push eax
mov edi, dword [0x84f7f0]
call dword [0x8303d0]
add esp, 8
jmp 0x477428
mov edi, dword [0x84f7f0]
jmp 0x477428
xor edi, edi
lea edx, [esp + 0x568]
push edx
push pe_nt_image_headers32
push edi
call dword [edi + 0x38]
add esp, 0xc
xor edx, edx
mov byte [edx + 0x84f403], dl
inc edx
cmp edx, 0xd
jb 0x47743e
movdqa xmm0, xmmword [esp + 0x550]
movdqa xmm1, xmmword [esp + 0x540]
mov edx, 0xd
movdqa xmmword [edx + 0x84f403], xmm0
paddb xmm0, xmm1
add edx, 0x10
cmp edx, 0xfd
jb 0x477461
mov byte [0x84f500], 0xfd
xor edi, edi
mov byte [0x84f501], 0xfe
mov byte [0x84f502], 0xff
nop
movzx ecx, byte [0x84f402]
movzx edx, byte [edi + 0x84f403]
add ecx, edx
movzx edx, byte [esp + edi + 0x568]
add ecx, edx
movzx ecx, cl
mov byte [0x84f402], cl
movzx eax, byte [ecx + 0x84f403]
movzx edx, byte [edi + 0x84f403]
mov byte [ecx + 0x84f403], dl
mov byte [edi + 0x84f403], al
inc edi
cmp edi, 0x100
jb 0x477490
mov byte [0x84f400], 1
movzx eax, byte [0x84f401]
movzx edx, byte [0x84f402]
inc eax
mov byte [0x84f401], al
movzx edi, al
movzx eax, byte [edi + 0x84f403]
add edx, eax
movzx edx, dl
mov byte [0x84f402], dl
movzx ecx, byte [edx + 0x84f403]
mov byte [edi + 0x84f403], cl
movzx edi, byte [0x84f402]
mov byte [edi + 0x84f403], al
movzx ecx, byte [0x84f401]
movzx edi, byte [ecx + 0x84f403]
add edi, eax
and edi, 0xff
movzx edx, byte [edi + 0x84f403]
mov byte [ebx + esi], dl
inc ebx
cmp ebx, 0x14
jb 0x4773c0
mov edx, dword [esp + 0x564]
mov ebx, dword [esp + 0x560]
mov edi, dword [esp + 0x53c]
test edx, edx
je 0x47756b
push edx
call dword [0x8303d0]
pop ecx
xor ecx, ecx
mov dword [esp + 0x53c], edi
movzx edi, byte [esi]
mov edx, edi
shr edx, 1
mov eax, 0x84210843
mul edx
inc ecx
shr edx, 4
mov eax, edx
shl eax, 6
sub eax, edx
sub eax, edx
sub edi, eax
movzx eax, byte [edi + 0x78870c]
mov byte [esi], al
inc esi
inc ebx
cmp ecx, 0x14
jb 0x477574
mov edi, dword [esp + 0x53c]
mov byte [ebx + edi], 0
xor eax, eax
add esp, 0x674
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor ebx, ebx
jmp 0x4772a2
mov eax, dword [0x84f7fc]
test eax, eax
je 0x4775d2
cmp eax, 2
je 0x4775f6
jmp 0x47764a
mov dword [esp + 0x10], 0x114
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0x20], 2
jne 0x477640
mov dword [0x84f7fc], 2
lea ebx, [esp + 0x124]
push ebx
push 0xe6
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov eax, ebx
call fcn.00476540
mov ebx, eax
test ebx, ebx
je 0x4776a4
lea esi, [esp + 0x430]
push ebx
push 0x799014
push esi
push 0xe6
call fcn.0047d0b0
push ebx
call fcn.00743035
add esp, 0x14
jmp 0x477239
mov dword [0x84f7fc], 1
lea ebx, [esp + 0x32c]
push ebx
push 0xe6
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov eax, ebx
call fcn.004765a0
mov esi, eax
test esi, esi
je 0x4776a4
mov eax, esi
call fcn.00476540
mov ebx, eax
push esi
call fcn.00743035
pop ecx
test ebx, ebx
je 0x4776a4
lea esi, [esp + 0x430]
push ebx
push 0x799014
push esi
push 0xe6
call fcn.0047d0b0
push ebx
call fcn.00743035
add esp, 0x14
jmp 0x477239
mov eax, 7
add esp, 0x674
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x664
mov edi, edx
mov eax, dword [0x84f814]
test eax, eax
je 0x4779d2
lea esi, [esp + 0x430]
push eax
push 0x799014
push esi
push 0xe6
call fcn.0047d0b0
add esp, 0x10
mov eax, esi
movsx edx, byte [esp + 0x430]
test edx, edx
je 0x47770f
inc eax
movsx edx, byte [eax]
test edx, edx
jne 0x477707
sub eax, esi
and eax, 0x3fffffff
je 0x477725
cmp byte [esp + eax + 0x42f], 0x5c
jne 0x477725
dec eax
jne 0x477718
mov byte [esp + eax + 0x430], 0
push esi
push str._setilqs_
push edi
push 0xe7
call fcn.0047d0b0
add esp, 0x10
mov ebx, edi
test edi, edi
je 0x4779cb
movsx eax, byte [edi]
test eax, eax
je 0x47775a
inc ebx
movsx eax, byte [ebx]
test eax, eax
jne 0x477752
sub ebx, edi
and ebx, 0x3fffffff
cmp dword [0x830384], 0
lea esi, [edi + ebx]
je 0x477795
push 5
call dword [0x8303c0]
pop ecx
test eax, eax
je 0x477797
push eax
mov dword [esp + 0x558], eax
call dword [0x8303c8]
mov eax, dword [esp + 0x558]
add esp, 4
jmp 0x477797
xor eax, eax
xor edx, edx
mov ecx, 0x10101010
movd xmm0, ecx
pshufd xmm0, xmm0, 0
mov dword [esp + 0x554], eax
mov dword [esp + 0x550], ebx
mov ebx, edx
movdqa xmmword [esp + 0x540], xmm0
mov dword [esp + 0x53c], edi
movzx eax, byte [0x84f400]
test eax, eax
jne 0x4778ed
xor eax, eax
mov word [0x84f401], ax
call fcn.0058d940
test eax, eax
jne 0x47782c
cmp dword [0x830384], 0
je 0x477824
push 2
call dword [0x8303c0]
pop ecx
test eax, eax
je 0x477824
push eax
mov dword [esp + 0x53c], eax
call dword [0x8303c8]
mov eax, dword [esp + 0x53c]
push eax
mov edi, dword [0x84f7f0]
call dword [0x8303d0]
add esp, 8
jmp 0x47782e
mov edi, dword [0x84f7f0]
jmp 0x47782e
xor edi, edi
lea eax, [esp + 0x558]
push eax
push pe_nt_image_headers32
push edi
call dword [edi + 0x38]
add esp, 0xc
xor eax, eax
mov byte [eax + 0x84f403], al
inc eax
cmp eax, 0xd
jb 0x477844
movdqa xmm0, xmmword [0x78c7c0]
mov eax, 0xd
movdqa xmm1, xmmword [esp + 0x540]
movdqa xmmword [eax + 0x84f403], xmm0
paddb xmm0, xmm1
add eax, 0x10
cmp eax, 0xfd
jb 0x477866
mov byte [0x84f500], 0xfd
xor edi, edi
mov byte [0x84f501], 0xfe
mov byte [0x84f502], 0xff
nop dword [eax + eax]
nop dword [eax + eax]
movzx ecx, byte [0x84f402]
movzx eax, byte [edi + 0x84f403]
add ecx, eax
movzx eax, byte [esp + edi + 0x558]
add ecx, eax
movzx ecx, cl
mov byte [0x84f402], cl
movzx eax, byte [ecx + 0x84f403]
movzx edx, byte [edi + 0x84f403]
mov byte [ecx + 0x84f403], dl
mov byte [edi + 0x84f403], al
inc edi
cmp edi, 0x100
jb 0x4778a0
mov byte [0x84f400], 1
movzx eax, byte [0x84f401]
movzx edx, byte [0x84f402]
inc eax
mov byte [0x84f401], al
movzx edi, al
movzx eax, byte [edi + 0x84f403]
add edx, eax
movzx edx, dl
mov byte [0x84f402], dl
movzx ecx, byte [edx + 0x84f403]
mov byte [edi + 0x84f403], cl
movzx edi, byte [0x84f402]
mov byte [edi + 0x84f403], al
movzx ecx, byte [0x84f401]
movzx edi, byte [ecx + 0x84f403]
add edi, eax
and edi, 0xff
movzx eax, byte [edi + 0x84f403]
mov byte [ebx + esi], al
inc ebx
cmp ebx, 0x14
jb 0x4777c7
mov eax, dword [esp + 0x554]
mov ebx, dword [esp + 0x550]
mov edi, dword [esp + 0x53c]
test eax, eax
je 0x47797b
push eax
call dword [0x8303d0]
pop ecx
xor ecx, ecx
mov dword [esp + 0x53c], edi
movzx edi, byte [esi]
mov edx, edi
shr edx, 1
mov eax, 0x84210843
mul edx
inc ecx
shr edx, 4
mov eax, edx
shl eax, 6
sub eax, edx
sub eax, edx
sub edi, eax
movzx eax, byte [edi + 0x78874c]
mov byte [esi], al
inc esi
inc ebx
cmp ecx, 0x14
jb 0x477984
mov edi, dword [esp + 0x53c]
mov byte [ebx + edi], 0
xor eax, eax
add esp, 0x664
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor ebx, ebx
jmp 0x477762
mov eax, dword [0x84f7fc]
test eax, eax
je 0x4779e2
cmp eax, 2
je 0x477a06
jmp 0x477a5a
mov dword [esp + 0x10], 0x114
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0x20], 2
jne 0x477a50
mov dword [0x84f7fc], 2
lea ebx, [esp + 0x124]
push ebx
push 0xe6
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov eax, ebx
call fcn.00476540
mov ebx, eax
test ebx, ebx
je 0x477ab4
lea esi, [esp + 0x430]
push ebx
push 0x799014
push esi
push 0xe6
call fcn.0047d0b0
push ebx
call fcn.00743035
add esp, 0x14
jmp 0x4776f9
mov dword [0x84f7fc], 1
lea ebx, [esp + 0x32c]
push ebx
push 0xe6
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov eax, ebx
call fcn.004765a0
mov esi, eax
test esi, esi
je 0x477ab4
mov eax, esi
call fcn.00476540
mov ebx, eax
push esi
call fcn.00743035
pop ecx
test ebx, ebx
je 0x477ab4
lea esi, [esp + 0x430]
push ebx
push 0x799014
push esi
push 0xe6
call fcn.0047d0b0
push ebx
call fcn.00743035
add esp, 0x14
jmp 0x4776f9
mov eax, 7
add esp, 0x664
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x654
mov esi, edx
mov eax, dword [0x84f814]
test eax, eax
je 0x477da9
lea edi, [esp + 0x430]
push eax
push 0x799014
push edi
push 0xe6
call fcn.0047d0b0
add esp, 0x10
mov eax, edi
movsx edx, byte [esp + 0x430]
test edx, edx
je 0x477b1f
inc eax
movsx edx, byte [eax]
test edx, edx
jne 0x477b17
sub eax, edi
and eax, 0x3fffffff
je 0x477b35
cmp byte [esp + eax + 0x42f], 0x5c
jne 0x477b35
dec eax
jne 0x477b28
mov byte [esp + eax + 0x430], 0
push edi
push str._setilqs_
push esi
push 0xe7
call fcn.0047d0b0
add esp, 0x10
mov edi, esi
test esi, esi
je 0x477da2
movsx eax, byte [esi]
test eax, eax
je 0x477b6a
inc edi
movsx eax, byte [edi]
test eax, eax
jne 0x477b62
sub edi, esi
and edi, 0x3fffffff
lea ebx, [esi + edi]
mov dword [esp + 0x538], ebx
cmp dword [0x830384], 0
je 0x477bae
push 5
call dword [0x8303c0]
pop ecx
mov edx, eax
test edx, edx
je 0x477bb2
push edx
mov dword [esp + 0x54c], edx
call dword [0x8303c8]
mov edx, dword [esp + 0x54c]
add esp, 4
jmp 0x477bb2
xor eax, eax
xor edx, edx
mov eax, 0x13
mov dword [esp + 0x548], edx
mov dword [esp + 0x544], ebx
mov dword [esp + 0x540], edi
mov dword [esp + 0x53c], esi
mov ebx, eax
mov esi, dword [esp + 0x538]
movzx edx, byte [0x84f400]
test edx, edx
jne 0x477cbd
xor edx, edx
mov word [0x84f401], dx
call fcn.0058d940
test eax, eax
jne 0x477c42
cmp dword [0x830384], 0
je 0x477c3a
push 2
call dword [0x8303c0]
pop ecx
test eax, eax
je 0x477c3a
push eax
mov dword [esp + 0x53c], eax
call dword [0x8303c8]
mov eax, dword [esp + 0x53c]
mov edi, dword [0x84f7f0]
push eax
call dword [0x8303d0]
add esp, 8
jmp 0x477c44
mov edi, dword [0x84f7f0]
jmp 0x477c44
xor edi, edi
lea edx, [esp + 0x54c]
push edx
push pe_nt_image_headers32
push edi
call dword [edi + 0x38]
add esp, 0xc
xor edx, edx
mov byte [edx + 0x84f403], dl
inc edx
cmp edx, 0x100
jl 0x477c5a
xor edi, edi
nop
lea esi, [esi]
movzx ecx, byte [0x84f402]
movzx edx, byte [edi + 0x84f403]
add ecx, edx
movzx edx, byte [esp + edi + 0x54c]
add ecx, edx
movzx ecx, cl
mov byte [0x84f402], cl
movzx eax, byte [ecx + 0x84f403]
movzx edx, byte [edi + 0x84f403]
mov byte [ecx + 0x84f403], dl
mov byte [edi + 0x84f403], al
inc edi
cmp edi, 0x100
jl 0x477c70
mov byte [0x84f400], 1
movzx eax, byte [0x84f401]
inc eax
mov byte [0x84f401], al
movzx edi, al
movzx eax, byte [edi + 0x84f403]
movzx edx, byte [0x84f402]
add edx, eax
movzx edx, dl
mov byte [0x84f402], dl
movzx ecx, byte [edx + 0x84f403]
mov byte [edi + 0x84f403], cl
movzx edi, byte [0x84f402]
mov byte [edi + 0x84f403], al
movzx ecx, byte [0x84f401]
movzx edi, byte [ecx + 0x84f403]
add edi, eax
and edi, 0xff
movzx edx, byte [edi + 0x84f403]
mov byte [esi], dl
inc esi
dec ebx
cmp ebx, 0xffffffff
jne 0x477bdc
mov edx, dword [esp + 0x548]
mov ebx, dword [esp + 0x544]
mov edi, dword [esp + 0x540]
mov esi, dword [esp + 0x53c]
test edx, edx
je 0x477d52
push edx
call dword [0x8303d0]
pop ecx
xor ecx, ecx
mov dword [esp + 0x53c], esi
movzx esi, byte [ebx]
mov edx, esi
shr edx, 1
mov eax, 0x84210843
mul edx
shr edx, 4
mov eax, edx
shl eax, 6
sub eax, edx
sub eax, edx
sub esi, eax
movzx eax, byte [esi + str.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
mov byte [ebx], al
inc ecx
inc ebx
inc edi
cmp ecx, 0x14
jb 0x477d5b
mov esi, dword [esp + 0x53c]
mov byte [edi + esi], 0
xor eax, eax
add esp, 0x654
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor edi, edi
jmp 0x477b72
mov eax, dword [0x84f7fc]
test eax, eax
je 0x477db9
cmp eax, 2
je 0x477ddd
jmp 0x477e31
mov dword [esp + 0x10], 0x114
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0x20], 2
jne 0x477e27
mov dword [0x84f7fc], 2
lea ebx, [esp + 0x124]
push ebx
push 0xe6
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov eax, ebx
call fcn.00476540
mov ebx, eax
test ebx, ebx
je 0x477e8b
lea edi, [esp + 0x430]
push ebx
push 0x799014
push edi
push 0xe6
call fcn.0047d0b0
push ebx
call fcn.00743035
add esp, 0x14
jmp 0x477b09
mov dword [0x84f7fc], 1
lea ebx, [esp + 0x32c]
push ebx
push 0xe6
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov eax, ebx
call fcn.004765a0
mov edi, eax
test edi, edi
je 0x477e8b
mov eax, edi
call fcn.00476540
mov ebx, eax
push edi
call fcn.00743035
pop ecx
test ebx, ebx
je 0x477e8b
lea edi, [esp + 0x430]
push ebx
push 0x799014
push edi
push 0xe6
call fcn.0047d0b0
push ebx
call fcn.00743035
add esp, 0x14
jmp 0x477b09
mov eax, 7
add esp, 0x654
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret