Function at 0x421f70
Capabilities:
Get thread local storage value
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a480b
mov eax, dword fs:[0]
push eax
sub esp, 0xac
mov eax, dword [0x4c8104]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 4], 1
cmp dword [ebp + 8], 0
jne 0x421fe5
mov byte [ebp - 4], 2
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x421fd9
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x421fd9
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x421fd9
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov dword [ebp - 4], 3
jmp 0x4220a5
mov eax, dword [edi + 0x24]
push dword [0x50b8e0]
mov esi, dword [eax + 0x10]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x42200f
nop dword [eax + eax]
cmp dword [eax], esi
je 0x4220db
mov eax, dword [eax + 8]
test eax, eax
jne 0x422000
lea eax, [ebp + 0x10]
mov dword [ebp - 0x28], edi
push eax
lea eax, [ebp + 8]
mov dword [ebp - 0x24], fcn.00421f70
push eax
lea eax, [ebp - 0x28]
push eax
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0xb8]
call fcn.00414620
add esp, 0xc
lea ecx, [edi + 0x28]
mov byte [ebp - 4], 4
mov dword [ebp - 0x78], ecx
lea ecx, [ebp - 0x70]
push eax
call fcn.004155b0
mov byte [ebp - 4], 5
lea edx, [ebp - 0x78]
mov ecx, dword [edi + 0x24]
add ecx, 0xc
push ecx
call fcn.00410690
add esp, 4
lea ecx, [ebp - 0x68]
call fcn.004111e0
lea ecx, [ebp - 0xb0]
call fcn.004111e0
mov byte [ebp - 4], 6
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x42209e
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x42209e
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x42209e
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov dword [ebp - 4], 7
mov ecx, dword [ebp + 0x34]
test ecx, ecx
je 0x4220bd
mov edx, dword [ecx]
lea eax, [ebp + 0x10]
cmp ecx, eax
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049f3c4
mov esp, ebp
pop ebp
ret 0x30
cmp dword [eax + 4], 0
je 0x42200f
lea eax, [edi + 0x20]
xorps xmm0, xmm0
movlpd qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], eax
call fcn.00477840
add esp, 4
mov byte [ebp - 0x18], 1
mov byte [ebp - 4], 8
mov ebx, dword [ebp + 8]
movzx eax, bl
xor eax, 0x811c9dc5
mov edx, dword [edi + 4]
imul ecx, eax, 0x1000193
mov eax, ebx
shr eax, 8
movzx eax, al
mov dword [ebp - 0x24], ebx
xor ecx, eax
mov eax, ebx
imul ecx, ecx, 0x1000193
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, ebx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edi + 0x18]
and ecx, eax
mov eax, dword [edi + 0xc]
mov esi, dword [eax + ecx*8]
lea ecx, [ecx*8 + 4]
mov eax, esi
mov dword [ebp - 0x20], ecx
nop
cmp esi, edx
jne 0x422168
mov ecx, edx
jmp 0x422176
mov edx, dword [ebp - 0x20]
mov ecx, dword [edi + 0xc]
mov ecx, dword [edx + ecx]
mov edx, dword [edi + 4]
mov ecx, dword [ecx]
cmp eax, ecx
je 0x42218b
cmp dword [eax + 8], ebx
je 0x422183
mov eax, dword [eax]
jmp 0x422160
cmp eax, edx
je 0x42218b
xor al, al
jmp 0x4221e5
mov esi, dword [edx]
lea eax, [ebp + 8]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x24]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x20]
push eax
mov ebx, dword [esi + 4]
lea eax, [ebp - 0x28]
push eax
push ecx
push ebx
push esi
call fcn.00426e70
mov edx, eax
mov ecx, 0xccccccb
mov eax, dword [edi + 8]
sub ecx, eax
cmp ecx, 1
jb 0x42224b
inc eax
mov ecx, edi
mov dword [edi + 8], eax
mov dword [esi + 4], edx
mov dword [ebx], edx
mov eax, dword [edi + 4]
mov eax, dword [eax]
push eax
lea edx, [eax + 8]
push edx
lea eax, [ebp - 0x2c]
push eax
call fcn.0040c8d0
mov ebx, dword [ebp + 8]
mov al, byte [ebp - 0x28]
mov byte [ebp - 4], 1
push dword [ebp - 0x1c]
mov byte [ebp - 0x14], al
mov byte [ebx + 0x1e1], al
call fcn.00477860
mov al, byte [ebp - 0x14]
add esp, 4
mov ecx, dword [ebp + 0x34]
mov byte [ebp - 0x14], al
test ecx, ecx
je 0x422255
mov eax, dword [ecx]
lea edx, [ebp - 0x14]
push edx
call dword [eax + 8]
mov byte [ebp - 4], 9
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x42223f
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x42223f
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x42223f
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov dword [ebp - 4], 0xa
jmp 0x4220a5
push str.list_T__too_long
call fcn.00475800
call fcn.004757c0
int3