Function at 0x2f396c7
Capabilities:
Get common file path

Disassembly:
push ebx
xor eax, eax
push esi
push edi
lea ebx, [ecx + 8]
mov dword [ecx + 4], eax
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], eax
push ebp
mov esi, ecx
mov dword [ebx], eax
lea ebp, [esi + 0xc]
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov ecx, dword [esp + 0x14]
mov dword [ebp], eax
mov byte [esi + 0x21], al
mov byte [esi + 0x20], al
cmp ecx, eax
je 0x2f397d8
push ecx
call sub.HWDLL.dll_Ordinal_23
mov edi, eax
mov dword [esi], eax
call dword [sym.imp.MSVCRT.dll___p___mb_cur_max]
cmp dword [eax], 1
jle 0x2f39721
movsx eax, byte [edi]
push 8
push eax
call dword [sym.imp.MSVCRT.dll__isctype]
add esp, 8
jmp 0x2f39735
call dword [sym.imp.MSVCRT.dll___p__pctype]
mov ecx, dword [eax]
xor eax, eax
movsx edx, byte [edi]
mov ax, word [ecx + edx*2]
and eax, 8
test eax, eax
je 0x2f39748
mov eax, dword [0x2f59bf4]
inc edi
push eax
push edi
call sub.HWDLL.dll_Ordinal_3
mov edi, eax
mov eax, dword [0x2f59bf4]
push eax
push 0x3b
push edi
call sub.HWDLL.dll_Ordinal_8
mov dword [ebp], eax
test eax, eax
je 0x2f39773
mov byte [eax], 0
mov eax, dword [0x2f59bf4]
push eax
mov eax, dword [ebp]
inc eax
push eax
call sub.HWDLL.dll_Ordinal_3
mov dword [ebp], eax
movsx eax, byte [edi]
cmp eax, 0x22
je 0x2f39787
cmp eax, 0x3c
je 0x2f3978b
cmp eax, 0x60
je 0x2f3978f
jmp 0x2f397aa
mov al, 0x22
jmp 0x2f39791
mov al, 0x3e
jmp 0x2f39791
mov al, 0x27
push dword [0x2f59bf4]
push eax
inc edi
push edi
call sub.HWDLL.dll_Ordinal_8
test eax, eax
je 0x2f39911
mov byte [eax], 0
push edi
call fcn.02f3abeb
cmp dword [esp + 0x18], 0
jne 0x2f397f9
mov eax, dword [0x2f59bf4]
push eax
push 0x5c
push edi
call sub.HWDLL.dll_Ordinal_10
mov dword [ebx], eax
test eax, eax
je 0x2f397d2
mov byte [eax], 0
inc dword [ebx]
jmp 0x2f397f9
mov dword [ebx], edi
xor edi, edi
jmp 0x2f397f9
push 0x2f2507c
mov ebp, 0x104
push 0xf2
push ebp
call sub.HWDLL.dll_Ordinal_20
mov edi, eax
push eax
push ebp
mov dword [esi], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
test edi, edi
je 0x2f3992b
mov al, byte [edi]
cmp al, 0x5c
jne 0x2f3984f
cmp byte [edi + 1], 0x5c
jne 0x2f3984f
mov dword [esi + 0x1c], 2
mov dword [esi + 0x10], edi
add edi, 2
mov eax, dword [0x2f59bf4]
push eax
push 0x5c
push edi
call sub.HWDLL.dll_Ordinal_8
test eax, eax
je 0x2f39911
push dword [0x2f59bf4]
push 0x5c
inc eax
push eax
call sub.HWDLL.dll_Ordinal_8
mov edi, eax
test edi, edi
je 0x2f39911
mov byte [edi], 0
inc edi
jmp 0x2f39884
cmp byte [edi + 1], 0x3a
jne 0x2f39865
add edi, 2
mov byte [esi + 0x20], al
lea eax, [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_CharLowerA]
cmp byte [edi], 0x5c
jne 0x2f39874
mov dword [esi + 0x1c], 1
inc edi
jmp 0x2f39884
mov eax, dword [ebx]
sub eax, edi
cmp eax, 1
jne 0x2f39884
mov dword [esi + 0x1c], 1
xor ebx, ebx
cmp byte [edi], bl
je 0x2f3992b
xor ebp, ebp
cmp byte [edi], 0x2e
jne 0x2f398b3
cmp byte [edi + 1], 0x2e
jne 0x2f398f2
mov eax, dword [esi + 0x18]
test eax, eax
je 0x2f398a8
dec eax
mov dword [esi + 0x18], eax
jmp 0x2f398f2
cmp dword [esi + 0x1c], 1
je 0x2f39911
inc dword [esi + 0x14]
jmp 0x2f398f2
cmp dword [esi + 0x18], ebx
jne 0x2f398e6
add ebp, 0x40
add ebx, 0x10
mov eax, dword [esi + 4]
push 0x2f2507c
test eax, eax
je 0x2f398d8
push 0x12d
push ebp
push eax
call sub.HWDLL.dll_Ordinal_21
jmp 0x2f398e3
push 0x12e
push ebp
call sub.HWDLL.dll_Ordinal_20
mov dword [esi + 4], eax
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 4]
mov dword [ecx + eax*4], edi
inc dword [esi + 0x18]
mov eax, dword [0x2f59bf4]
push eax
push 0x5c
push edi
call sub.HWDLL.dll_Ordinal_8
mov edi, eax
test edi, edi
je 0x2f3992b
mov byte [edi], 0
inc edi
cmp byte [edi], 0
jne 0x2f39890
jmp 0x2f3992b
mov eax, dword [esi]
xor edi, edi
test eax, eax
je 0x2f3992b
push 0x2f2507c
push 0x13e
push eax
call sub.HWDLL.dll_Ordinal_17
mov dword [esi], edi
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
ret 8