Function at 0x40dd80
Capabilities:
Contain obfuscated stackstrings
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x438e83
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x80
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x1c], esi
call fcn.004117c0
lea edi, [esi + 0x18]
mov ecx, edi
mov dword [esp + 0x98], 0
call fcn.004110c0
mov byte [esp + 0x98], 1
mov dword [esi], 0x43aca0
mov dword [edi], 0x43ac9c
lea ebx, [esi + 0x428]
call sub.MFC70.DLL_Ordinal_982
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebx], eax
mov byte [esp + 0x98], 2
lea ebp, [esi + 0x42c]
call sub.MFC70.DLL_Ordinal_982
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp], eax
mov byte [esp + 0x98], 3
call sub.MFC70.DLL_Ordinal_982
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esi + 0x43c], eax
mov ecx, edi
mov byte [esp + 0x98], 4
call fcn.004110e0
mov ecx, dword [0x4694d0]
test ecx, ecx
jne 0x40de44
xor eax, eax
jmp 0x40de5b
mov eax, ecx
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40de50
sub eax, dword [esp + 0x10]
push eax
push ecx
mov ecx, ebx
call fcn.00401690
mov eax, 0x43adc8
lea ecx, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40de70
sub eax, ecx
push eax
push 0x43adc8
mov ecx, ebp
call fcn.00401690
xor ebp, ebp
push 3
mov ecx, edi
mov dword [esi + 0x430], 0x2bc
mov word [esi + 0x440], 0x258
mov byte [esi + 0x442], 3
mov dword [esi + 0x438], ebp
mov dword [esi + 0x434], ebp
call fcn.004113a0
mov al, 0x44
mov byte [esp + 0x33], al
mov byte [esp + 0x2c], al
lea eax, [esp + 0x20]
push eax
push 0x10
lea ecx, [esp + 0x38]
push ecx
lea ecx, [esp + 0x4c]
mov byte [esp + 0x3c], 0x21
mov byte [esp + 0x3d], 0x85
mov byte [esp + 0x3e], 0x8f
mov byte [esp + 0x40], 0x78
mov byte [esp + 0x41], 0xcd
mov byte [esp + 0x42], 0x68
mov byte [esp + 0x43], 0x91
mov byte [esp + 0x44], 0x2d
mov byte [esp + 0x45], 0xfe
mov byte [esp + 0x46], 0x8c
mov byte [esp + 0x47], 0x6c
mov byte [esp + 0x48], 0xd
mov byte [esp + 0x49], 0x80
mov byte [esp + 0x4a], 8
mov byte [esp + 0x4b], 0xde
mov byte [esp + 0x2c], 0x48
mov byte [esp + 0x2d], 0x3c
mov byte [esp + 0x2e], 0x3e
mov byte [esp + 0x2f], 0x2f
mov byte [esp + 0x30], 0x98
mov byte [esp + 0x31], 0xa8
mov byte [esp + 0x32], 0xab
mov byte [esp + 0x33], 0x39
mov byte [esp + 0x34], 0xd9
mov byte [esp + 0x35], 0xe1
mov byte [esp + 0x36], 0xe0
mov byte [esp + 0x37], 0x1d
mov byte [esp + 0x39], 0x3f
mov byte [esp + 0x3a], 0x54
mov byte [esp + 0x3b], 0xfd
mov dword [esp + 0x20], 0x21d0
call fcn.0040d530
mov edi, dword [sym.imp.HyLic3070.dll_public_virtual:_void___thiscall_CryptoPP::CFB_CipherTemplate_class_CryptoPP::AbstractPolicyHolder_class_CryptoPP::CFB_CipherAbstractPolicy__class_CryptoPP::CFB_ModePolicy__::ProcessData_unsigned_char___unsigned_char_const___unsigned_int_]
push 2
lea edx, [esp + 0x18]
push edx
lea eax, [esi + 0x420]
push eax
lea ecx, [esp + 0x4c]
mov byte [esp + 0xa4], 5
call edi
lea ecx, [esp + 0x40]
mov byte [esp + 0x98], 4
call fcn.0040d360
lea ecx, [esp + 0x20]
push ecx
push 0x10
lea edx, [esp + 0x38]
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x20], 0x52e7
call fcn.0040d530
push 2
lea eax, [esp + 0x18]
mov byte [esp + 0x9c], 6
push eax
lea ecx, [esi + 0x422]
push ecx
lea ecx, [esp + 0x4c]
call edi
lea ecx, [esp + 0x40]
mov byte [esp + 0x98], 4
call fcn.0040d360
mov ecx, esi
mov word [esi + 0x424], bp
call fcn.0040c6b0
call sub.MFC70.DLL_Ordinal_982
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
lea edi, [eax + 0x10]
mov dword [esp + 0x10], edi
mov eax, dword [edi - 4]
mov ecx, 1
sub ecx, eax
mov eax, dword [edi - 8]
sub eax, 0x104
or eax, ecx
mov bl, 7
mov byte [esp + 0x98], bl
jge 0x40e043
push 0x104
lea ecx, [esp + 0x14]
call fcn.00401470
mov edi, dword [esp + 0x10]
push edi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
cmp edi, ebp
jne 0x40e057
xor eax, eax
jmp 0x40e069
mov eax, edi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40e060
sub eax, edx
mov dword [edi - 0xc], eax
push 0x43a8ec
lea ecx, [esp + 0x14]
mov byte [eax + edi], 0
call fcn.00402f00
push str.UltraPro.ini
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.004020a0
add esp, 0xc
push eax
lea ecx, [esi + 0x43c]
mov byte [esp + 0x9c], 8
call fcn.00401f00
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x98], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40e0ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0x98], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40e0f4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x90]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x8c
ret