Function at 0x401e10
Capabilities:
Get common file path
Read file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1300
call fcn.00403dc0
push ebx
push ebp
push esi
push edi
xor edi, edi
push 0x74
lea eax, [esp + 0x9c]
push edi
push eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x20], edi
call sub.MSVCRT.dll_memset
call fcn.00401070
mov dword [esp + 0xa4], eax
call fcn.004010f0
lea esi, [esp + 0xb0]
mov dword [esp + 0xa8], eax
call fcn.004011a0
mov dword [esp + 0xac], eax
lea eax, [esp + 0xa4]
call fcn.004015e0
push 0x10
lea ecx, [esp + 0x74]
push edi
push ecx
mov dword [esp + 0x50], eax
call sub.MSVCRT.dll_memset
push 0x404d48
call sub.MSVCRT.dll_strlen
mov edx, 0x404d48
mov al, byte [eax + edx - 1]
dec edx
push 0x404d48
mov byte [str.MklLABTam], al
call sub.MSVCRT.dll_strlen
add esp, 0x20
mov ecx, str.MklLABTam
dec ecx
mov byte [eax + ecx], 0x4d
call dword [sym.imp.MSVCRT.dll___p___argc]
mov edi, dword [eax]
call dword [sym.imp.MSVCRT.dll___p___argv]
mov esi, dword [eax]
mov ebx, dword [sym.imp.MSVCRT.dll__stricmp]
lea esp, [esp]
mov ebp, 1
cmp edi, ebp
jle 0x401fdf
mov edx, dword [esi + 4]
movsx eax, byte [edx]
push eax
push 0x404d44
call dword [sym.imp.MSVCRT.dll_strchr]
add esp, 8
test eax, eax
je 0x401fdf
mov eax, dword [esi + 4]
mov cl, byte [eax]
cmp cl, byte [eax + 1]
je 0x401fdf
mov edx, eax
inc edx
push str.file
push edx
call ebx
add esp, 8
test eax, eax
jne 0x401f4b
cmp edi, 2
jle 0x401f42
mov eax, dword [esi + 8]
mov dword [esp + 0x18], eax
mov eax, 2
sub edi, eax
lea esi, [esi + eax*4]
jmp 0x401ee0
mov eax, ebp
sub edi, eax
lea esi, [esi + eax*4]
jmp 0x401ee0
mov ecx, dword [esi + 4]
inc ecx
push 0x404d38
push ecx
call ebx
add esp, 8
test eax, eax
jne 0x401f6b
dec edi
mov dword [esp + 0x10], ebp
add esi, 4
jmp 0x401ee0
mov edx, dword [esi + 4]
inc edx
push str.list
push edx
call ebx
add esp, 8
test eax, eax
jne 0x401f8b
dec edi
mov dword [esp + 0x34], ebp
add esi, 4
jmp 0x401ee0
mov eax, dword [esi + 4]
inc eax
push 0x404d2c
push eax
call ebx
add esp, 8
test eax, eax
jne 0x401fab
dec edi
mov dword [esp + 0x30], ebp
add esi, 4
jmp 0x401ee0
mov ecx, dword [esi + 4]
inc ecx
push 0x404d28
push ecx
call ebx
add esp, 8
test eax, eax
jne 0x401fdf
mov esi, dword [sym.imp.MSVCRT.dll_printf]
push str.xwpinfo___app____list____IR____file_____file___n
call esi
push str._tfiles:_.exe__.dll__.sys__.vxd_n
call esi
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x10]
xor edi, edi
cmp eax, edi
je 0x401ff0
push 0x404cd0
jmp 0x401ff5
push 0x404ccc
push str.xwpinfo.out
call dword [sym.imp.MSVCRT.dll_fopen]
mov esi, dword [esp + 0x20]
add esp, 8
cmp esi, edi
mov dword [0x406644], eax
je 0x40207c
push 0x4f0
push edi
push 0x406028
call sub.MSVCRT.dll_memset
mov dword [str.xwpdllid.dll], esi
mov dword [0x40602c], edi
mov al, byte [esi]
add esp, 0xc
cmp al, 0x40
jne 0x4020f7
push 0x404cbc
inc esi
push esi
call dword [sym.imp.MSVCRT.dll_fopen]
mov ebp, dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 8
cmp eax, edi
mov dword [esp + 0x14], eax
jne 0x402062
mov dword [str.xwpdllid.dll], edi
jmp 0x4020fd
mov eax, 0x406540
mov dword [str.xwpdllid.dll], eax
mov dword [str.xwpwsock.dll], eax
mov dword [0x406034], edi
jmp 0x4020fd
push 0x200
push 0x406a40
call dword [sym.imp.MSVCRT.dll__getcwd]
add esp, 8
test eax, eax
je 0x402098
call fcn.00401730
push edi
call dword [sym.imp.MSVCRT.dll_time]
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x24], eax
call dword [sym.imp.MSVCRT.dll_ctime]
mov ebp, dword [sym.imp.MSVCRT.dll_sprintf]
push eax
push 0x1328fcf
push str.start_xwpinfo__d__s
push 0x406a40
call ebp
mov eax, dword [0x406644]
add esp, 0x18
test eax, eax
je 0x4020eb
push 0x406a40
push 0x404ac0
push eax
call dword [sym.imp.MSVCRT.dll_fprintf]
mov eax, dword [0x406644]
add esp, 0xc
push eax
call dword [sym.imp.MSVCRT.dll_fflush]
add esp, 4
jmp 0x4020fd
mov ebp, dword [sym.imp.MSVCRT.dll_sprintf]
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x40210a
call fcn.00402e70
xor eax, eax
mov dword [esp + 0x10], eax
mov ecx, dword [eax*8 + 0x406028]
test ecx, ecx
je 0x402560
mov ebx, dword [esp + 0x14]
xor eax, eax
test ebx, ebx
mov byte [esp + 0x110], 0
mov ecx, 0x7f
lea edi, [esp + 0x111]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
je 0x4021a8
push 0x100
push 0
push 0x406540
mov dword [esp + 0x1c], 0
call sub.MSVCRT.dll_memset
push ebx
push 0xff
push 0x406540
call dword [sym.imp.MSVCRT.dll_fgets]
add esp, 0x18
cmp eax, 0x406540
jne 0x402564
push 0x406540
call sub.MSVCRT.dll_strlen
add esp, 4
test eax, eax
jle 0x40254c
cmp byte [eax + 0x40653f], 0xa
jne 0x4021a0
dec eax
mov byte [eax + 0x406540], 0
test eax, eax
jle 0x40254c
mov esi, dword [esp + 0x10]
mov eax, dword [esi*8 + 0x40602c]
dec eax
je 0x40220f
dec eax
jne 0x402237
call fcn.00402de0
test eax, eax
je 0x4021ed
mov eax, dword [0x406928]
test eax, eax
je 0x402237
push 0x1dc
lea ecx, [esp + 0x114]
push ecx
call eax
test eax, eax
je 0x402237
push str.Syswow64Drivers_
lea edx, [esp + 0x114]
push edx
jmp 0x40222f
push 0x1f0
lea eax, [esp + 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push str.drivers_
lea ecx, [esp + 0x114]
push ecx
jmp 0x40222f
push 0x1f0
lea edx, [esp + 0x114]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push 0x404c84
lea eax, [esp + 0x114]
push eax
call sub.MSVCRT.dll_strcat
add esp, 8
mov ecx, dword [esi*8 + 0x406028]
push ecx
lea edx, [esp + 0x114]
push edx
call sub.MSVCRT.dll_strcat
mov eax, dword [esp + 0x3c]
add esp, 8
test eax, eax
je 0x40229c
lea eax, [esp + 0x110]
push eax
push str.__s__:
push 0x406a40
call ebp
mov eax, dword [0x406644]
add esp, 0xc
test eax, eax
je 0x402290
push 0x406a40
push 0x404ac0
push eax
call dword [sym.imp.MSVCRT.dll_fprintf]
mov eax, dword [0x406644]
add esp, 0xc
push eax
call dword [sym.imp.MSVCRT.dll_fflush]
jmp 0x402549
lea ecx, [esp + 0x110]
push 0x404ad8
push ecx
call dword [sym.imp.MSVCRT.dll_fopen]
mov edi, eax
add esp, 8
test edi, edi
mov dword [esp + 0x3c], edi
je 0x40254c
lea edx, [esp + 0x74]
push edx
push edi
call dword [sym.imp.MSVCRT.dll__fileno]
add esp, 4
push eax
call dword [sym.imp.MSVCRT.dll__fstat]
add esp, 8
test eax, eax
jne 0x402542
mov esi, dword [sym.imp.MSVCRT.dll_strrchr]
lea eax, [esp + 0x110]
push 0x5c
push eax
call esi
add esp, 8
mov ebx, eax
xor eax, eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x28]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
push edx
lea eax, [esp + 0x118]
push eax
call dword [sym.imp.imagehlp.dll_MapFileAndCheckSumA]
test ebx, ebx
jne 0x40234f
lea ecx, [esp + 0x110]
push 0x2f
push ecx
call esi
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x40234f
lea edx, [esp + 0x110]
push 0x3a
push edx
call esi
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x40234f
mov ebx, 0x404c79
jmp 0x402350
inc ebx
mov esi, dword [esp + 0x30]
test esi, esi
jne 0x402374
lea eax, [esp + 0x110]
push eax
push str.__s__:
push 0x406a40
call ebp
add esp, 0xc
call fcn.00401730
lea ecx, [esp + 0xb10]
push ecx
lea eax, [esp + 0x114]
call fcn.00401760
add esp, 4
test eax, eax
je 0x402690
test esi, esi
je 0x4023dd
lea edx, [esp + 0x110]
push edx
push str.__48s__:
push 0x406a40
call ebp
mov eax, dword [esp + 0xbce]
add esp, 0xc
push eax
push str._tIR_date_10d
push 0x406a40
call sub.MSVCRT.dll_strlen
add eax, 0x406a40
add esp, 4
push eax
call ebp
add esp, 0xc
call fcn.00401730
jmp 0x402542
mov ecx, dword [esp + 0xbbe]
mov edx, dword [esp + 0xb26]
mov eax, dword [esp + 0xb2a]
push ecx
mov ecx, dword [esp + 0xbc6]
push edx
push eax
push ecx
push ebx
push str.___13s_tIR_date_10d__Rel_d__d__d
push 0x406a40
call ebp
add esp, 0x1c
call fcn.00401730
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x402493
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0xb14]
push 0x20a
push eax
mov dword [esp + 0x38], 1
call fcn.004012a0
lea ecx, [esp + 0xd26]
push 0x404c30
push ecx
call sub.MSVCRT.dll_strcmp
add esp, 0x14
test eax, eax
je 0x402469
push 0x5f6
lea edx, [esp + 0xd1e]
push 0
push edx
call sub.MSVCRT.dll_memset
add esp, 0xc
push 0x800
lea eax, [esp + 0xb14]
push eax
lea ecx, [esp + 0x318]
push ecx
call sub.MSVCRT.dll_memcpy
mov edx, dword [esp + 0xa0]
add esp, 0xc
mov dword [0x406640], edx
xor ebp, ebp
push edi
push 2
lea ecx, [esp + 0x30]
push 1
push ecx
mov dword [esp + 0x38], 0
call dword [sym.imp.MSVCRT.dll_fread]
movzx edx, word [esp + 0x38]
add ebp, edx
mov ecx, ebp
shr ecx, 0x10
add esp, 0x10
test ecx, ecx
je 0x4024c8
and ebp, 0xffff
add ebp, ecx
cmp eax, 2
je 0x402495
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.MSVCRT.dll_localtime]
mov esi, eax
mov ecx, 9
lea edi, [esp + 0x44]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
push ecx
mov ecx, dword [esp + 0x54]
push edx
mov edx, dword [esp + 0x5c]
push eax
mov eax, dword [esp + 0x64]
push ecx
mov ecx, dword [esp + 0x34]
inc edx
push edx
mov edx, dword [esp + 0x3c]
add eax, 0x76c
push eax
mov eax, dword [esp + 0xa4]
push ebp
push ecx
push edx
push eax
push ebx
push str.___13s_t_7d__CRC_6x__6x__4x____4d_02d_02d__02d:_02d:_02d
push 0x406a40
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x38
call fcn.00401730
mov ebp, dword [sym.imp.MSVCRT.dll_sprintf]
mov edi, dword [esp + 0x3c]
push edi
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 0x9e
mov dword [esp + 0x10], eax
jb 0x402110
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x402745
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x38]
mov ecx, esi
neg ecx
sbb ecx, ecx
xor eax, eax
lea edx, [esp + 0x64]
and ecx, edx
test edi, edi
setle al
push ecx
lea ecx, [esp + 0x9c]
lea edx, [esp + 0x51e]
dec eax
and eax, ecx
push eax
push edx
call fcn.00401a60
add esp, 0xc
test esi, esi
je 0x4026d6
mov eax, dword [esp + 0x31a]
push eax
lea ecx, [esp + 0x346]
push ecx
call sub.MSVCRT.dll_strlen
mov ecx, dword [esp + 0x346]
add esp, 4
lea edx, [esp + eax + 0x347]
push edx
movzx edx, byte [esp + 0x3d3]
lea eax, [esp + 0x34a]
push eax
movzx eax, byte [esp + 0x3d6]
push ecx
push edx
push eax
push str.176_id
push str.key_s__d__d__x_s__s__d
push 0x406a40
call ebp
mov eax, dword [0x406644]
add esp, 0x24
test eax, eax
je 0x402627
push 0x406a40
push 0x404ac0
push eax
call dword [sym.imp.MSVCRT.dll_fprintf]
mov eax, dword [0x406644]
add esp, 0xc
push eax
call dword [sym.imp.MSVCRT.dll_fflush]
push 0x406640
call dword [sym.imp.MSVCRT.dll_ctime]
mov ecx, dword [esp + 0x3de]
mov edx, dword [esp + 0x33e]
add esp, 8
push eax
mov eax, dword [esp + 0x322]
push ecx
push edx
push eax
lea ecx, [esp + 0x4d2]
push ecx
lea edx, [esp + 0x3ee]
push edx
lea eax, [esp + 0x4ca]
push eax
lea eax, [esp + 0x32c]
call fcn.00401db0
push eax
push 0x404bc8
push str.key_s__c_s__s__s__d__d__d__s
push 0x406a40
call ebp
add esp, 0x2c
jmp 0x4026dd
test esi, esi
je 0x402493
lea eax, [esp + 0x110]
push eax
push str.__48s__:
push 0x406a40
call ebp
add esp, 0xc
push str._tIR_date__________
push 0x406a40
call sub.MSVCRT.dll_strlen
add eax, 0x406a40
add esp, 4
push eax
call ebp
add esp, 8
call fcn.00401730
jmp 0x402542
mov byte [0x406a40], 0
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.MSVCRT.dll_ctime]
add esp, 4
push eax
push 0x800
push 0x20a
push edi
push 0x1328fcf
push str..end_xwpinfo__d__d__d__d__s
push 0x406a40
call sub.MSVCRT.dll_strlen
add eax, 0x406a40
add esp, 4
push eax
call ebp
mov eax, dword [0x406644]
add esp, 0x1c
test eax, eax
je 0x40273b
push 0x406a40
push 0x404ac0
push eax
call dword [sym.imp.MSVCRT.dll_fprintf]
mov eax, dword [0x406644]
add esp, 0xc
push eax
call dword [sym.imp.MSVCRT.dll_fflush]
add esp, 4
mov eax, dword [0x406644]
test eax, eax
je 0x402762
push eax
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
mov dword [0x406644], 0
test ebx, ebx
je 0x402770
push ebx
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
pop edi
xor eax, eax
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret