Function at 0x401992
Capabilities:
Get thread local storage value
Query environment variable
Set environment variable

Disassembly:
mov edx, dword [esp]
add edx, edi
sub edi, esi
adc esi, 0xa
sub byte [0x405161], 0x55
add edi, 0x4b
sbb dword [0x4050b2], 0xad
push reloc.user32.dll_GetDesktopWindow
push reloc.user32.dll_GetDesktopWindow
call dword [sym.imp.kernel32.dll_lstrcmpA]
cmp eax, 0
jne 0x401175
adc eax, dword [0x405061]
sbb dword [0x405070], 0xf1
mov edx, dword [esp]
adc edx, dword [0x40507d]
add dword [0x405025], esi
adc dword [0x4050b6], 0x53
mov ebx, 0x401175
call ebx
sub edx, esi
sbb dword [0x4050af], esi
and byte [0x405022], bh
mov ecx, dword [esp]
add ecx, eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
mov esp, ebp
pop ebp
ret
xor dword [0x4050c8], ebx
xor ebx, eax
xor bh, ah
sub bh, bh
sbb dword [0x405022], esi
lea edi, [0x405cfd]
push dword [edi]
call dword [sym.imp.kernel32.dll_SetErrorMode]
sub byte [0x4051b5], 0xf9
and dword [0x405010], 0x94
xor esi, eax
sub al, byte [0x4051c1]
and dword [0x405114], esi
mov edx, dword [esp]
add edx, 0xffffff90
push 0x405c91
push 0x405c89
call dword [sym.imp.kernel32.dll_FileTimeToSystemTime]
xor dword [0x405073], edi
sub eax, dword [0x4051f3]
sbb esi, ebx
sbb esi, eax
adc dword [0x4050a4], 0xaa
add dword [0x40517e], ebx
mov ebx, reloc.shell32.dll_SHGetSpecialFolderPathA
call ebx
mov ch, byte [esp]
add ch, bl
xor dword [0x40509f], 0x5b
mov edx, dword [esp]
adc edx, dword [0x4051be]
add bh, dh
adc edi, dword [0x405187]
and dword [0x40500c], 0x7d
add byte [ebp - 0x77], dl
push ebp
mov ebp, esp
add esp, 0xffffffb0
mov esi, dword [esp]
invalid
invalid
push ebp
mov ebp, esp
add esp, 0xffffffb0
mov esi, dword [esp]
add esi, 0x55
xor dword [0x4050b5], esi
mov edx, dword [esp]
add edx, esi
mov ecx, dword [esp]
adc ecx, dword [0x405074]
mov eax, dword [esp]
add eax, esi
mov edx, dword [esp]
add edx, eax
sub dword [0x4051e0], esi
sub esi, esi
xor edx, 0xffffffd3
or eax, dword [0x4050a8]
sub edx, 0x6c
lea ecx, [0x405ce0]
push dword [ecx]
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ecx, dword [esp]
add ecx, eax
or ah, byte [0x405168]
mov ebx, dword [esp]
adc ebx, dword [0x40510d]
mov edi, dword [esp]
add edi, esi
mov edx, reloc.gdi32.dll_SetDIBitsToDevice
call edx
xor edi, ebx
and dword [0x405056], 0xb1
xor dword [0x4050c0], esi
adc eax, dword [0x4050aa]
or dword [0x4050e3], 0xce
adc cl, byte [0x40516c]
add byte [eax], al
add byte [eax], al
add byte [ebx + 0x4051f50d], al
add byte [ebx], bh
mov dh, byte [esp]
add dh, bh
mov ecx, dword [esp]
adc ecx, dword [0x4050d4]
or eax, dword [0x405140]
push reloc.user32.dll_GetDesktopWindow
push reloc.user32.dll_GetDesktopWindow
call dword [sym.imp.kernel32.dll_lstrcmpA]
cmp eax, 0
jne 0x4018f1
sub ebx, ebx
adc edi, dword [0x40514b]
add ebx, esi
and esi, 0xffffffdd
xor dword [0x4051bb], 0xad
mov edi, 0x401714
call edi
adc bh, byte [0x405080]
adc dword [0x405077], 0x74
mov ecx, dword [esp]
adc ecx, dword [0x405140]
mov edx, dword [esp]
add edx, 0xfffffffc
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ecx], bl
fisttp word [edx - 0x22ffdbd4]
adc dword [0x405112], ecx
or byte [0x405071], cl
lea edx, [0x405cfd]
push dword [edx]
call dword [sym.imp.kernel32.dll_SetErrorMode]
add edi, eax
mov dword [0x4050c5], 0x79
or esi, dword [0x4050cf]
mov ecx, dword [esp]
add ecx, ebx
and ecx, 0x45
push reloc.user32.dll_EmptyClipboard
push reloc.user32.dll_EmptyClipboard
call dword [sym.imp.kernel32.dll_lstrcmpiA]
test eax, eax
jne 0x4010fa
sub ebx, dword [0x405013]
or dword [0x405181], 0xea
adc edi, dword [0x405188]
mov ecx, dword [esp]
add ecx, 0x1a
mov ebx, 0x4010fa
call ebx
add esi, eax
adc edi, eax
adc ebx, dword [0x40502d]
adc ah, byte [0x405056]
adc dword [0x4051cf], ecx
adc dword [0x40507b], esi
add byte [eax], al
add byte [ebx], dl
or eax, 0x4051f9
adc bl, byte [0x405046]
or dword [0x405001], 0x43
sub byte [0x405041], 0x32
push 7
sub byte [0x4050da], 0xa
add eax, eax
sbb dword [0x4050e4], 0x87
xor eax, ebx
and dword [0x4051c7], 0xd2
sub byte [0x40508f], cl
push 0
push 0x3e8
call dword [sym.imp.kernel32.dll_SleepEx]
add dword [0x4050e1], ebx
sub byte [0x40500a], 0x86
add dword [0x4051f5], edi
mov edx, dword [esp]
add edx, 0xffffff87
dec dword [esp]
jne 0x401b7e
sub ah, byte [0x4050e0]
or dword [0x405092], 0x3c
add dword [0x4051e8], ecx
sub dword [0x4050b4], ecx
and ebx, 0xffffffd1
add esp, 4
add edi, 0xffffffd2
or edi, 0x75
adc dword [0x40516e], esi
or dword [0x405122], 0x60
xor esi, ebx
adc ecx, dword [0x405080]
lea eax, [0x405511]
adc esi, dword [0x405143]
adc dword [0x405085], 9
xor dword [0x40519e], 0xa3
and dword [0x4050bb], esi
push eax
adc ecx, dword [0x405072]
adc dword [0x40508d], 0x61
adc dword [0x4050df], edx
adc dword [0x4050eb], 0xf
call dword [sym.imp.kernel32.dll_GetModuleHandleW]
or dword [0x4050cb], 0x62
sbb dword [0x4050f0], 0x7d
adc dword [0x4051b0], 9
or dl, 0x28
xor dword [0x405199], 0x48
xor dword [0x405162], 0xf6
push reloc.user32.dll_DefMDIChildProcA
or edx, dword [0x4050a0]
and dword [0x405150], 0xdd
add ebx, esi
sub esi, 0x2b
adc bl, 0x8a
push eax
adc edi, dword [0x405176]
add bh, bh
sub bl, byte [0x405118]
add ebx, 0xffffffdf
adc esi, ecx
sbb edx, 0xfffffffd
push reloc.user32.dll_CreateMenu
or dword [0x4051ed], 0x48
sub dword [0x40517d], edi
adc dword [0x40514e], 0xc0
adc byte [0x4051ba], dh
push eax
add esi, 0xffffff8d
xor dword [0x4051a2], 0x32
add esi, edi
adc ebx, dword [0x405151]
sub ecx, dword [0x4050eb]
add bl, bl
push reloc.user32.dll_SetWindowPlacement
add esi, 0xffffff98
adc ebx, ebx
or ebx, dword [0x405112]
sub esi, 0xffffffce
add dword [0x405021], ebx
push eax
adc dword [0x405130], 0x57
or edx, 0xffffffb4
and dword [0x405107], 0x73
or esi, 0x38
sub edi, 0x41
adc edi, dword [0x405019]
call dword [sym.imp.kernel32.dll_GetProcAddress]
add edx, ebx
adc esi, dword [0x405061]
add edi, ecx
add dword [0x40500d], esi
adc ecx, 0xffffff87
mov dword [0x405c2a], eax
add dword [0x4051c6], ebx
adc dword [0x4050a4], 0x4b
sub dword [0x4050cd], ebx
sbb dword [0x405093], 0x7a
sub edi, dword [0x4051b7]
call dword [sym.imp.kernel32.dll_GetProcAddress]
adc edx, dword [0x4051b7]
adc ebx, dword [0x4051ed]
adc dword [0x40511a], 0xe2
sbb dword [0x405133], 0x5e
add edx, ecx
mov dword [0x405c13], eax
xor dword [0x405003], 0xb4
adc dword [0x4050eb], 0xad
and dword [0x405003], 9
or byte [0x40505e], cl
add edi, 0xffffff83
or cl, byte [0x405128]
call dword [sym.imp.kernel32.dll_GetProcAddress]
adc ebx, dword [0x405157]
adc ebx, edi
sbb ebx, 0xffffffc5
sub dword [0x405088], esi
add edi, 0x60
mov dword [0x405538], eax
and esi, 0x4b
mov dword [0x405140], 0x5e
sub byte [0x40506b], 0x41
adc edi, 0x39
xor dl, cl
push reloc.user32.dll_DrawMenuBar
add ebx, 0xffffffab
add edx, ebx
adc ecx, edi
sbb esi, 0xffffffdc
adc bl, byte [0x40501d]
call eax
adc ecx, 0x47
sub edi, esi
and ebx, 0xffffffb5
or dword [0x405046], 0x3e
mov dword [0x4051b4], 0xe6
or edx, dword [0x40518e]
push eax
push 8
push reloc.user32.dll_CountClipboardFormats
push reloc.user32.dll_DdeUninitialize
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableA]
cmp eax, 0
jne 0x401175
pop eax
push eax
push reloc.user32.dll_DdeSetUserHandle
push reloc.user32.dll_EnumDesktopsA
call dword [sym.imp.kernel32.dll_SetEnvironmentVariableW]
pop eax
push eax
lea edx, [0x405cfd]
push dword [edx]
call dword [sym.imp.kernel32.dll_SetErrorMode]
pop eax
push eax
adc dword [0x405125], 0x82
and dword [0x4051ba], 0x59
xor dword [0x405139], edi
and esi, 0xffffff81
pop edx
mov ecx, dword [esp]
add ecx, edi
xor dword [0x4050fa], 0xe7
sub byte [0x4051a2], 0xa9
or dword [0x4051ea], 0xae
add edx, dword [edx + 0x3c]
and dword [0x4050c4], 0x57
sub byte [0x40517c], ch
adc ebx, dword [0x405112]
adc esi, ebx
add edx, 0xa4
or dword [0x4051a9], eax
adc bh, bl
sbb ecx, ecx
xor ecx, 0x43
or cl, byte [0x405096]
and esi, 0x7c
push 0
push 4
push edx
push 0x40550d
push 0xffffffffffffffff
call dword [0x405c2a]
sbb ebx, ebx
add esi, 4
add eax, 0x69
sbb ecx, ecx
cmp word [0x40550d], 0x1500
jb 0x401175
sub ecx, dword [0x40506a]
sbb ebx, esi
adc eax, 0xffffffcb
add edx, 0xffffffe6
adc ecx, dword [0x4051ea]
push 0x401212
adc esi, dword [0x4051a4]
add dword [0x40514e], eax
add dword [0x4051dd], esi
xor edx, esi
ret