Function at 0x100d2860
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x100d28f7
cmp dword [ebx + 4], 0
je 0x100d28f7
mov eax, dword [ebx + 8]
test eax, eax
je 0x100d28f7
cmp eax, 0x3fffffff
ja 0x100d28f7
add eax, 2
mov ecx, 0xaaaaaaab
mul ecx
mov edi, edx
mov eax, edx
shr eax, 1
shr edi, 5
mov ecx, edi
shl ecx, 4
lea edx, [edi + edi]
sub eax, ecx
lea ecx, [edi + edi - 2]
cmovne ecx, edx
shl eax, 2
shl edi, 6
add edi, ecx
add edi, eax
je 0x100d28f7
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
test eax, eax
je 0x100d2936
mov dword [esp], eax
mov esi, edx
call sym.nss3.dll_PORT_ArenaMark_Util
mov edx, esi
mov esi, eax
test edx, edx
jne 0x100d293c
mov eax, edi
or eax, 1
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.nss3.dll_PORT_ArenaAlloc_Util
test eax, eax
je 0x100d2a81
mov edx, eax
jmp 0x100d298c
cmp dword [0x101f2f50], 0
je 0x100d2dad
mov eax, dword [0x101f25a4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x100d2d44
mov dword [eax + 0x28], 0xffffe005
xor esi, esi
mov dword [eax + 0x2c], esi
mov dword [eax + 0x30], esi
mov eax, esi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
test edx, edx
je 0x100d2977
mov eax, dword [ebp + 0x10]
or edi, 1
cmp edi, eax
mov edi, eax
jbe 0x100d298c
cmp dword [0x101f2f50], 0
je 0x100d2db7
mov eax, dword [0x101f25a4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x100d2d59
mov dword [eax + 0x28], 0xffffe003
jmp 0x100d2924
mov eax, edi
or eax, 1
mov dword [esp], eax
call sym.nss3.dll_PORT_Alloc_Util
mov edx, eax
xor esi, esi
test eax, eax
je 0x100d292c
mov eax, dword [ebx + 8]
test eax, eax
je 0x100d2a5c
mov dword [ebp - 0x1c], edx
cmp eax, 0x3fffffff
ja 0x100d2a14
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov ecx, 0xaaaaaaab
mul ecx
mov eax, edx
shr eax, 1
shr edx, 5
mov ecx, edx
shl ecx, 4
mov dword [ebp - 0x20], ecx
lea ecx, [edx + edx]
mov dword [ebp - 0x14], ecx
sub eax, dword [ebp - 0x20]
lea ecx, [edx + edx - 2]
cmovne ecx, dword [ebp - 0x14]
shl eax, 2
shl edx, 6
add edx, ecx
add edx, eax
je 0x100d2a14
cmp edx, edi
jbe 0x100d2a99
cmp dword [0x101f2f50], 0
je 0x100d2dcb
mov eax, dword [0x101f25a4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x100d2d83
mov dword [eax + 0x28], 0xffffe8b6
jmp 0x100d2a41
cmp dword [0x101f2f50], 0
je 0x100d2dc1
mov eax, dword [0x101f25a4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x100d2d6e
mov dword [eax + 0x28], 0xffffe005
xor ecx, ecx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x30], ecx
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x100d2a69
mov dword [esp], 0
jmp 0x100d2a8b
xor ebx, ebx
mov byte [edx + ebx], 0
mov esi, edx
jmp 0x100d292c
xor esi, esi
test edx, edx
je 0x100d292c
mov dword [esp], edx
call dword [sym.imp.mozglue.dll_free]
jmp 0x100d292c
mov dword [esp], 0
mov ecx, dword [ebp + 8]
mov edx, esi
call fcn.100dbe30
xor esi, esi
jmp 0x100d292c
mov eax, dword [ebx + 4]
mov dword [ebp - 0x14], eax
mov dword [esp + 4], 0x24
mov dword [esp], 1
call dword [sym.imp.mozglue.dll_calloc]
test eax, eax
mov edx, dword [ebp - 0x1c]
je 0x100d2a4c
mov ebx, eax
mov dword [eax + 8], 0x40
mov dword [eax + 0x18], edx
mov dword [eax + 0x1c], edi
mov ecx, dword [ebp - 0x10]
cmp ecx, 2
mov dword [ebp - 0x20], eax
ja 0x100d2aeb
mov ecx, dword [ebp - 0x14]
mov al, byte [ecx]
mov byte [ebx], al
jne 0x100d2b39
mov al, byte [ecx + 1]
mov byte [ebx + 1], al
mov eax, 2
jmp 0x100d2b3c
mov eax, dword [ebp - 0x14]
add eax, ecx
mov dword [ebp - 0x24], eax
mov edx, 0xaaaaaaab
mov eax, ecx
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov dword [ebp - 0x18], eax
mov eax, ecx
sub eax, dword [ebp - 0x18]
je 0x100d2b44
mov edx, ecx
sub edx, eax
mov dword [ebp - 0x10], edx
mov ecx, dword [ebp - 0x14]
mov cl, byte [ecx + edx]
mov byte [ebx], cl
cmp eax, 1
mov edx, dword [ebp - 0x14]
je 0x100d2b2c
mov ecx, dword [ebp - 0x10]
mov cl, byte [ecx + edx + 1]
mov byte [ebx + 1], cl
mov dword [ebx + 4], eax
mov ecx, dword [ebp - 0x24]
sub ecx, eax
mov eax, dword [ebp - 0x1c]
jmp 0x100d2b4d
xor eax, eax
inc eax
mov dword [ebx + 4], eax
jmp 0x100d2cbe
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x24]
cmp ecx, edx
jbe 0x100d2cbe
add edi, 0xfffffffd
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x24], ecx
xor eax, eax
mov ebx, 0xfffffffd
mov edi, edx
mov edx, eax
shl edx, 8
movzx ecx, byte [edi + ebx + 3]
lea eax, [edx + ecx]
inc ebx
jne 0x100d2b6a
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x20]
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x100d2bca
mov dword [ebp - 0x28], ebx
mov ebx, dword [edi + 0xc]
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x28]
cmp dword [ebp - 0x18], ebx
jae 0x100d2b9d
mov ebx, dword [ebp - 0x18]
jmp 0x100d2bbb
mov ebx, edi
mov dword [edi + 0xc], 0
mov edi, dword [ebp - 0x10]
mov word [edi], 0xa0d
add edi, 2
mov dword [ebp - 0x10], edi
add dword [ebx + 0x20], 2
mov ebx, dword [ebx + 0xc]
add ebx, 4
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x18]
mov dword [ebx + 0xc], edi
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov bl, byte [ebx + 0x101be690]
mov edi, dword [ebp - 0x10]
mov byte [edi], bl
shr edx, 0xc
and edx, 0x3f
mov dl, byte [edx + 0x101be690]
mov ebx, dword [ebp - 0x10]
mov byte [ebx + 1], dl
shr eax, 6
and eax, 0x3f
mov al, byte [eax + 0x101be690]
mov byte [ebx + 2], al
mov edx, dword [ebp - 0x14]
add edx, 3
and ecx, 0x3f
mov al, byte [ecx + 0x101be690]
mov byte [ebx + 3], al
add ebx, 4
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebx + 0x20]
add eax, 4
mov dword [ebx + 0x20], eax
mov edi, dword [ebp - 0x2c]
cmp eax, edi
jb 0x100d2c70
mov ecx, dword [ebx + 0x10]
test ecx, ecx
je 0x100d2c7d
mov dword [ebp - 0x14], edx
mov edx, dword [ebx + 0x14]
mov dword [ebp - 0x18], edx
mov edx, dword [ebx + 0x18]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x28], eax
call dword [section..00cfg]
mov eax, dword [ebp - 0x28]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x18]
mov dword [esp], eax
call ecx
test eax, eax
js 0x100d2d3f
mov dword [ebx + 0x20], 0
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x24]
cmp edx, ecx
jb 0x100d2b61
jmp 0x100d2cbe
mov ecx, dword [ebp - 0x24]
cmp edx, ecx
jae 0x100d2c73
cmp dword [0x101f2f50], 0
je 0x100d2dd5
mov eax, dword [0x101f25a4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x100d2d98
mov dword [eax + 0x28], 0xffffe8b6
xor ecx, ecx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x30], ecx
mov ebx, dword [ebp - 0x20]
jmp 0x100d2cc9
mov ecx, ebx
call fcn.100d2e00
test eax, eax
je 0x100d2ce7
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x100d2cd9
mov dword [esp], eax
call dword [sym.imp.mozglue.dll_free]
mov dword [esp], ebx
call dword [sym.imp.mozglue.dll_free]
jmp 0x100d2a49
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x14], eax
mov edi, ebx
mov ebx, dword [ebx + 0x20]
mov dword [edi + 0x18], 0
mov ecx, edi
call fcn.100d2e00
mov dword [ebp - 0x10], eax
mov eax, dword [edi + 0x18]
test eax, eax
je 0x100d2d13
mov dword [esp], eax
call dword [sym.imp.mozglue.dll_free]
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.mozglue.dll_free]
cmp dword [ebp - 0x10], 0xffffffff
je 0x100d2d37
cmp dword [ebp - 0x14], 0
mov edx, dword [ebp - 0x1c]
jne 0x100d2a5e
jmp 0x100d2a4c
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
jmp 0x100d2cdc
mov eax, dword [ebp - 0x10]
jmp 0x100d2ccc
movaps xmm0, xmmword [0x101af1a0]
movups xmmword [esp], xmm0
call fcn.1006d800
jmp 0x100d291d
movaps xmm0, xmmword [0x101af1a0]
movups xmmword [esp], xmm0
call fcn.1006d800
jmp 0x100d296e
movaps xmm0, xmmword [0x101af1a0]
movups xmmword [esp], xmm0
call fcn.1006d800
jmp 0x100d2a3a
movaps xmm0, xmmword [0x101af1a0]
movups xmmword [esp], xmm0
call fcn.1006d800
jmp 0x100d2a0b
movaps xmm0, xmmword [0x101af1a0]
movups xmmword [esp], xmm0
call fcn.1006d800
jmp 0x100d2caa
call fcn.100029d0
jmp 0x100d2904
call fcn.100029d0
jmp 0x100d2955
call fcn.100029d0
jmp 0x100d2a21
call fcn.100029d0
jmp 0x100d29f2
call fcn.100029d0
jmp 0x100d2c91