Function at 0x401620
Capabilities:
Get common file path
Link many functions at runtime
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4789d8
mov eax, dword fs:[0]
push eax
sub esp, 0xa5c
mov eax, dword [0x494014]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
jmp 0x401660
push 0x208
lea eax, [ebp - 0x258]
mov dword [ebp - 0xa64], 0x495870
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push 0x800
lea eax, [ebp - 0xa58]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0x18
mov dword [ebp - 0xa68], 0
lea eax, [ebp - 0xa68]
push eax
lea eax, [ebp - 0xa58]
push eax
push ecx
call fcn.004012d0
add esp, 0xc
cmp dword [ebp - 0xa68], 0
ja 0x4016cf
push str.SSOPlatform.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, eax
jmp 0x401789
lea ecx, [ebp - 0xa5c]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
lea ecx, [ebp - 0xa60]
mov dword [ebp - 4], 0
call dword [sym.imp.mfc140u.dll_Ordinal_296]
lea eax, [ebp - 0xa58]
mov byte [ebp - 4], 1
mov esi, dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__7]
push eax
lea eax, [ebp - 0xa5c]
push str._wsTXSSOBin_
push eax
call esi
lea eax, [ebp - 0xa58]
push eax
lea eax, [ebp - 0xa60]
push str._wsTXSSOBinSSOPlatform.dll
push eax
call esi
add esp, 0x18
lea eax, [ebp - 0x258]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea ecx, [ebp - 0xa5c]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
mov esi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push eax
call esi
lea ecx, [ebp - 0xa60]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, eax
lea eax, [ebp - 0x258]
push eax
call esi
lea ecx, [ebp - 0xa60]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0xa5c]
mov dword [ebp - 4], 0xffffffff
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
test edi, edi
je 0x401aeb
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.DllGetClassObject
push edi
call ebx
test eax, eax
jne 0x4017ad
mov eax, 0x800401f8
jmp 0x401aee
lea ecx, [ebp - 0xa64]
mov dword [ebp - 0xa64], 0
push ecx
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x20], 0xaab94c00
push ecx
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x1c], 0x408632b8
push ecx
mov dword [ebp - 0x18], 0x4aac599d
mov dword [ebp - 0x14], 0x58b9c741
mov dword [ebp - 0x50], 1
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xc0
mov dword [ebp - 0x44], 0x46000000
mov dword [ebp - 0x40], 0xd3492828
mov dword [ebp - 0x3c], 0x4fd44138
mov dword [ebp - 0x38], 0x99dbecb3
mov dword [ebp - 0x34], 0x86ae5e13
mov dword [ebp - 0x30], 0x76a1fc45
mov dword [ebp - 0x2c], 0x4e0170b3
mov dword [ebp - 0x28], 0x53bb6f9f
mov dword [ebp - 0x24], 0x70e9d8c
call eax
mov ecx, dword [ebp - 0xa64]
mov dword [ebp - 0xa68], eax
test ecx, ecx
je 0x40186f
mov eax, dword [ecx]
lea edx, [ebp - 0x30]
push 0x495870
push edx
push 0
mov eax, dword [eax + 0xc]
push ecx
call eax
mov dword [ebp - 0xa68], eax
mov eax, dword [ebp - 0xa64]
push eax
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
call eax
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push str.SSOLUIControl.dll
call esi
push str.SSOPlatform.dll
call esi
push str.SSOCommon.dll
mov edi, eax
call esi
mov esi, eax
push str._ConvertTXDataToTXSSOData_SSOConvert_Util__YAJPAUITXData__PAPAUITXSSOData___Z
push esi
mov dword [ebp - 0xa5c], esi
call ebx
push str._CreateTXData_Data_Util__YAHPAPAUITXData___Z
push esi
call ebx
push str._CreateTXData_SSOData_Util__YAHPAPAUITXSSOData___Z
push esi
call ebx
push str._CreateTXBuffer_Data_Util__YAHPAPAUITXBuffer___Z
push esi
mov dword [0x4958a4], eax
call ebx
push str._CreateTXBuffer_SSOData_Util__YAHPAPAUITXSSOBuffer___Z
push esi
call ebx
push str._CreateTXArray_Data_Util__YAHPAPAUITXArray___Z
push esi
mov dword [0x4958a0], eax
call ebx
push str.__0CTXStringA__QAE_PBDH_Z
push esi
call ebx
push str.__0CTXBSTR__QAE_PB_W_Z
push esi
call ebx
push str.__1CTXBSTR__QAE_XZ
push esi
call ebx
push str.__BCTXBSTR__QBEPA_WXZ
push esi
call ebx
push str._GetBSTR_CTXStringW__QBEPA_WXZ
push esi
call ebx
push str.DllCanUnloadNow
push edi
call ebx
mov edi, dword [0x495890]
xor edx, edx
mov ebx, dword [0x49588c]
mov esi, dword [0x495888]
mov ecx, dword [0x495894]
test esi, esi
je 0x401a01
test ecx, ecx
je 0x401930
test ebx, ebx
je 0x401930
test edi, edi
jne 0x401a35
inc edx
inc eax
cmp edx, 0x100000
jg 0x401a35
test ecx, ecx
jne 0x40197b
cmp byte [eax], 0x8b
jne 0x40197b
cmp byte [eax + 5], 0xd4
jne 0x40197b
cmp byte [eax + 6], 0x50
jne 0x40197b
cmp byte [eax + 9], 0xdc
jne 0x40197b
cmp byte [eax + 0xa], 0xe8
jne 0x401975
mov ecx, dword [eax + 0xb]
add eax, 0xa
add ecx, 5
add edx, 0xa
add ecx, eax
mov dword [0x495894], ecx
jmp 0x401918
mov ecx, dword [0x495894]
test ebx, ebx
jne 0x4019af
cmp byte [eax], 0x8d
jne 0x4019af
cmp byte [eax + 2], 0xe4
jne 0x4019af
cmp byte [eax + 6], 1
jne 0x4019af
cmp byte [eax + 8], 0xcb
jne 0x4019af
mov ebx, dword [eax + 0xa]
add eax, 9
add ebx, 5
add edx, 9
add ebx, eax
mov dword [0x49588c], ebx
jmp 0x401912
test edi, edi
jne 0x401918
cmp byte [eax], 0x8b
jne 0x401918
cmp byte [eax + 2], 0x48
jne 0x401918
cmp byte [eax + 3], 0x6a
jne 0x401918
cmp byte [eax + 4], 0
jne 0x401918
cmp byte [eax + 0xa], 0xf0
jne 0x401918
mov edi, dword [eax + 0xc]
add eax, 0xb
add edi, 5
add edx, 0xb
add edi, eax
mov dword [0x495890], edi
jmp 0x401912
mov cl, byte [eax - 1]
dec eax
dec edx
cmp cl, 0x55
je 0x401a35
cmp cl, 0x56
mov ecx, dword [0x495894]
jne 0x401918
cmp byte [eax + 1], 0xa3
jne 0x401918
mov esi, dword [eax + 2]
add esi, 8
mov dword [0x495888], esi
jmp 0x401912
push str._GetMemPoolStatus__YAXPAUMEM_POOL_STATUS___Z
push dword [ebp - 0xa5c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edx, eax
inc edx
mov ecx, edx
sub ecx, eax
cmp ecx, 0x10000
jg 0x401aa2
mov esi, dword [0x49589c]
mov ecx, 0xfffffffd
sub ecx, eax
test esi, esi
jne 0x401a83
cmp byte [edx], 0xff
jne 0x401a83
cmp byte [edx + 2], 8
jne 0x401a83
cmp byte [edx + 3], 0xe8
jne 0x401a83
cmp byte [edx + 0xa], 0x57
jne 0x401a83
cmp byte [edx + 0xb], 0x28
je 0x401a92
inc edx
lea eax, [ecx + 3]
add eax, edx
cmp eax, 0x10000
jle 0x401a62
jmp 0x401aa2
mov eax, dword [edx + 4]
add edx, 3
add eax, 5
add eax, edx
mov dword [0x49589c], eax
cmp dword [0x495888], 0
je 0x401ade
cmp dword [0x495894], 0
je 0x401ade
cmp dword [0x49588c], 0
je 0x401ade
cmp dword [0x495890], 0
je 0x401ade
jmp 0x401ad6
mov eax, dword [ebp - 0xa68]
jmp 0x401aee
push str.SSODadtaSDK_Error_n
call fcn.00403db0
add esp, 4
or eax, 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0041caaf
mov esp, ebp
pop ebp
ret