Function at 0x410ac0
Capabilities:
Get common file path
Set current directory

Disassembly:
sub esp, 0x42c
mov eax, dword [0x42f560]
xor eax, esp
mov dword [esp + 0x424], eax
push ebx
push ebp
mov ebp, dword [esp + 0x438]
cmp dword [ebp + 0x358], 0
push esi
mov esi, dword [ebp + 0x67c]
push edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], 1
jne 0x410b20
cmp dword [esi + 8], 0
je 0x410b13
mov edi, str.Break_1
mov esi, str.K7IS_Parser_Perform_CustomActions
call fcn.00412cb0
mov dword [esp + 0x10], 0
jmp 0x410eee
mov edi, dword [esp + 0x444]
test edi, edi
jne 0x410b4d
mov ebx, ebp
call fcn.00410670
mov dword [esp + 0x10], eax
test eax, eax
jne 0x410b4d
cmp dword [esi + 8], eax
je 0x410eee
mov edi, str.Break_2
jmp 0x410ee4
lea eax, [esp + 0x30]
push eax
xor ebx, ebx
push ebx
push ebx
push 0x24
push ebx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jge 0x410b6f
cmp dword [esi + 8], ebx
je 0x410b13
mov edi, str.Break_3
jmp 0x410b09
lea eax, [esp + 0x30]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
cmp cx, bx
jne 0x410b76
mov ecx, dword [str.Temp]
mov edx, dword [0x42bbd8]
mov dword [eax], ecx
mov ecx, dword [0x42bbdc]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
cmp edi, ebx
jne 0x410bb8
mov edx, dword [esi + 0x1044]
mov dword [esi + 0x103c], ebx
mov dword [esi + 0x1038], ebx
mov dword [esi + 0x1040], edx
mov dword [esp + 0x20], ebx
cmp dword [ebp + 0x350], ebx
jbe 0x410e7e
mov dword [esp + 0x1c], ebx
lea esp, [esp]
mov ebx, dword [ebp + 0x358]
add ebx, dword [esp + 0x1c]
xor edx, edx
movzx eax, word [ebx]
xor edi, edi
xor ecx, ecx
cmp di, ax
je 0x410c1b
cmp ax, 0x2c
je 0x410c13
cmp ax, 0x30
jb 0x410c18
cmp ax, 0x39
ja 0x410c18
movzx eax, ax
lea ecx, [ecx + ecx*4]
add ebx, 2
lea ecx, [eax + ecx*2 - 0x30]
movzx eax, word [ebx]
xor edi, edi
cmp di, ax
jne 0x410be8
jmp 0x410c1b
add ebx, 2
jmp 0x410c1b
or ecx, 0xffffffff
mov eax, edx
sub eax, 0
je 0x410c38
sub eax, 1
je 0x410c32
sub eax, 1
jne 0x410c3c
mov dword [esp + 0x24], ecx
jmp 0x410c3c
mov dword [esp + 0x28], ecx
jmp 0x410c3c
mov dword [esp + 0x2c], ecx
inc edx
cmp edx, 3
jb 0x410bdc
mov eax, dword [esp + 0x2c]
cmp eax, 0xffffffff
je 0x410eaa
mov ecx, dword [esp + 0x28]
cmp ecx, 0xffffffff
je 0x410eaa
cmp dword [esp + 0x24], 0xffffffff
je 0x410eaa
cmp ecx, dword [ebp + 0x108]
jae 0x410e32
cmp eax, dword [esp + 0x444]
jne 0x410e13
mov eax, dword [esi + 0x1040]
test eax, eax
jbe 0x410c96
dec eax
mov dword [esi + 0x1040], eax
jmp 0x410e13
mov edx, dword [ebp + 0x368]
mov eax, dword [edx + ecx*8 + 8]
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x238]
push str._s_s
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [esp + 0x230]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebp, eax
test ebp, ebp
je 0x410e55
mov esi, dword [esp + 0x14]
inc dword [esi + 0x1044]
push 0x80
lea ecx, [esp + 0x134]
push ebx
push ecx
mov dword [esi + 0x1040], 0
call fcn.004187e4
add esp, 0xc
cmp dword [esi + 8], 0
je 0x410d14
mov edi, str.BEGIN_::_K7IS_Parser_Perform_CustomActions
mov esi, ebx
call fcn.00412cb0
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
sub eax, 0
je 0x410d83
sub eax, 1
je 0x410d50
sub eax, 1
jne 0x410dd2
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x67c]
mov ecx, dword [esi + 0x1034]
push ebx
push ebp
push eax
call ecx
add esp, 0xc
test eax, eax
jne 0x410dd2
jmp 0x410dca
lea edx, [esp + 0x130]
push edx
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x410d6f
cmp dword [esi + 8], eax
je 0x410dca
mov edi, str.Break_9
jmp 0x410dbc
push 0
call eax
test eax, eax
jne 0x410dd2
cmp dword [esi + 8], eax
je 0x410dca
mov edi, str.Break_10
jmp 0x410dbc
lea eax, [esp + 0x130]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x410da2
cmp dword [esi + 8], eax
je 0x410dca
mov edi, str.Break_7
jmp 0x410dbc
push 0
push 0
push 0
push 0
push 0
call eax
test eax, eax
jne 0x410dd2
cmp dword [esi + 8], eax
je 0x410dca
mov edi, str.Break_8
mov esi, str.K7IS_Parser_Perform_CustomActions
call fcn.00412cb0
mov esi, dword [esp + 0x14]
mov dword [esp + 0x10], 0
cmp dword [esi + 8], 0
je 0x410de8
mov edi, str.END_::_K7IS_Parser_Perform_CustomActions
mov esi, ebx
call fcn.00412cb0
mov esi, dword [esp + 0x14]
mov ecx, dword [esi + 0x1040]
add dword [esi + 0x1044], ecx
push ebp
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esi + 0x103c], 1
je 0x410e76
cmp dword [esp + 0x10], 0
je 0x410e76
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
add dword [esp + 0x1c], 0x100
inc eax
mov dword [esp + 0x20], eax
cmp eax, dword [ebp + 0x350]
jb 0x410bd0
jmp 0x410e7e
cmp dword [esi + 8], 0
je 0x410e4b
mov edi, str.Break_5
mov esi, str.K7IS_Parser_Perform_CustomActions
call fcn.00412cb0
mov esi, dword [esp + 0x14]
mov dword [esp + 0x10], 0
jmp 0x410e7e
mov edx, dword [esp + 0x14]
cmp dword [edx + 8], 0
je 0x410e6e
mov edi, str.Break_6
mov esi, str.K7IS_Parser_Perform_CustomActions
call fcn.00412cb0
mov dword [esp + 0x10], 0
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x444], 3
jne 0x410eee
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
jne 0x410ec9
cmp dword [esi + 8], eax
je 0x410b13
mov edi, str.Break_11
jmp 0x410b09
cmp dword [esi + 8], 0
je 0x410e4b
mov edi, str.Break_4
mov esi, str.K7IS_Parser_Perform_CustomActions
call fcn.00412cb0
mov dword [esp + 0x10], 0
jmp 0x410e7a
push ebp
call fcn.00410a50
add esp, 4
mov dword [esp + 0x10], eax
test eax, eax
jne 0x410eee
cmp dword [esi + 8], eax
je 0x410eee
mov edi, str.Break_12
mov esi, str.K7IS_Parser_Perform_CustomActions
call fcn.00412cb0
mov ecx, dword [esp + 0x434]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00416a72
add esp, 0x42c
ret