Function at 0x552a80
Capabilities:
Set thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 8], 0
mov dword [esp], 0x40000
mov ebp, eax
mov dword [esp + 4], 0
call sym._OPENSSL_init_crypto
test eax, eax
je 0x552b99
mov dword [esp + 4], sym._err_do_init_ossl_
mov dword [esp], 0x9472d4
call sym._CRYPTO_THREAD_run_once
test eax, eax
je 0x552b99
mov eax, dword [0x946ea0]
test eax, eax
je 0x552b99
mov dword [esp], 0x9472cc
call sym._CRYPTO_THREAD_get_local
cmp eax, 0xffffffff
mov ebx, eax
je 0x552b99
test eax, eax
je 0x552bf1
mov dword [esp], ebp
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebx + 0x180]
sub esp, 4
add eax, 1
cdq
shr edx, 0x1c
add eax, edx
and eax, 0xf
sub eax, edx
cmp eax, dword [ebx + 0x184]
mov ecx, eax
mov dword [ebx + 0x180], eax
je 0x552ba1
mov edx, dword [esp + 0x14]
shl esi, 0xc
lea eax, [ebx + eax*4]
and esi, 0xfff000
mov dword [eax + 0x100], edi
mov edi, dword [esp + 0x1c]
shl edx, 0x18
mov dword [eax], 0
or esi, edx
mov edx, dword [esp + 0x18]
mov dword [eax + 0x140], edi
and edx, 0xfff
or esi, edx
test byte [eax + 0xc0], 1
mov dword [eax + 0x40], esi
jne 0x552bc0
mov dword [ebx + ecx*4 + 0xc0], 0
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
lea edx, [eax + 1]
mov ebp, edx
sar ebp, 0x1f
shr ebp, 0x1c
add edx, ebp
and edx, 0xf
sub edx, ebp
mov dword [ebx + 0x184], edx
jmp 0x552b4b
mov dword [esp + 8], 0x1b3
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [eax + 0x80]
mov dword [esp], eax
call sym._CRYPTO_free
mov ecx, dword [ebx + 0x180]
mov dword [ebx + ecx*4 + 0x80], 0
jmp 0x552b8e
mov dword [esp + 4], 0xffffffff
mov dword [esp], 0x9472cc
call sym._CRYPTO_THREAD_set_local
test eax, eax
je 0x552b99
mov dword [esp + 8], 0x2dc
mov dword [esp + 4], str.crypto_err_err.c
mov dword [esp], 0x188
call sym._CRYPTO_zalloc
test eax, eax
mov ebx, eax
je 0x552e04
mov dword [esp], 2
mov dword [esp + 4], 0
call sym._ossl_init_thread_start
test eax, eax
je 0x552c80
mov dword [esp + 4], ebx
mov dword [esp], 0x9472cc
call sym._CRYPTO_THREAD_set_local
test eax, eax
je 0x552c80
mov dword [esp + 8], 0
mov dword [esp], 2
mov dword [esp + 4], 0
call sym._OPENSSL_init_crypto
jmp 0x552b1b
test byte [ebx + 0xc0], 1
jne 0x552e20
test byte [ebx + 0xc4], 1
mov dword [ebx + 0xc0], 0
jne 0x5530f0
test byte [ebx + 0xc8], 1
mov dword [ebx + 0xc4], 0
jne 0x5530c0
test byte [ebx + 0xcc], 1
mov dword [ebx + 0xc8], 0
jne 0x553090
test byte [ebx + 0xd0], 1
mov dword [ebx + 0xcc], 0
jne 0x553060
test byte [ebx + 0xd4], 1
mov dword [ebx + 0xd0], 0
jne 0x553030
test byte [ebx + 0xd8], 1
mov dword [ebx + 0xd4], 0
jne 0x553000
test byte [ebx + 0xdc], 1
mov dword [ebx + 0xd8], 0
jne 0x552fd0
test byte [ebx + 0xe0], 1
mov dword [ebx + 0xdc], 0
jne 0x552fa0
test byte [ebx + 0xe4], 1
mov dword [ebx + 0xe0], 0
jne 0x552f70
test byte [ebx + 0xe8], 1
mov dword [ebx + 0xe4], 0
jne 0x552f40
test byte [ebx + 0xec], 1
mov dword [ebx + 0xe8], 0
jne 0x552f10
test byte [ebx + 0xf0], 1
mov dword [ebx + 0xec], 0
jne 0x552ee0
test byte [ebx + 0xf4], 1
mov dword [ebx + 0xf0], 0
jne 0x552eb0
test byte [ebx + 0xf8], 1
mov dword [ebx + 0xf4], 0
jne 0x552e80
test byte [ebx + 0xfc], 1
mov dword [ebx + 0xf8], 0
jne 0x552e50
mov dword [ebx + 0xfc], 0
mov dword [esp + 8], 0x121
mov dword [esp + 4], str.crypto_err_err.c
mov dword [esp], ebx
call sym._CRYPTO_free
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0x9472cc
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
jmp sym._CRYPTO_THREAD_set_local
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x80]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x80], 0
jmp 0x552c8d
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xbc]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xbc], 0
jmp 0x552de2
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xb8]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xb8], 0
jmp 0x552dcf
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xb4]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xb4], 0
jmp 0x552db8
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xb0]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xb0], 0
jmp 0x552da1
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xac]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xac], 0
jmp 0x552d8a
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xa8]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xa8], 0
jmp 0x552d73
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xa4]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xa4], 0
jmp 0x552d5c
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0xa0]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0xa0], 0
jmp 0x552d45
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x9c]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x9c], 0
jmp 0x552d2e
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x98]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x98], 0
jmp 0x552d17
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x94]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x94], 0
jmp 0x552d00
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x90]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x90], 0
jmp 0x552ce9
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x8c]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x8c], 0
jmp 0x552cd2
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x88]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x88], 0
jmp 0x552cbb
mov dword [esp + 8], 0x11f
mov dword [esp + 4], str.crypto_err_err.c
mov eax, dword [ebx + 0x84]
mov dword [esp], eax
call sym._CRYPTO_free
mov dword [ebx + 0x84], 0
jmp 0x552ca4