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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4ae29b
mov eax, dword fs:[0]
push eax
sub esp, 0xac
mov eax, dword [0x4d5104]
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 0x4221d5
mov byte [ebp - 4], 2
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x4221c9
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x4221c9
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x4221c9
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov dword [ebp - 4], 3
jmp 0x422295
mov eax, dword [edi + 0x24]
push dword [0x518c04]
mov esi, dword [eax + 0x10]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x4221ff
nop dword [eax + eax]
cmp dword [eax], esi
je 0x4222cb
mov eax, dword [eax + 8]
test eax, eax
jne 0x4221f0
lea eax, [ebp + 0x10]
mov dword [ebp - 0x28], edi
push eax
lea eax, [ebp + 8]
mov dword [ebp - 0x24], fcn.00422160
push eax
lea eax, [ebp - 0x28]
push eax
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0xb8]
call fcn.00414810
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.004157a0
mov byte [ebp - 4], 5
lea edx, [ebp - 0x78]
mov ecx, dword [edi + 0x24]
add ecx, 0xc
push ecx
call fcn.00410880
add esp, 4
lea ecx, [ebp - 0x68]
call fcn.004113d0
lea ecx, [ebp - 0xb0]
call fcn.004113d0
mov byte [ebp - 4], 6
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x42228e
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x42228e
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x42228e
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 0x4222ad
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.004a8e74
mov esp, ebp
pop ebp
ret 0x30
cmp dword [eax + 4], 0
je 0x4221ff
lea eax, [edi + 0x20]
xorps xmm0, xmm0
movlpd qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], eax
call fcn.004812d0
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 0x422358
mov ecx, edx
jmp 0x422366
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 0x42237b
cmp dword [eax + 8], ebx
je 0x422373
mov eax, dword [eax]
jmp 0x422350
cmp eax, edx
je 0x42237b
xor al, al
jmp 0x4223d5
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.00427060
mov edx, eax
mov ecx, 0xccccccb
mov eax, dword [edi + 8]
sub ecx, eax
cmp ecx, 1
jb 0x42243b
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.0040ca40
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.004812f0
mov al, byte [ebp - 0x14]
add esp, 4
mov ecx, dword [ebp + 0x34]
mov byte [ebp - 0x14], al
test ecx, ecx
je 0x422445
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 0x42242f
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x42242f
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x42242f
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov dword [ebp - 4], 0xa
jmp 0x422295
push str.list_T__too_long
call fcn.0047f290
call fcn.0047f250
int3