Function at 0x422bf0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
test ecx, ecx
je 0x422eb8
mov ebp, ecx
mov ecx, dword [ecx]
test ecx, ecx
js 0x422ef0
call fcn.004084d0
mov edi, eax
mov eax, dword [ebp]
test eax, eax
jle 0x422c5c
test edi, edi
je 0x422c23
mov ecx, dword [edi]
test ecx, ecx
jne 0x422c52
mov dword [esp + 4], 0xffffffff
mov dword [esp], 0
call fcn.0040a570
mov edx, dword [ebp]
test edx, edx
jne 0x422c52
mov dword [esp + 4], 0xffffffff
mov dword [esp], 0
call fcn.0040a570
movzx eax, byte [ebp + 8]
mov byte [edi + 8], al
mov eax, dword [ebp]
sub eax, 1
mov dword [esp + 0x28], eax
jo 0x422f27
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x422f31
mov ebx, 1
mov esi, 1
jmp 0x422c8e
cmp dword [esp + 0x28], eax
jl 0x422cf5
mov eax, dword [ebp]
cmp eax, ebx
jbe 0x422da0
movzx eax, byte [ebp + ebx + 8]
lea ecx, [eax - 0x41]
cmp cl, 0x19
jbe 0x422d20
cmp al, 0x5f
je 0x422cd9
test edi, edi
je 0x422e60
mov eax, dword [edi]
cmp eax, esi
jbe 0x422e30
mov eax, dword [ebp]
cmp eax, ebx
jbe 0x422e4a
movzx eax, byte [ebp + ebx + 8]
mov byte [edi + esi + 8], al
add esi, 1
jo 0x422d90
mov eax, ebx
add eax, 1
mov ebx, eax
jno 0x422c88
mov dword [esp + 0x2c], eax
call fcn.00409ba0
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x28], eax
jge 0x422c8e
cmp esi, dword [ebp]
je 0x422ee0
test esi, esi
js 0x422e70
add esp, 0x3c
mov edx, esi
mov ecx, edi
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00408790
test edi, edi
je 0x422e20
mov eax, dword [edi]
cmp eax, esi
jbe 0x422de8
mov eax, dword [ebp]
cmp eax, ebx
jbe 0x422e02
movzx eax, byte [ebp + ebx + 8]
add eax, 0x20
cmp eax, 0xff
jle 0x422ccc
cdq
mov dword [esp], eax
mov dword [esp + 0x10], 0xff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 4], edx
mov dword [esp + 0x2c], eax
call fcn.0040b690
mov eax, dword [esp + 0x2c]
mov byte [edi + esi + 8], al
add esi, 1
jno 0x422cd9
nop
call fcn.00409ba0
jmp 0x422cd9
sub eax, 1
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0040a570
movzx eax, byte [ebp + ebx + 8]
lea ecx, [eax - 0x41]
cmp cl, 0x19
jbe 0x422d20
mov ecx, dword [ebp]
cmp ecx, ebx
ja 0x422ca6
sub ecx, 1
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.0040a570
movzx eax, byte [ebp + ebx + 8]
jmp 0x422ca6
sub eax, 1
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.0040a570
mov eax, dword [ebp]
cmp eax, ebx
ja 0x422d3d
sub eax, 1
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0040a570
jmp 0x422d3d
mov eax, 0xffffffff
jmp 0x422deb
sub eax, 1
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.0040a570
mov eax, dword [ebp]
cmp eax, ebx
ja 0x422cc7
sub eax, 1
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0040a570
jmp 0x422cc7
mov eax, 0xffffffff
jmp 0x422e33
mov eax, esi
mov dword [esp], esi
sar eax, 0x1f
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 4], eax
call fcn.0040b690
add esp, 0x3c
mov edx, esi
mov ecx, edi
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00408790
xor ecx, ecx
mov esi, 1
call fcn.004084d0
add esp, 0x3c
mov edx, esi
mov edi, eax
pop ebx
pop esi
mov ecx, edi
pop edi
pop ebp
jmp fcn.00408790
add esp, 0x3c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], ecx
sar ecx, 0x1f
mov dword [esp + 4], ecx
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
call fcn.0040b690
mov ecx, dword [ebp]
jmp 0x422c0b
call fcn.00409ba0
jmp 0x422c69
cmp dword [ebp], 1
je 0x422ee0
mov esi, 1
jmp 0x422d06