Function at 0x452930
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
sub esp, 0x114
cmp byte [eax], 0x2f
push ebx
push esi
lea esi, [eax + 1]
cmovne esi, eax
mov eax, dword [ebp + 0x10]
push edi
test eax, eax
je 0x452955
mov dword [eax], 0
cmp dword [0x6993b0], 0
je 0x452b5d
push dword [0x6996b8]
mov dword [ebp - 0xc], 0x6996b0
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
test edi, edi
jne 0x452988
push 0x6996b0
call fcn.00452d80
add esp, 4
lea eax, [edi + 1]
push eax
push dword [0x6996b8]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov eax, 0x5ff700
mov dword [ebp + 0xc], eax
test esi, esi
je 0x4529bb
cmp byte [esi], 0x25
jne 0x4529bb
lea eax, [ebp + 0xc]
push eax
push esi
call fcn.00453000
mov esi, eax
add esp, 8
mov eax, dword [ebp + 0xc]
push esi
push eax
push 0x601428
lea eax, [ebp - 0x114]
push 0x104
push eax
call fcn.0044de40
lea eax, [ebp - 0x114]
push eax
call fcn.0044fb40
lea eax, [ebp - 0x114]
push eax
call fcn.00452700
add esp, 0x1c
xor esi, esi
mov dword [ebp + 0xc], esi
mov ecx, dword [esi*4 + 0x6993b0]
mov dword [ebp - 4], ecx
test ecx, ecx
je 0x452b2e
mov eax, dword [esi*4 + 0x6994b0]
lea edx, [ebp - 0x114]
mov dword [ebp - 8], edx
test eax, eax
je 0x452a47
push dword [esi*4 + 0x6995b0]
push eax
mov eax, edx
push eax
call fcn.005b7850
add esp, 0xc
test eax, eax
jne 0x452b21
mov ecx, dword [ebp - 4]
lea edx, [ebp - 0x114]
add edx, dword [esi*4 + 0x6995b0]
mov dword [ebp - 8], edx
mov ebx, dword [ecx + 0x14]
xor edi, edi
sub ebx, 1
js 0x452b21
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x10], eax
mov ecx, dword [eax]
mov eax, edx
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x452a80
test dl, dl
je 0x452a7c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x452a80
add eax, 2
add ecx, 2
test dl, dl
jne 0x452a60
xor eax, eax
jmp 0x452a85
sbb eax, eax
or eax, 1
test eax, eax
js 0x452b21
je 0x452b7f
test ebx, ebx
je 0x452ac5
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov ecx, dword [ecx + ebx*8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x452ac0
test dl, dl
je 0x452abc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x452ac0
add eax, 2
add ecx, 2
test dl, dl
jne 0x452aa0
xor eax, eax
jmp 0x452ac5
sbb eax, eax
or eax, 1
test eax, eax
jg 0x452b21
je 0x452b79
test ebx, ebx
jle 0x452b21
mov eax, dword [ebp - 0x10]
lea esi, [ebx + edi]
mov ecx, dword [ebp - 8]
sar esi, 1
mov eax, dword [eax + esi*8]
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x452b01
test dl, dl
je 0x452afd
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x452b01
add ecx, 2
add eax, 2
test dl, dl
jne 0x452ae1
xor ecx, ecx
jmp 0x452b06
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x452b74
cmp esi, edi
je 0x452b1e
test ecx, ecx
mov eax, esi
cmovns eax, ebx
cmovns edi, esi
mov ebx, eax
cmp edi, ebx
jl 0x452ad3
mov esi, dword [ebp + 0xc]
inc esi
mov dword [ebp + 0xc], esi
cmp esi, 0x40
jl 0x4529f3
push dword [0x6996b8]
mov ebx, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call ebx
mov esi, eax
sub esi, 1
jne 0x452b50
push 0x6996b0
call fcn.00452da0
add esp, 4
push esi
push dword [0x6996b8]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov dword [eax], 0
mov dword [eax + 4], 0
mov esp, ebp
pop ebp
ret
mov ebx, esi
mov esi, dword [ebp + 0xc]
test ebx, ebx
jns 0x452b81
jmp 0x452b21
xor ebx, ebx
mov eax, dword [ebp - 4]
lea edx, [eax + 0x40]
cmp dword [eax + 0x10], edx
jb 0x452bba
cmp dword [eax + 0x38], 0
je 0x452bba
mov ecx, dword [ebp + 0x10]
test ecx, ecx
jne 0x452bc1
mov esi, dword [ebp + 8]
mov dword [esi], 0
lea ecx, [ebp - 0xc]
mov dword [esi + 4], 0
call fcn.00452740
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x452bc3
mov dword [ecx], eax
mov eax, dword [eax + 0x20]
mov ecx, ebx
shl ecx, 4
add eax, ecx
mov edi, dword [eax + 4]
test edi, edi
jne 0x452c45
mov esi, dword [ebp + 8]
mov eax, dword [eax]
mov ebx, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esi], eax
mov dword [esi + 4], edi
test eax, eax
je 0x452c13
push dword [0x6996b8]
call ebx
mov edi, eax
test edi, edi
jne 0x452c03
push 0x6996b0
call fcn.00452d80
add esp, 4
lea eax, [edi + 1]
push eax
push dword [0x6996b8]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push dword [0x6996b8]
call ebx
mov edi, eax
sub edi, 1
jne 0x452c2f
push 0x6996b0
call fcn.00452da0
add esp, 4
push edi
push dword [0x6996b8]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x6993a4]
test ecx, ecx
je 0x452d07
cmp dword [ebp + 0x10], 0
je 0x452d07
mov esi, dword [ebp - 4]
cmp dword [esi + 0x10], edx
mov esi, dword [ebp + 0xc]
jb 0x452d07
mov edx, dword [ebp - 4]
cmp dword [edx + 0x38], 0
je 0x452d07
cmp dword [edx + 0x34], 0x42434b44
jne 0x452d07
push dword [esi*4 + 0x6994b0]
lea eax, [ebp + 0xc]
mov dword [ebp + 0xc], ebx
push 0
push 1
push eax
push edx
call ecx
mov ecx, dword [ebp + 0x10]
add esp, 0x14
mov esi, dword [ebp + 8]
mov dword [ecx], eax
test eax, eax
je 0x452b9c
mov ecx, dword [ebp + 0xc]
shl ecx, 4
add ecx, dword [eax + 0x20]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esi], eax
mov dword [esi + 4], ecx
test eax, eax
je 0x452cf6
push dword [0x6996b8]
mov ebx, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call ebx
mov edi, eax
test edi, edi
jne 0x452ce6
push 0x6996b0
call fcn.00452d80
add esp, 4
lea ecx, [edi + 1]
push ecx
push dword [0x6996b8]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
lea ecx, [ebp - 0xc]
call fcn.00452740
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp + 8]
mov eax, dword [eax]
mov ebx, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esi], eax
mov dword [esi + 4], edi
test eax, eax
je 0x452d46
push dword [0x6996b8]
call ebx
mov edi, eax
test edi, edi
jne 0x452d36
push 0x6996b0
call fcn.00452d80
add esp, 4
lea eax, [edi + 1]
push eax
push dword [0x6996b8]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push dword [0x6996b8]
call ebx
mov edi, eax
sub edi, 1
jne 0x452d62
push 0x6996b0
call fcn.00452da0
add esp, 4
push edi
push dword [0x6996b8]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret