Function at 0x436ec0
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4ff980
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
push edi
mov eax, dword [0x53806c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [edi], vtable.nbase::MessageLoop.0
xor esi, esi
mov ecx, edi
call fcn.004373d0
mov ecx, edi
call fcn.00437b90
mov ecx, edi
call fcn.004373d0
test al, al
je 0x436f11
inc esi
cmp esi, 0x64
jl 0x436ef2
lea esi, [edi + 0x9c]
xor ebx, ebx
test esi, esi
je 0x436f20
inc dword [esi + 4]
mov ecx, dword [edi + 0xa8]
mov eax, ecx
mov edx, dword [edi + 0xa4]
sub eax, edx
sar eax, 2
test eax, eax
je 0x436f6a
mov eax, ecx
sub eax, edx
sar eax, 2
cmp ebx, eax
jb 0x436f45
inc ebx
jmp 0x436f59
mov edx, dword [edx + ebx*4]
inc ebx
test edx, edx
je 0x436f59
mov eax, dword [edx]
mov ecx, edx
call dword [eax]
mov ecx, dword [edi + 0xa8]
mov edx, dword [edi + 0xa4]
mov eax, ecx
sub eax, edx
sar eax, 2
cmp ebx, eax
jb 0x436f37
mov dword [ebp - 4], 0
test esi, esi
je 0x436f84
dec dword [esi + 4]
cmp dword [esi + 4], 1
jge 0x436f84
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [edi + 0xb0]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov eax, dword [edi + 0xb0]
mov dword [ebp - 0x14], eax
lea eax, [edi + 0xb4]
push eax
lea eax, [ebp - 0x10]
mov dword [ebp - 0x10], 0
push eax
mov dword [edi + 0xb0], 0
call fcn.00420630
add esp, 8
mov dword [ebp - 4], 1
mov ecx, dword [ebp - 0x10]
test ecx, ecx
je 0x436fd6
call fcn.004120c0
mov dword [ebp - 4], 0xffffffff
call fcn.00438350
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov dword [ebp - 4], 3
mov ecx, dword [edi + 0xb4]
test ecx, ecx
je 0x437002
call fcn.004120c0
lea ebx, [edi + 0xa4]
mov dword [ebp - 4], 4
mov ecx, ebx
call fcn.00401930
mov ecx, dword [ebx]
test ecx, ecx
je 0x437042
mov eax, dword [ebx + 8]
sub eax, ecx
and eax, 0xfffffffc
push eax
push ecx
call fcn.0040ae70
mov dword [ebx], 0
add esp, 8
mov dword [ebx + 4], 0
mov dword [ebx + 8], 0
lea esi, [edi + 0x90]
mov ecx, esi
mov dword [ebp - 4], 5
call fcn.00401930
mov ecx, dword [esi]
test ecx, ecx
je 0x437082
mov eax, dword [esi + 8]
sub eax, ecx
and eax, 0xfffffffc
push eax
push ecx
call fcn.0040ae70
mov dword [esi], 0
add esp, 8
mov dword [esi + 4], 0
mov dword [esi + 8], 0
lea ecx, [edi + 0x6c]
mov dword [ebp - 4], 6
call fcn.00401930
mov ecx, dword [edi + 0x6c]
test ecx, ecx
je 0x4370e7
mov edx, dword [edi + 0x70]
push ecx
call fcn.00438cb0
mov esi, dword [edi + 0x6c]
mov eax, 0x92492493
mov ecx, dword [edi + 0x74]
sub ecx, esi
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [ecx*8]
sub eax, ecx
shl eax, 3
push eax
push esi
call fcn.0040ae70
mov dword [edi + 0x6c], 0
add esp, 0xc
mov dword [edi + 0x70], 0
mov dword [edi + 0x74], 0
mov dword [ebp - 4], 7
mov ecx, dword [edi + 0x68]
test ecx, ecx
je 0x437142
mov eax, dword [edi + 0x64]
dec eax
add eax, ecx
mov ecx, dword [edi + 0x60]
dec ecx
and ecx, eax
mov eax, dword [edi + 0x5c]
mov esi, dword [eax + ecx*4]
add esi, 0x10
mov byte [ebp - 4], 8
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x43712a
mov edx, dword [ecx]
cmp ecx, esi
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov dword [esi + 0x24], 0
mov byte [ebp - 4], 7
add dword [edi + 0x68], 0xffffffff
jne 0x43713b
mov dword [edi + 0x64], 0
mov ecx, dword [edi + 0x68]
test ecx, ecx
jne 0x4370f5
mov esi, dword [edi + 0x60]
test esi, esi
je 0x43716a
nop dword [eax]
mov eax, dword [edi + 0x5c]
dec esi
mov eax, dword [eax + esi*4]
test eax, eax
je 0x437166
push 0x38
push eax
call fcn.0040ae70
add esp, 8
test esi, esi
jne 0x437150
mov ecx, dword [edi + 0x5c]
test ecx, ecx
je 0x437181
mov eax, dword [edi + 0x60]
shl eax, 2
push eax
push ecx
call fcn.0040ae70
add esp, 8
mov dword [edi + 0x60], 0
mov dword [edi + 0x5c], 0
mov byte [ebp - 4], 9
push 8
push dword [edi + 0x58]
call fcn.0040ae70
add esp, 8
mov dword [edi + 0x58], 0
mov dword [ebp - 4], 0xa
mov ecx, dword [edi + 0x54]
test ecx, ecx
je 0x437208
mov edx, ecx
mov eax, dword [edi + 0x50]
dec eax
add eax, ecx
mov ecx, dword [edi + 0x4c]
dec ecx
and ecx, eax
mov eax, dword [edi + 0x48]
mov esi, dword [eax + ecx*4]
add esi, 0x10
mov byte [ebp - 4], 0xb
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4371ef
mov edx, dword [ecx]
cmp ecx, esi
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov dword [esi + 0x24], 0
mov edx, dword [edi + 0x54]
lea eax, [edx - 1]
mov byte [ebp - 4], 0xa
mov dword [edi + 0x54], eax
test eax, eax
jne 0x437200
mov dword [edi + 0x50], eax
mov ecx, eax
mov edx, eax
test ecx, ecx
jne 0x4371b7
mov esi, dword [edi + 0x4c]
test esi, esi
je 0x43722a
nop
mov eax, dword [edi + 0x48]
dec esi
mov eax, dword [eax + esi*4]
test eax, eax
je 0x437226
push 0x38
push eax
call fcn.0040ae70
add esp, 8
test esi, esi
jne 0x437210
mov ecx, dword [edi + 0x48]
test ecx, ecx
je 0x437241
mov eax, dword [edi + 0x4c]
shl eax, 2
push eax
push ecx
call fcn.0040ae70
add esp, 8
mov dword [edi + 0x4c], 0
mov dword [edi + 0x48], 0
mov byte [ebp - 4], 0xc
push 8
push dword [edi + 0x44]
call fcn.0040ae70
add esp, 8
mov dword [edi + 0x44], 0
lea eax, [edi + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov dword [ebp - 4], 0xd
mov ecx, dword [edi + 0x28]
test ecx, ecx
je 0x4372d2
mov edx, ecx
mov eax, dword [edi + 0x24]
dec eax
add eax, ecx
mov ecx, dword [edi + 0x20]
dec ecx
and ecx, eax
mov eax, dword [edi + 0x1c]
mov esi, dword [eax + ecx*4]
add esi, 0x10
mov byte [ebp - 4], 0xe
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4372b9
mov edx, dword [ecx]
cmp ecx, esi
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov dword [esi + 0x24], 0
mov edx, dword [edi + 0x28]
lea eax, [edx - 1]
mov byte [ebp - 4], 0xd
mov dword [edi + 0x28], eax
test eax, eax
jne 0x4372ca
mov dword [edi + 0x24], eax
mov ecx, eax
mov edx, eax
test ecx, ecx
jne 0x437281
mov esi, dword [edi + 0x20]
test esi, esi
je 0x4372fa
nop dword [eax]
mov eax, dword [edi + 0x1c]
dec esi
mov eax, dword [eax + esi*4]
test eax, eax
je 0x4372f6
push 0x38
push eax
call fcn.0040ae70
add esp, 8
test esi, esi
jne 0x4372e0
mov ecx, dword [edi + 0x1c]
test ecx, ecx
je 0x437311
mov eax, dword [edi + 0x20]
shl eax, 2
push eax
push ecx
call fcn.0040ae70
add esp, 8
mov dword [edi + 0x20], 0
mov dword [edi + 0x1c], 0
mov byte [ebp - 4], 0xf
push 8
push dword [edi + 0x18]
call fcn.0040ae70
add esp, 8
mov dword [edi + 0x18], 0
mov dword [ebp - 4], 0x10
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x43734a
call fcn.004120c0
mov dword [edi], vtable.nbase::MessagePump::Delegate.0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret