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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a2a93
mov eax, dword fs:[0]
push eax
sub esp, 0xb4
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 - 0x2c], edi
mov dword [ebp - 4], 1
cmp dword [ebp + 8], 0
jne 0x4103e8
mov byte [ebp - 4], 2
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x4103dc
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x4103dc
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x4103dc
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov dword [ebp - 4], 3
jmp 0x4104a5
mov eax, dword [edi + 0x24]
push dword [0x50b8e0]
mov esi, dword [eax + 0x10]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x41040f
nop
cmp dword [eax], esi
je 0x4104db
mov eax, dword [eax + 8]
test eax, eax
jne 0x410400
lea eax, [ebp + 0x10]
mov dword [ebp - 0x20], edi
push eax
lea eax, [ebp + 8]
mov dword [ebp - 0x1c], fcn.00410370
push eax
lea eax, [ebp - 0x20]
push eax
lea edx, [ebp - 0x1c]
lea ecx, [ebp - 0xc0]
call fcn.00414620
add esp, 0xc
lea ecx, [edi + 0x28]
mov byte [ebp - 4], 4
mov dword [ebp - 0x80], ecx
lea ecx, [ebp - 0x78]
push eax
call fcn.004155b0
mov byte [ebp - 4], 5
lea edx, [ebp - 0x80]
mov ecx, dword [edi + 0x24]
add ecx, 0xc
push ecx
call fcn.00410690
add esp, 4
lea ecx, [ebp - 0x70]
call fcn.004111e0
lea ecx, [ebp - 0xb8]
call fcn.004111e0
mov byte [ebp - 4], 6
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x41049e
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x41049e
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x41049e
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 0x4104bd
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 0x41040f
lea eax, [edi + 0x20]
mov byte [ebp - 0x14], 0
push eax
mov dword [ebp - 0x20], eax
call fcn.00477840
mov ebx, dword [ebp + 8]
add esp, 4
cmp byte [ebx + 0x1e1], 0
je 0x41062b
movzx eax, bl
xor eax, 0x811c9dc5
mov edx, dword [edi + 4]
imul ecx, eax, 0x1000193
mov eax, ebx
shr eax, 8
movzx eax, al
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 dword [ebp - 0x28], eax
mov eax, dword [eax + ecx*8]
lea ecx, [ecx*8 + 4]
mov dword [ebp - 0x18], ecx
mov esi, eax
lea ecx, [edi + 4]
mov dword [ebp - 0x24], eax
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x28]
nop
cmp eax, edx
jne 0x410578
mov eax, edx
jmp 0x41057d
mov eax, dword [edi + ecx]
mov eax, dword [eax]
cmp esi, eax
je 0x4105c5
cmp dword [esi + 8], ebx
je 0x41058d
mov esi, dword [esi]
mov eax, dword [ebp - 0x24]
jmp 0x410570
mov ecx, esi
mov edi, esi
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x24]
nop dword [eax]
cmp edi, edx
jne 0x4105a8
mov eax, edx
jmp 0x4105b0
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + ecx]
mov eax, dword [eax]
cmp esi, eax
je 0x4105bd
cmp ebx, dword [esi + 8]
jne 0x4105bd
mov esi, dword [esi]
jmp 0x4105a0
mov edi, dword [ebp - 0x34]
cmp dword [ebp - 0x30], esi
jne 0x4105c9
mov edi, edx
mov esi, edx
mov eax, edi
xor ebx, ebx
mov dword [ebp - 0x18], ebx
cmp eax, esi
je 0x4105de
mov eax, dword [eax]
inc ebx
cmp eax, esi
jne 0x4105d4
mov dword [ebp - 0x18], ebx
cmp edi, dword [edx]
jne 0x410602
cmp esi, edx
jne 0x410602
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x1c]
call fcn.004084f0
mov ecx, dword [ebp - 0x2c]
push 8
call fcn.00407470
mov byte [ebp - 4], 1
jmp 0x410625
cmp edi, esi
je 0x410625
mov ebx, dword [ebp - 0x2c]
nop dword [eax]
push edi
mov edi, dword [edi]
lea eax, [ebp - 0x1c]
push eax
mov ecx, ebx
call fcn.004101c0
cmp edi, esi
jne 0x410610
mov ebx, dword [ebp - 0x18]
test ebx, ebx
setne byte [ebp - 0x14]
push dword [ebp - 0x20]
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 0x410684
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 0x410678
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x410678
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x410678
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov dword [ebp - 4], 0xa
jmp 0x4104a5
call fcn.004757c0
int3