Function at 0x414b10
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov esi, esp
mov dword [esi + 0x78], ebp
mov dword [esi + 0x7c], esp
mov dword [esi + 0x88], 0xffffffff
mov dword [esi + 0x84], 0x4364a0
mov dword [esi + 0x50], edx
mov edx, ecx
lea eax, [esi + 0x80]
xor ebx, ebx
mov ecx, dword fs:[0]
mov dword [esi + 0x80], ecx
mov dword fs:[0], eax
imul ecx, edx, 0x9e3779b9
mov al, byte [edx]
mov dword [esi + 0x54], ecx
mov dword [esi + 0x20], edx
cmp ebx, 9
ja 0x414bcf
nop
test al, 1
jne 0x414b84
mov ecx, eax
or cl, 1
lock cmpxchg byte [edx], cl
jne 0x414b70
jmp 0x41541a
test al, 2
jne 0x414be2
inc ebx
cmp ebx, 4
jae 0x414bac
mov eax, 1
mov ecx, ebx
shl eax, cl
xor ecx, ecx
nop dword [eax]
pause
inc ecx
cmp ecx, eax
jne 0x414ba0
jmp 0x41517a
push 0
call sub.KERNEL32.dll_Sleep
mov edx, dword [esi + 0x20]
movzx eax, byte [edx]
cmp ebx, 9
jbe 0x414b70
jmp 0x414bcf
mov ecx, eax
or cl, 1
lock cmpxchg byte [edx], cl
je 0x41541a
test al, 1
je 0x414bc0
test al, 2
jne 0x414be2
mov ecx, eax
or cl, 2
lock cmpxchg byte [edx], cl
jne 0x414bcf
mov eax, dword [esi + 0x50]
mov byte [esi + 0x70], 2
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov edi, dword [eax + 0xc]
mov dword [esi + 0x28], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0x10]
mov dword [esi + 0x24], ecx
mov dword [esi + 0x18], edi
mov dword [esi + 0x14], edx
mov dword [esi + 0x1c], eax
mov eax, dword [0x452038]
test eax, eax
jne 0x414c23
mov ecx, 0x452038
mov dword [esi + 0x88], 0
call fcn.0041d970
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 2
jb 0x414c44
cmp byte [eax + 0x18], 2
mov edx, eax
mov eax, 0
cmove edx, eax
test edx, edx
jne 0x414d64
mov eax, dword [0x452038]
test eax, eax
jne 0x414c61
mov ecx, 0x452038
mov dword [esi + 0x88], 0
call fcn.0041d970
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
je 0x414d15
mov edi, eax
test eax, eax
jne 0x414ccc
call sub.KERNEL32.dll_GetProcessHeap
push 0x20
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x415462
mov byte [eax + 0x18], 2
mov dword [eax + 0x1c], 0x452038
mov edi, eax
mov eax, dword [0x452038]
test eax, eax
jne 0x414cbb
mov ecx, 0x452038
mov dword [esi], edi
mov dword [esi + 0x88], 0
call fcn.0041d970
mov edi, dword [esi]
push edi
push eax
call sub.KERNEL32.dll_TlsSetValue
mov dword [esi + 0x88], 0
lea ecx, [esi + 0x30]
mov dword [esi], edi
mov dword [esi + 0x88], 0
call fcn.00415830
mov edx, dword [esi]
movsd xmm0, qword [esi + 0x30]
movsd xmm1, qword [esi + 0x38]
mov al, byte [edx + 0x18]
movsd qword [edx], xmm0
movsd qword [edx + 8], xmm1
movsd xmm0, qword [esi + 0x40]
cmp al, 2
movsd qword [edx + 0x10], xmm0
mov ecx, dword [esi + 0x48]
mov dword [edx + 0x18], ecx
je 0x414d64
lock dec dword [0x4529b4]
jmp 0x414d64
cmp byte [esi + 0x70], 2
lea edx, [esi + 0x58]
jne 0x414d64
lea ecx, [esi + 0x30]
mov dword [esi + 0x88], 0
call fcn.00415830
cmp byte [esi + 0x70], 2
je 0x414d3d
lock dec dword [0x4529b4]
mov eax, dword [esi + 0x48]
movsd xmm0, qword [esi + 0x40]
movsd xmm2, qword [esi + 0x30]
movsd xmm1, qword [esi + 0x38]
lea edx, [esi + 0x58]
mov dword [esi + 0x70], eax
movsd qword [esi + 0x68], xmm0
movsd qword [esi + 0x60], xmm1
movsd qword [esi + 0x58], xmm2
mov dword [esi], edx
nop word cs:[eax + eax]
mov edi, dword [0x4529b8]
test edi, edi
jne 0x414d8b
mov dword [esi + 0x88], 0
call fcn.00416810
mov edi, eax
movzx eax, byte [edi + 8]
xor ecx, ecx
mov edx, dword [esi + 0x54]
sub cl, al
mov eax, dword [edi + 4]
shr edx, cl
cmp edx, eax
jae 0x41542e
mov ebx, dword [edi]
mov dword [esi + 0xc], edi
shl edx, 6
xor eax, eax
mov ecx, 1
mov dword [esi + 8], ebx
lea edi, [ebx + edx + 0x20]
lock cmpxchg dword [ebx + edx + 0x20], ecx
je 0x414dde
mov ecx, edi
mov dword [esi + 0x88], 0
mov dword [esi + 4], edi
mov dword [esi + 0x10], edx
call fcn.00416a80
mov edx, dword [esi + 0x10]
mov edi, dword [esi + 4]
mov eax, dword [0x4529b8]
cmp dword [esi + 0xc], eax
je 0x414e19
mov eax, 0xffffffff
lock xadd dword [edi], eax
cmp eax, 4
jb 0x414d70
and eax, 2
jne 0x414d70
mov ecx, edi
mov dword [esi + 0x88], 0
call fcn.00416c00
jmp 0x414d70
mov ecx, dword [esi + 0x20]
mov al, byte [ecx]
cmp al, 3
jne 0x414e5e
mov eax, dword [esi + 0x24]
mov ebx, dword [esi]
xor eax, 1
mov dword [esi + 0x24], eax
or eax, dword [esi + 0x28]
sete byte [ebx + 0x18]
mov dword [ebx + 0xc], 0
mov dword [ebx + 8], ecx
mov dword [ebx + 0x14], 0
mov dword [ebx], 1
mov ecx, dword [esi + 8]
cmp dword [ecx + edx + 0x24], 0
je 0x414e99
mov eax, dword [ecx + edx + 0x28]
add eax, 0xc
jmp 0x414e9d
mov eax, 0xffffffff
mov ecx, 1
lock xadd dword [edi], eax
cmp eax, 4
jb 0x41540b
and eax, 2
jne 0x41540b
mov ecx, edi
mov dword [esi + 0x88], 0
call fcn.00416c00
mov ecx, 1
jmp 0x415151
lea eax, [ecx + edx + 0x24]
mov dword [eax], ebx
mov dword [ecx + edx + 0x28], ebx
mov eax, 0xffffffff
lock xadd dword [edi], eax
cmp eax, 4
jb 0x414ec7
and eax, 2
jne 0x414ec7
mov ecx, edi
mov dword [esi + 0x88], 0
call fcn.00416c00
mov eax, dword [esi + 0x28]
mov edx, dword [esi]
or dword [esi + 0x24], eax
mov eax, dword [edx + 4]
mov dword [esi + 4], eax
mov eax, dword [eax]
jne 0x415000
test eax, eax
je 0x415044
mov eax, dword [edx]
test eax, eax
je 0x41514a
mov dword [esi + 0x88], 0
nop dword [eax]
call fcn.0042d780
mov dword [esi + 0xc], eax
mov dword [esi + 8], edx
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x14]
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0x18]
mov dword [esi + 0x10], ecx
xor ecx, ecx
xor edx, eax
xor edi, ebx
or edi, edx
mov edx, 0xff
setne cl
cmp eax, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
sbb ebx, dword [esi + 8]
cmovb ecx, edx
test cl, cl
jne 0x414f46
cmp eax, dword [esi + 0x1c]
setne cl
ja 0x4151a0
cmp cl, 1
jne 0x4151a0
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
push eax
push dword [esi + 8]
push dword [esi + 0xc]
push dword [esi + 0x1c]
call fcn.0042da40
add esp, 0x10
mov edi, eax
xor eax, eax
mov ebx, edx
mul edi
mov edx, 0x3e8
mov dword [esi + 0x10], eax
mov eax, ebx
seto byte [esi + 0xc]
mul edx
mov edx, 0x3e8
mov ebx, eax
seto byte [esi + 8]
mov eax, edi
add ebx, dword [esi + 0x10]
mul edx
mov edi, edx
add edi, ebx
mov ebx, eax
setb al
or al, byte [esi + 0xc]
or al, byte [esi + 8]
jne 0x414fd4
xor eax, eax
add ecx, 0xf423f
setb al
push 0
push 0xf4240
push eax
push ecx
call fcn.00437020
add ebx, eax
mov ecx, 0xffffffff
adc edi, edx
setae al
cmp ebx, 0xffffffff
sbb edi, 0
cmovae ebx, ecx
test al, al
jne 0x414fd9
mov ebx, 0xffffffff
mov dword [esi + 0x30], 1
push ebx
push 4
lea eax, [esi + 0x30]
push eax
push dword [esi]
mov eax, dword [esi + 4]
call dword [eax + 4]
mov eax, dword [esi]
mov eax, dword [eax]
test eax, eax
jne 0x414f00
jmp 0x41514a
test eax, eax
je 0x41512f
mov eax, dword [edx]
test eax, eax
je 0x41514a
mov dword [esi + 0x88], 0
nop dword [eax]
mov dword [esi + 0x30], 1
push 0xffffffffffffffff
push 4
lea eax, [esi + 0x30]
push eax
push dword [esi]
mov eax, dword [esi + 4]
call dword [eax + 4]
mov eax, dword [esi]
mov eax, dword [eax]
test eax, eax
jne 0x415020
jmp 0x41514a
mov dword [esi + 0x88], 0
call fcn.0042d780
mov dword [esi + 8], ecx
mov ecx, eax
mov ebx, edx
mov edi, edx
mov edx, dword [esi + 0x18]
xor ecx, dword [esi + 0x14]
xor edi, edx
mov dword [esi + 0xc], ecx
xor ecx, ecx
or edi, dword [esi + 0xc]
mov edi, eax
setne cl
cmp dword [esi + 0x14], eax
mov eax, ebx
sbb edx, ebx
mov edx, 0xff
cmovb ecx, edx
test cl, cl
jne 0x415093
mov ecx, dword [esi + 8]
cmp ecx, dword [esi + 0x1c]
setne cl
ja 0x41518a
cmp cl, 1
jne 0x41518a
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
mov dword [esi + 0x34], 0
mov dword [esi + 0x30], 0
push dword [esi + 8]
push eax
push edi
push dword [esi + 0x1c]
call fcn.0042da40
add esp, 0x10
mov edi, ecx
lea ecx, [esi + 0x2c]
mov dword [esi + 0x2c], 0
push ecx
push 0xffffffffffffffff
push 0xff676980
push edx
push eax
call fcn.00436ad0
add esp, 0x14
cmp dword [esi + 0x2c], 0
jne 0x41511e
xor ecx, ecx
add edi, 0x63
mov ebx, edx
setb cl
push 0
push 0x64
push ecx
push edi
mov edi, eax
call fcn.00437020
test ebx, ebx
setns cl
test edx, edx
setns ch
cmp cl, ch
setne ch
sub edi, eax
sbb ebx, edx
setns al
cmp cl, al
setne al
and al, ch
je 0x41532d
push 0
push 0
push dword [esi]
mov eax, dword [esi + 4]
push dword [eax + 4]
call dword [eax + 0xc]
jmp 0x41514a
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 0xc]
mov dword [esi + 0x88], 0
push 0
push 0
push edx
push eax
call ecx
mov eax, dword [esi]
xor ecx, ecx
mov eax, dword [eax + 0x10]
cmp byte [esi + 0x70], 2
je 0x41515e
lock dec dword [0x4529b4]
mov edx, dword [esi + 0x20]
cmp ecx, 2
je 0x41541a
xor ebx, ebx
cmp ecx, 1
je 0x41517a
cmp eax, 1
je 0x41541a
mov al, byte [edx]
cmp ebx, 9
jbe 0x414b70
jmp 0x414bcf
mov ecx, dword [esi]
mov eax, 2
xchg dword [ecx], eax
test eax, eax
je 0x415319
nop dword [eax + eax]
mov edi, dword [0x4529b8]
test edi, edi
jne 0x4151bb
mov dword [esi + 0x88], 0
call fcn.00416810
mov edi, eax
mov eax, dword [esi]
xor ecx, ecx
mov edx, dword [eax + 8]
movzx eax, byte [edi + 8]
sub cl, al
mov eax, dword [edi + 4]
mov dword [esi + 8], edx
imul edx, edx, 0x9e3779b9
shr edx, cl
cmp edx, eax
jae 0x415448
mov ebx, dword [edi]
mov dword [esi + 0xc], edi
shl edx, 6
xor eax, eax
mov ecx, 1
lock cmpxchg dword [ebx + edx + 0x20], ecx
lea edi, [ebx + edx + 0x20]
je 0x41521c
mov ecx, edi
mov dword [esi + 0x88], 0
mov dword [esi + 0x14], edi
mov dword [esi + 0x10], edx
mov dword [esi + 4], ebx
call fcn.00416a80
mov ebx, dword [esi + 4]
mov edx, dword [esi + 0x10]
mov edi, dword [esi + 0x14]
mov eax, dword [0x4529b8]
cmp dword [esi + 0xc], eax
jne 0x415230
mov eax, dword [esi]
mov eax, dword [eax + 8]
cmp eax, dword [esi + 8]
je 0x415261
mov eax, 0xffffffff
lock xadd dword [edi], eax
cmp eax, 4
jb 0x4151a0
and eax, 2
jne 0x4151a0
mov ecx, edi
mov dword [esi + 0x88], 0
call fcn.00416c00
jmp 0x4151a0
mov dword [esi + 4], ebx
mov ebx, dword [esi]
mov dword [esi + 0x10], edx
mov dword [esi + 0x14], edi
xor eax, eax
mov edx, dword [ebx + 4]
mov edi, dword [ebx]
cmp edi, 2
sete al
xor ecx, ecx
test edi, edi
setne cl
cmp dword [edx], 1
cmove eax, ecx
test al, al
je 0x4152df
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 4]
mov edx, dword [eax + edi + 0x24]
test edx, edx
je 0x4153d2
cmp edx, ebx
je 0x415376
mov al, 1
nop word cs:[eax + eax]
mov ecx, edx
mov edx, dword [edx + 8]
movzx eax, al
cmp edx, dword [esi + 8]
mov edx, 0
cmove eax, edx
mov edx, dword [ecx + 0xc]
test edx, edx
je 0x4153d2
cmp edx, ebx
jne 0x4152b0
and al, 1
lea edx, [ecx + 0xc]
mov dword [esi + 0xc], edx
jmp 0x415386
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 4]
mov eax, 0xffffffff
lock xadd dword [edx + ecx + 0x20], eax
mov ecx, dword [esi + 0x14]
cmp eax, 4
jb 0x41514a
and eax, 2
jne 0x41514a
mov dword [esi + 0x88], 0
call fcn.00416c00
jmp 0x41514a
push 0
push 0
push dword [esi]
mov eax, dword [esi + 4]
push dword [eax + 4]
call dword [eax + 0xc]
jmp 0x41514a
mov eax, dword [esi + 4]
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], ebx
mov edx, dword [eax + 4]
mov ecx, dword [eax + 0xc]
lea eax, [esi + 0x30]
push eax
push 0
push dword [esi]
mov dword [esi + 8], edx
push edx
mov dword [esi + 0xc], ecx
call ecx
test eax, eax
je 0x41514a
mov ecx, dword [esi]
mov eax, 2
xchg dword [ecx], eax
test eax, eax
jne 0x4151a0
push 0
push 0
push ecx
push dword [esi + 8]
call dword [esi + 0xc]
jmp 0x41514a
mov eax, dword [esi + 4]
mov ecx, edi
xor ecx, ecx
lea eax, [eax + edi + 0x24]
mov dword [esi + 0xc], eax
mov al, 1
mov edx, dword [ebx + 0xc]
mov edi, dword [esi + 0xc]
mov ebx, dword [esi + 0x10]
mov dword [edi], edx
mov dword [esi + 0x18], edx
mov edi, dword [esi + 4]
mov edx, dword [esi]
cmp dword [edi + ebx + 0x28], edx
mov ebx, dword [esi + 0x10]
mov edi, dword [esi + 4]
je 0x4153bf
mov edx, dword [esi + 0x18]
mov edi, ebx
test edx, edx
je 0x4153c7
mov ecx, dword [edx + 8]
cmp ecx, dword [esi + 8]
je 0x4153d2
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x4153ae
jmp 0x4153c7
lea edx, [edi + ebx + 0x28]
mov edi, ebx
mov dword [edx], ecx
test al, al
je 0x4153d2
mov eax, dword [esi + 0x20]
lock and byte [eax], 0xfd
mov ecx, dword [esi + 4]
mov eax, 0xffffffff
lock xadd dword [ecx + edi + 0x20], eax
mov ecx, 2
cmp eax, 4
jb 0x41540b
and eax, 2
jne 0x41540b
mov ecx, dword [esi + 0x14]
mov dword [esi + 0x88], 0
call fcn.00416c00
mov ecx, 2
jmp 0x415151
cmp byte [esi + 0x70], 2
jne 0x415157
jmp 0x41515e
mov eax, dword [esi + 0x80]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi + 0x88], 0
mov ecx, 0x447604
push eax
call fcn.0040ff60
add esp, 4
jmp 0x415460
mov dword [esi + 0x88], 0
mov ecx, 0x447614
push eax
call fcn.0040ff60
add esp, 4
ud2
mov ecx, 0x20
mov edx, 4
call fcn.0040dcf0
ud2