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

Disassembly:
mov eax, 0x10069b63
call fcn.10068648
sub esp, 0x100
mov dword [ebp - 0x20], 0xfffffff7
push ebx
mov dword [ebp - 0x58], 0xfff7
xor ebx, ebx
mov dword [ebp - 0x30], 0xfffffffc
push esi
mov dword [ebp - 0x38], 0xfe9f4864
push edi
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x20], 0xffffffea
cmp dword [ebp - 0x20], 2
push 1
pop edi
jg 0x1004553e
mov eax, 0x3b6f
mov dword [ebp - 0x24], 0xaa9ac70c
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xac], eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xa4], eax
mov dword [ebp - 0x30], 0x70e7ad53
mov dword [ebp - 0x24], ebx
cmp dword [ebp - 0x24], 0xffffffea
jl 0x10045531
mov dword [ebp - 0x1c], 0xfffffffa
mov dword [ebp - 0x14], 0xfffffff8
cmp dword [ebp - 0x1c], ebx
je 0x1004528f
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x58]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0xac]
mov eax, dword [ebp - 0x58]
mov eax, dword [ebp - 0xac]
sub eax, 0x1fc65786
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0x58], ebx
je 0x100454cb
mov dword [ebp - 0x1c], 3
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x28], 0x228a
cmp dword [ebp - 0x28], 0x3f5
jge 0x10045478
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x4c]
push eax
push 0x100084e8
call fcn.1004f9f0
add esp, 0xc
mov byte [ebp - 0x39], bl
lea eax, [ebp - 0x39]
lea ecx, [ebp - 0xec]
push eax
mov eax, dword [ebp - 0x4c]
inc eax
push eax
call fcn.1002a133
lea eax, [ebp - 0x31]
mov dword [ebp - 4], ebx
push eax
mov eax, dword [ebp - 0x4c]
lea ecx, [ebp - 0xfc]
inc eax
mov byte [ebp - 0x31], bl
push eax
call fcn.1002a133
push dword [ebp - 0x48]
xorps xmm0, xmm0
push dword [ebp - 0x4c]
movlpd qword [ebp - 0x54], xmm0
push dword [ebp - 0x48]
movlpd qword [ebp - 0x44], xmm0
push dword [ebp - 0x4c]
call fcn.10053a10
mov esi, dword [ebp - 0x64]
mov ebx, eax
mov edi, dword [ebp - 0x60]
mov ecx, esi
or ecx, edi
mov dword [ebp - 0x14], edx
je 0x10045442
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0xdc]
add esi, 0xffffffff
push eax
lea eax, [ebp - 0xcc]
mov dword [ebp - 0x64], esi
push eax
adc edi, 0xffffffff
push 0x100084e8
mov dword [ebp - 0x60], edi
call fcn.1004f9f0
mov ecx, dword [ebp - 0xcc]
xor eax, eax
mov esi, dword [ebp - 0xec]
mov edx, ecx
shr edx, 5
and ecx, 0x1f
inc eax
add esp, 0xc
shl eax, cl
test dword [esi + edx*4], eax
jne 0x100453df
xor eax, eax
inc eax
shl eax, cl
or dword [esi + edx*4], eax
add dword [ebp - 0x50], 1
mov ecx, dword [ebp - 0x40]
adc dword [ebp - 0x28], 0
sub ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x70]
sbb eax, dword [ebp - 0x48]
add ebx, ecx
mov esi, dword [ebp - 0x14]
adc esi, eax
mov dword [ebp - 0x14], esi
jmp 0x100453e2
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xdc]
xor eax, eax
mov edi, dword [ebp - 0xfc]
mov edx, ecx
shr edx, 5
and ecx, 0x1f
inc eax
shl eax, cl
test dword [edi + edx*4], eax
jne 0x10045423
xor eax, eax
inc eax
shl eax, cl
or dword [edi + edx*4], eax
add dword [ebp - 0x40], 1
mov ecx, dword [ebp - 0x50]
adc dword [ebp - 0x70], 0
sub ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x28]
sbb eax, dword [ebp - 0x48]
add ebx, ecx
adc esi, eax
mov dword [ebp - 0x14], esi
push esi
push ebx
push 0x10008210
call fcn.1004fd81
mov esi, dword [ebp - 0x64]
add esp, 0xc
mov edi, dword [ebp - 0x60]
mov eax, esi
or eax, edi
jne 0x10045372
add esi, 0xffffffff
push 0x1000807d
adc edi, 0xffffffff
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x60], edi
call fcn.100500e1
pop ecx
lea ecx, [ebp - 0xfc]
call fcn.1002a194
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xec]
call fcn.1002a194
xor edi, edi
xor ebx, ebx
inc edi
mov dword [ebp - 0x14], ebx
jmp 0x1004548a
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xd0], ebx
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x1004547d
inc dword [ebp - 0x1c]
mov dword [ebp - 0x1c], 0xfffffffa
jmp 0x100454c3
mov dword [ebp - 0x28], 0xdf39281c
mov dword [ebp - 0x28], 0x314b8123
mov dword [ebp - 0x28], 0xfffffffe
mov dword [ebp - 0x28], 0x9b95520
inc dword [ebp - 0x30]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0x29
jl 0x1004549b
jmp 0x1004551f
mov dword [ebp - 0x40], 0xb7bfbc35
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x40]
sub eax, dword [ebp - 0x68]
jne 0x100454f1
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], edi
ja 0x100454eb
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x40]
cmp dword [ebp - 0x40], ebx
je 0x10045500
mov ecx, edi
cmp dword [ebp - 0x58], ebx
jne 0x10045502
mov ecx, ebx
xor eax, eax
cmp ecx, 0xffffffff
setl al
sub eax, dword [ebp - 0x20]
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x14]
imul eax, dword [ebp - 0x20]
mov dword [ebp - 0x14], eax
dec dword [ebp - 0x24]
cmp dword [ebp - 0x24], 0xffffffea
jge 0x10045279
mov eax, 0x3b6f
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 2
jle 0x10045246
mov byte [ebp - 0x15], bl
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x14], ebx
jmp 0x10045569
cmp byte [ebp - 0x29], 0
je 0x10045566
push ebx
push ebx
push 0x80f
push 0x1a6a
push ebx
call dword [sym.imp.USER32.dll_InsertMenuW]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0x18
mov byte [ebp - 0x29], bl
jl 0x1004554d
cmp byte [ebp - 0x29], 0
je 0x10045584
push 0x8e6
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp byte [ebp - 0x15], 0
je 0x10045822
mov dword [ebp - 0x1c], 0xfffffffb
mov eax, 0xb5e49576
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x68], 0x924b5411
mov dword [ebp - 0x30], 0xfffe
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x28], 0xd485
mov dword [ebp - 0x38], 0x1ac8
cmp dword [ebp - 0x38], 0x559
jge 0x10045678
lea eax, [ebp - 0x8c]
push eax
lea eax, [ebp - 0x74]
push eax
push 0x100081b0
call fcn.1004f9f0
add esp, 0xc
or esi, 0xffffffff
cmp dword [ebp - 0x74], 0
mov edi, ebx
jle 0x10045668
mov dword [ebp - 0x38], 0xb6
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x90]
push eax
push 0x10008128
call fcn.1004f9f0
imul ecx, dword [ebp - 0x90], 0xb6
add esp, 0xc
imul eax, dword [ebp - 0x8c], 0xb6
add ecx, dword [ebp - 0x6c]
cmp ecx, eax
jg 0x10045662
mov ecx, 0xb6
test esi, esi
jns 0x10045654
mov eax, ecx
sub eax, dword [ebp - 0x6c]
cdq
idiv ecx
mov esi, edx
jmp 0x10045662
sub ecx, dword [ebp - 0x6c]
mov eax, ecx
cdq
idiv dword [ebp - 0x38]
cmp esi, edx
cmovl esi, ecx
inc edi
cmp edi, dword [ebp - 0x74]
jl 0x1004560c
push esi
push 0x10008130
call fcn.1004fd81
pop ecx
xor edi, edi
pop ecx
inc edi
mov dword [ebp - 0x14], ebx
jmp 0x1004568e
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x88], 0xa117
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x1004567d
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], 0x5b05
mov eax, dword [ebp - 0x24]
add eax, dword [ebp - 0x1c]
cmp eax, 0x40874b28
setl cl
sub ecx, dword [ebp - 0x1c]
cmp ecx, 0xab227d37
jbe 0x100456cc
mov edx, edi
cmp dword [ebp - 0x68], ebx
jne 0x100456ce
mov edx, ebx
mov eax, dword [ebp - 0x30]
xor ecx, ecx
cmp edx, eax
setne cl
add ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x9c], ecx
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x1c], eax
jne 0x10045741
mov dword [ebp - 0x38], 0xec58f553
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x38], 6
push edi
call fcn.10029e7b
mov dword [ebp - 0x14], ebx
jmp 0x10045715
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x80]
mov dword [eax + ecx*4], 0xfffffff6
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x10045705
dec dword [ebp - 0x88]
cmp dword [ebp - 0x80], 0
je 0x100457f7
push dword [ebp - 0x80]
call fcn.1004fee7
pop ecx
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x78], ebx
jmp 0x100457f7
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x50], 0x2039ce85
mov dword [ebp - 0x20], ebx
jmp 0x10045761
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x108], 0x7df39f3c
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x10045750
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x10045778
push ebx
push ebx
call dword [sym.imp.USER32.dll_GetMonitorInfoW]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x9c], 0xfffffffb
mov eax, dword [ebp - 0x1c]
push 5
pop ecx
sub ecx, eax
mov eax, dword [ebp - 0x88]
add eax, ecx
mov ecx, dword [ebp - 0x14]
imul ecx, eax
mov dword [ebp - 0x50], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x100], esi
mov eax, dword [ebp - 0x14]
neg eax
cmp eax, 0x3f2a
mov eax, dword [ebp - 0x14]
setl cl
xor edx, edx
cmp ecx, eax
setle dl
neg esi
xor eax, eax
cmp esi, edx
setle al
cmp eax, 0xffffffff
jge 0x100457e4
mov eax, edi
cmp dword [ebp - 0x28], ebx
jne 0x100457e6
mov eax, ebx
cmp eax, dword [ebp - 0x14]
jge 0x100457f2
mov eax, ebx
cmp dword [ebp - 0x28], ebx
je 0x100457f4
mov eax, edi
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x1004580c
push 0x1905
push ebx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push ebx
push 0x6b3
push 0x20b6
push 0x146f
call dword [sym.imp.GDI32.dll_GetCharABCWidthsFloatA]
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x14], ebx
jmp 0x10045842
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xc0], 0x2abac89d
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 4
jl 0x10045831
mov dword [ebp - 0x1c], 0xffffffff
cmp dword [ebp - 0x1c], ebx
je 0x10045880
mov dword [ebp - 0x1c], 3
jmp 0x10045875
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x10045872
push ebx
push 0x25f8
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0x34
jg 0x1004585d
jmp 0x10045962
mov dword [ebp - 0x24], 0x8d0d3f7b
mov dword [ebp - 0x28], 0xc774
mov dword [ebp - 0x20], 0xe9973063
cmp dword [ebp - 0x24], ebx
jne 0x100458d5
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
sub edx, eax
mov eax, dword [ebp - 0x24]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp eax, edx
setl cl
add ecx, 0x167c28ca
jne 0x100458c8
mov eax, dword [ebp - 0x1c]
imul eax, dword [ebp - 0x1c], 0x79af
mov ecx, ebx
test eax, eax
je 0x100458d7
mov ecx, edi
xor eax, eax
cmp ecx, 0x72c02a3
push 3
sete al
sub eax, dword [ebp - 0x1c]
neg eax
pop esi
sbb eax, eax
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x20], ebx
jmp 0x1004595d
mov dword [ebp - 0x14], esi
cmp dword [ebp - 0x14], ebx
jl 0x10045957
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp + eax*4 - 0xc0]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0xb4], eax
test eax, eax
je 0x10045922
mov eax, dword [ebp - 0x20]
cmp dword [ebp + eax*4 - 0xc0], ebx
mov eax, edi
jne 0x10045924
mov eax, ebx
neg eax
mov byte [ebp - 0x15], bl
je 0x10045939
cmp byte [ebp - 0x15], 0
je 0x10045952
call dword [sym.imp.KERNEL32.dll_SwitchToThread]
jmp 0x10045952
cmp byte [ebp - 0x15], 0
je 0x10045945
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xc0], ecx
dec dword [ebp - 0x14]
jns 0x100458fd
mov dword [ebp - 0x24], ebx
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], esi
jle 0x100458f5
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret