Function at 0x4111f0
Capabilities:
Get common file path
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x470b38]
mov ecx, dword [0x470b3c]
mov edx, dword [0x470b40]
push ebx
push esi
sub esi, esi
push edi
mov dword [ebp - 0x2c], eax
mov al, byte [0x470b44]
mov dword [ebp - 0x28], ecx
mov ecx, dword [0x470b28]
mov dword [ebp - 0x24], edx
mov edx, dword [0x470b2c]
mov byte [ebp - 0x20], al
mov eax, dword [0x470b30]
mov dword [ebp - 0x3c], ecx
mov cx, word [0x470b34]
mov dword [ebp - 0x38], edx
mov dl, byte [0x470b36]
push esi
push esi
sub edi, edi
mov dword [ebp - 8], esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], esi
mov dword [ebp - 4], esi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x34], eax
mov word [ebp - 0x30], cx
mov byte [ebp - 0x2e], dl
mov dword [ebp - 0x1c], 0x40
call dword [sym.imp.user32.dll_GetClientRect]
push 0xffff
push esi
call dword [sym.imp.kernel32.dll_VirtualLock]
push esi
push esi
call sub.user32.dll_ImpersonateDdeClientWindow
mov ebx, dword [sym.imp.kernel32.dll_GetLastError]
mov byte [ebp - 0x3c], 0x56
call ebx
cmp ax, 0x578
mov byte [ebp - 0x3a], 0x72
jne 0x4112d0
lea eax, [ebp - 0x2c]
push eax
mov byte [ebp - 0x30], 0
mov dword [ebp - 4], 0xe0d
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
lea ecx, [ebp - 0x3c]
push eax
pop esi
push ecx
push esi
mov dword [ebp - 0x10], 0x3a
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0xc], 0x7a160df2
call ebx
mov edi, 0x13de57
jmp 0x4112ef
push 0
push 0
mov byte [0x42d9b8], 0
mov byte [0x417150], 0
call dword [sym.imp.kernel32.dll_TlsSetValue]
mov byte [0x473030], 0
push 0
push 2
push 0xffff
push 0
call dword [sym.imp.kernel32.dll_VirtualProtect]
push dword [ebp - 0x1c]
push 0x1000
mov ebx, dword [ebp - 4]
add ebx, 0x19
add ebx, 0x2d
push ebx
pop ecx
push ecx
pushfd
sub eax, eax
popfd
nop
push eax
mov ecx, dword [ebp - 0x18]
call ecx
push eax
pop edx
mov dword [ebp - 8], edx
mov ebx, dword [ebp - 8]
add edi, 0xfff251f5
or ebx, ebx
jne 0x41133b
push esi
push 8
push ebx
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
add ebx, edx
mov dword [ebx], eax
push dword [sym.imp.kernel32.dll_GetModuleHandleA]
pop edx
mov dword [ebp - 0x14], edx
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov eax, dword [sym.imp.kernel32.dll_GetProcAddress]
add ecx, edx
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 8]
push esi
mov dword [ebp - 0x1c], eax
mov dword [ebx + 4], ecx
call dword [sym.imp.kernel32.dll_FlushFileBuffers]
or edi, edi
jbe 0x41138b
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
push ebx
push edx
add edi, 0x410000
push edi
push eax
call fcn.00411170
add esp, 0x10
push esi
push 0
call dword [sym.imp.kernel32.dll_GetSystemDirectoryA]
mov eax, dword [ebp - 0x10]
or eax, eax
je 0x4113b5
mov ecx, dword [ebp - 0x1c]
push ecx
push dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
push edx
pop eax
call esi
pushfd
xor eax, eax
inc eax
popfd
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 4
push esi
push 0
push 0xa
push 0xa
push 0
call dword [sym.imp.user32.dll_MoveWindow]
pop edi
pop esi
pushfd
xor eax, eax
inc eax
popfd
pop ebx
mov esp, ebp
pop ebp
ret