Function at 0x10015f30
Capabilities:
Get thread local storage value

Disassembly:
push 0xffffffffffffffff
push 0x1002bc34
mov eax, dword fs:[0]
push eax
sub esp, 0x8c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1004f970]
xor eax, esp
push eax
lea eax, [esp + 0xa0]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [esi + 0x3c]
mov edx, dword [eax + 8]
lea edi, [esi + 0x3c]
mov ecx, edi
mov dword [esp + 0x1c], edi
call edx
test al, al
jne 0x10015f94
mov ecx, esi
call sym.log4cplusU.dll_protected:_void___thiscall_log4cplus::Log4jUdpAppender::openSocket_void_
mov eax, dword [edi]
mov edx, dword [eax + 8]
mov ecx, edi
call edx
test al, al
jne 0x10015f94
push 0
push str.Log4jUdpAppender::append____Cannot_connect_to_server
jmp 0x10016252
mov edi, dword [esp + 0xb0]
push edi
mov ecx, esi
call sym.log4cplusU.dll_protected:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_log4cplus::Appender::formatEvent_class_log4cplus::spi::InternalLoggingEvent_const__const
mov dword [esp + 0x24], eax
mov eax, dword [0x1004f9b0]
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
jne 0x10015fbc
call fcn.100117b0
lea ebp, [eax + 0x23c]
push ebp
call sym.log4cplusU.dll_void___cdecl_log4cplus::detail::clear_tostringstream_class_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t____
add esp, 4
push str._s_q
lea ecx, [esp + 0x34]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
push 0
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x70]
push edx
lea ecx, [edi + 0xb8]
mov dword [esp + 0xb4], 0
call sym.log4cplusU.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____thiscall_log4cplus::helpers::Time::getFormattedTime_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___bool_
mov dword [esp + 0x18], eax
cmp byte [edi + 0x106], 0
mov eax, dword [edi + 0x100]
mov bl, 1
lea ecx, [edi + 0xe4]
lea edx, [edi + 0xc8]
mov byte [esp + 0xa8], bl
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
jne 0x1001604c
call sym.log4cplusU.dll_class_log4cplus::NDC____cdecl_log4cplus::getNDC_void_
mov ecx, eax
call sym.log4cplusU.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const____thiscall_log4cplus::NDC::get_void_const
push eax
lea ecx, [edi + 0x44]
call dword [0x1002f140]
mov byte [edi + 0x106], bl
cmp byte [edi + 0x104], 0
lea eax, [edi + 0x44]
mov dword [esp + 0x20], eax
jne 0x10016074
call sym.log4cplusU.dll_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const____cdecl_log4cplus::thread::getCurrentThreadName_void_
push eax
lea ecx, [edi + 0x80]
call dword [0x1002f140]
mov byte [edi + 0x104], bl
mov eax, dword [edi + 0x40]
push eax
call sym.log4cplusU.dll_class_log4cplus::LogLevelManager____cdecl_log4cplus::getLogLevelManager_void_
mov ecx, eax
call sym.log4cplusU.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const____thiscall_log4cplus::LogLevelManager::toString_int_const
push str._log4j:event_logger_
push ebp
mov ebx, eax
call fcn.1000e5c0
mov esi, eax
lea eax, [edi + 0x24]
push eax
call fcn.10015ca0
push str.__level_
push esi
call fcn.1000e5c0
mov esi, eax
push ebx
call fcn.10015ca0
mov ecx, dword [esp + 0x30]
add esp, 0x18
push str._log4j:message_
push 0x10031930
sub edi, 0xffffff80
push edi
push str.__thread_
push ecx
push str.__timestamp_
push esi
call fcn.1000e5c0
mov esi, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______cdecl_std::operator___wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t_____class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__]
add esp, 8
push eax
call esi
add esp, 8
push eax
call fcn.1000e5c0
add esp, 8
push eax
call esi
add esp, 8
push eax
call fcn.1000e5c0
add esp, 8
push eax
call fcn.1000e5c0
mov edx, dword [esp + 0x2c]
mov esi, eax
push edx
call fcn.10015ca0
add esp, 0xc
push str._log4j:NDC_
push str.__log4j:message_
push esi
call fcn.1000e5c0
add esp, 8
push eax
call fcn.1000e5c0
mov esi, eax
mov eax, dword [esp + 0x28]
push eax
call fcn.10015ca0
add esp, 0xc
push str._log4j:locationInfo_class___file_
push str.__log4j:NDC_
push esi
call fcn.1000e5c0
add esp, 8
push eax
call fcn.1000e5c0
mov ecx, dword [esp + 0x34]
mov esi, eax
push ecx
call fcn.10015ca0
push str.__method_
push esi
call fcn.1000e5c0
mov edx, dword [esp + 0x3c]
mov esi, eax
push edx
call fcn.10015ca0
mov eax, dword [esp + 0x2c]
add esp, 0x18
push str.__log4j:event_
push 0x1003181c
push eax
push str.__line_
push esi
call fcn.1000e5c0
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______thiscall_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___int_]
push eax
call fcn.1000e5c0
add esp, 8
push eax
call fcn.1000e5c0
add esp, 8
lea ecx, [esp + 0x68]
mov byte [esp + 0xa8], 0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
or edi, 0xffffffff
lea ecx, [esp + 0x30]
mov dword [esp + 0xa8], edi
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x84]
push ecx
mov ecx, ebp
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____thiscall_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::str_void_]
push eax
lea edx, [esp + 0x50]
mov ebx, 2
push edx
mov dword [esp + 0xb0], ebx
call sym.log4cplusU.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_log4cplus::helpers::tostring_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__
add esp, 8
lea esi, [ebp + 0x9c]
push esi
mov ecx, eax
mov byte [esp + 0xac], 3
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::swap_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char____]
lea ecx, [esp + 0x4c]
mov byte [esp + 0xa8], bl
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x84]
mov dword [esp + 0xa8], edi
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x18]
push esi
call edx
test al, al
jne 0x1001625e
push 0
push str.Log4jUdpAppender::append____Cannot_write_to_server
call sym.log4cplusU.dll_class_log4cplus::helpers::LogLog____cdecl_log4cplus::helpers::getLogLog_void_
mov ecx, eax
call sym.log4cplusU.dll_public:_void___thiscall_log4cplus::helpers::LogLog::error_wchar_t_const___bool_const
mov ecx, dword [esp + 0xa0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret 4