Function at 0x101288f0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x2c
mov eax, dword [0x101d2014]
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
xor eax, ebp
mov dword [ebp - 0x10], eax
xor eax, eax
test ecx, ecx
mov esi, dword [ebx + 8]
mov edi, dword [ebx + 0xc]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x28], eax
je 0x1012892d
mov edx, dword [ecx + 4]
mov dword [ebp - 0x24], edx
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x20], ecx
test esi, esi
je 0x10128937
lock inc dword [esi + 0x48]
jmp 0x10128993
mov ecx, dword [ebp + 0x1c]
xor edx, edx
cmp eax, 0x11
jne 0x1012895a
mov esi, dword [ebx + 0x1c]
cmp esi, 0x82
jb 0x1012895a
mov edx, dword [ebx + 0x18]
cmp byte [edx], 1
sbb esi, 0
shl esi, 3
mov edx, esi
lea esi, [ebp - 0x14]
lea edi, [ebp - 0x1c]
mov dword [esi], edx
lea edx, [ebp - 0x18]
mov dword [edi], eax
mov dword [edx], 0x2000
push ecx
push 1
push esi
push edx
push edi
call fcn.101396c0
add esp, 0x14
test eax, eax
je 0x10128beb
mov esi, eax
push 0
push ebx
push eax
call sym.nss3.dll_PK11_ImportPublicKey
add esp, 0xc
mov edi, eax
test edi, edi
je 0x101289fe
cmp dword [esi + 0x30], 0
jne 0x101289cd
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x34], eax
push dword [0x101d4d30]
call dword [sym.imp.kernel32.dll_TlsGetValue]
test eax, eax
mov dword [ebp - 0x2c], eax
je 0x10128c2b
mov ebx, dword [ebp - 0x34]
lea eax, [ebx + 0x1c]
push eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 8], eax
mov eax, dword [esi]
mov dword [ebp - 0x2c], edi
mov edi, dword [esi + 0x40]
mov ecx, dword [eax + 0x32]
call dword [section..00cfg]
lea eax, [ebp - 0x14]
push eax
push sym.nss3.dll_PR_DuplicateEnvironment
push esi
push 4
push edi
call ecx
add esp, 0x14
test eax, eax
je 0x10128a19
mov eax, dword [esi + 0x38]
mov dword [ebp - 0x14], eax
mov al, 1
jmp 0x10128a1b
lock dec dword [esi + 0x48]
jne 0x10128a0d
push esi
call fcn.10135de0
add esp, 4
push 0
push 0xffffe00e
jmp 0x10128bf2
xor eax, eax
cmp dword [esi + 0x30], 0
mov edi, dword [ebp - 0x2c]
jne 0x10128a33
push dword [esi + 0x3c]
mov ebx, eax
call sym.nss3.dll_PR_Unlock
mov eax, ebx
add esp, 4
mov ebx, dword [ebp - 0x14]
test al, al
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], ebx
jne 0x10128a46
cmp dword [esi + 0x30], 0
jne 0x10128a72
mov edi, dword [esi + 0x3c]
push dword [0x101d4d30]
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
test eax, eax
je 0x10128c15
lea eax, [edi + 0x1c]
push eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov dword [edi + 8], ebx
mov ebx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x2c]
mov eax, dword [esi]
mov ecx, dword [eax + 0xc2]
call dword [section..00cfg]
lea eax, [ebp - 0x28]
push edi
push eax
push ebx
call ecx
add esp, 0xc
test eax, eax
je 0x10128b1f
cmp byte [ebp - 0x30], 0
mov edi, eax
jne 0x10128afc
cmp dword [esi + 0x30], 0
jne 0x10128ae5
push dword [esi + 0x3c]
call sym.nss3.dll_PR_Unlock
add esp, 4
cmp dword [esi + 0x30], 0
jne 0x10128ae5
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x30], eax
push dword [0x101d4d30]
call dword [sym.imp.kernel32.dll_TlsGetValue]
test eax, eax
mov dword [ebp - 0x2c], eax
je 0x10128c42
mov ebx, dword [ebp - 0x30]
lea eax, [ebx + 0x1c]
push eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 8], eax
mov ebx, dword [ebp - 0x34]
mov eax, dword [esi]
mov ecx, dword [eax + 0x36]
call dword [section..00cfg]
push ebx
call ecx
add esp, 4
cmp dword [esi + 0x30], 0
jne 0x10128b07
push dword [esi + 0x3c]
call sym.nss3.dll_PR_Unlock
add esp, 4
lock dec dword [esi + 0x48]
jne 0x10128bdd
push esi
call fcn.10135de0
add esp, 4
jmp 0x10128bdd
mov edx, dword [ebp + 0x14]
mov ecx, dword [esi]
mov eax, dword [ebp + 0x18]
mov edi, dword [edx + 4]
mov ebx, dword [edx + 8]
mov edx, dword [eax + 4]
mov ecx, dword [ecx + 0xc6]
mov dword [ebp - 0x2c], edi
mov edi, dword [eax + 8]
mov dword [ebp - 0x38], edx
call dword [section..00cfg]
push ebx
mov ebx, dword [ebp - 0x34]
push dword [ebp - 0x2c]
push edi
push dword [ebp - 0x38]
push ebx
call ecx
add esp, 0x14
cmp byte [ebp - 0x30], 0
mov edi, eax
jne 0x10128bbf
cmp dword [esi + 0x30], 0
jne 0x10128ba8
push dword [esi + 0x3c]
call sym.nss3.dll_PR_Unlock
add esp, 4
cmp dword [esi + 0x30], 0
jne 0x10128ba8
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x30], eax
push dword [0x101d4d30]
call dword [sym.imp.kernel32.dll_TlsGetValue]
test eax, eax
mov dword [ebp - 0x2c], eax
je 0x10128c59
mov ebx, dword [ebp - 0x30]
lea eax, [ebx + 0x1c]
push eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 8], eax
mov ebx, dword [ebp - 0x34]
mov eax, dword [esi]
mov ecx, dword [eax + 0x36]
call dword [section..00cfg]
push ebx
call ecx
add esp, 4
cmp dword [esi + 0x30], 0
jne 0x10128bca
push dword [esi + 0x3c]
call sym.nss3.dll_PR_Unlock
add esp, 4
lock dec dword [esi + 0x48]
jne 0x10128bd9
push esi
call fcn.10135de0
add esp, 4
test edi, edi
je 0x10128c11
push edi
call fcn.10115520
add esp, 4
push 0
push eax
jmp 0x10128bf2
push 0
push 0xffffe040
call sym.nss3.dll_PR_SetError
add esp, 8
xor esi, esi
dec esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10192ef0
mov eax, esi
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
jmp 0x10128bfd
xor eax, eax
push eax
push eax
push 1
push eax
call fcn.100e2c70
add esp, 0x10
mov ebx, eax
jmp 0x10128a5f
xor eax, eax
push eax
push eax
push 1
push eax
call fcn.100e2c70
add esp, 0x10
mov dword [ebp - 0x2c], eax
jmp 0x101289ba
xor eax, eax
push eax
push eax
push 1
push eax
call fcn.100e2c70
add esp, 0x10
mov dword [ebp - 0x2c], eax
jmp 0x10128acf
xor eax, eax
push eax
push eax
push 1
push eax
call fcn.100e2c70
add esp, 0x10
mov dword [ebp - 0x2c], eax
jmp 0x10128b92