Function at 0x402904
Capabilities:
Allocate thread local storage
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
push ebx
push edi
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push eax
mov edx, dword [esp + 0x34]
lea ecx, [esp]
call fcn.0040d000
mov dword [0x41f001], 0x20005bf
mov dword [0x41f001], 0x20005c1
mov ebx, dword [0x43c8f0]
and ebx, ebx
je 0x402946
mov ebx, dword [0x43c8f0]
cmp ebx, 0xffffffff
je 0x402946
jmp 0x40294d
mov eax, 1
jmp 0x40294f
xor eax, eax
and eax, eax
je 0x402967
mov dword [0x41f001], 0x20005c3
call sub.KERNEL32.dll_TlsAlloc
mov dword [0x43c8f0], eax
mov dword [0x41f001], 0x20005c4
mov dword [0x41f001], 0x20005c5
mov ebx, dword [0x43c8f0]
cmp ebx, 0xffffffff
je 0x4029b2
mov ebx, dword [esp + 0x2c]
cmp ebx, 0xffffffff
je 0x4029b2
mov ebx, dword [esp + 0x2c]
cmp ebx, 0x80020009
jne 0x4029aa
mov ebx, dword [esp + 0x30]
and ebx, ebx
jne 0x4029aa
mov eax, 1
jmp 0x4029ac
xor eax, eax
and eax, eax
jne 0x4029b2
jmp 0x4029b9
mov eax, 1
jmp 0x4029bb
xor eax, eax
and eax, eax
je 0x4029ce
mov dword [0x41f001], 0x20005c6
jmp 0x4034a9
mov dword [0x41f001], 0x20005c7
mov dword [0x41f001], 0x20005c9
push dword [0x43c8f0]
call sub.KERNEL32.dll_TlsGetValue
mov dword [esp + 4], eax
mov dword [0x41f001], 0x20005ca
mov ebx, dword [esp + 4]
and ebx, ebx
jne 0x402b88
mov dword [0x41f001], 0x20005cc
push 8
call fcn.0041be90
mov dword [esp + 4], eax
mov dword [0x41f001], 0x20005cd
cmp dword [esp + 4], 0
je 0x402b7e
mov dword [0x41f001], 0x20005ce
push dword [esp + 4]
push dword [0x43c8f0]
call sub.KERNEL32.dll_TlsSetValue
and eax, eax
je 0x402b45
mov dword [0x41f001], 0x20005d0
mov ebx, dword [0x43c900]
inc ebx
shl ebx, 2
push ebx
push dword [0x43c8c8]
call fcn.0041c010
mov dword [esp + 8], eax
mov dword [0x41f001], 0x20005d1
cmp dword [esp + 8], 0
je 0x402ae6
mov dword [0x41f001], 0x20005d2
push dword [esp + 8]
pop eax
mov dword [0x43c8c8], eax
mov dword [0x41f001], 0x20005d3
push dword [esp + 4]
mov ebx, dword [0x43c8c8]
mov edi, dword [0x43c900]
shl edi, 2
add ebx, edi
push ebx
call fcn.0041c050
mov dword [0x41f001], 0x20005d4
mov ebx, dword [0x43c900]
inc ebx
mov dword [0x43c900], ebx
mov dword [0x41f001], 0x20005d5
jmp 0x402b2f
mov dword [0x41f001], 0x20005d5
mov dword [0x41f001], 0x20005d6
push 0
push dword [0x43c8f0]
call sub.KERNEL32.dll_TlsSetValue
mov dword [0x41f001], 0x20005d7
push dword [esp + 4]
call fcn.0041beb0
mov dword [0x41f001], 0x20005d8
mov dword [esp + 4], 0
mov dword [0x41f001], 0x20005d9
mov dword [0x41f001], 0x20005da
jmp 0x402b74
mov dword [0x41f001], 0x20005da
mov dword [0x41f001], 0x20005db
push dword [esp + 4]
call fcn.0041beb0
mov dword [0x41f001], 0x20005dc
mov dword [esp + 4], 0
mov dword [0x41f001], 0x20005dd
mov dword [0x41f001], 0x20005de
mov dword [0x41f001], 0x20005df
mov dword [0x41f001], 0x20005e0
cmp dword [esp + 4], 0
je 0x403493
mov dword [0x41f001], 0x20005e1
push dword [esp + 0x2c]
mov ebp, dword [esp + 8]
pop eax
mov dword [ebp], eax
mov dword [0x41f001], 0x20005e2
push dword [esp + 0x2c]
mov dword [0x41f001], 0x20005e3
xor ebx, ebx
cmp ebx, dword [esp]
jne 0x402c06
mov dword [0x41f001], 0x20005e4
mov ebp, dword [esp + 8]
mov edx, str.Okay.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005e5
jmp 0x403488
mov dword [0x41f001], 0x20005e5
mov ebx, 1
cmp ebx, dword [esp]
jne 0x402cbc
mov dword [0x41f001], 0x20005e6
mov edx, dword [esp + 4]
xor ecx, ecx
call fcn.0040d120
jne 0x402c7e
mov dword [0x41f001], 0x20005e7
push dword [0x43cf64]
mov edx, str.The_operation_completed__but_was_only_partially_successful.__
push edx
call fcn.0041cbe0
mov edx, dword [esp + 8]
push edx
call fcn.0041cbe0
mov edx, 0x41f28a
push edx
call fcn.0041cbe0
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 4]
push eax
call fcn.0041cc40
mov dword [0x41f001], 0x20005e8
jmp 0x402ca3
mov dword [0x41f001], 0x20005e8
mov dword [0x41f001], 0x20005e9
mov ebp, dword [esp + 8]
mov edx, str.The_operation_completed__but_was_only_partially_successful.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005ea
mov dword [0x41f001], 0x20005eb
jmp 0x403488
mov dword [0x41f001], 0x20005eb
mov ebx, 0x80004005
cmp ebx, dword [esp]
jne 0x402cfa
mov dword [0x41f001], 0x20005ec
mov ebp, dword [esp + 8]
mov edx, str.Unspecified_error.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005ed
jmp 0x403488
mov dword [0x41f001], 0x20005ed
mov ebx, 0x80070057
cmp ebx, dword [esp]
jne 0x402d38
mov dword [0x41f001], 0x20005ee
mov ebp, dword [esp + 8]
mov edx, str.One_or_more_arguments_are_invalid._Possibly_a_numerical_overflow_or_too_many_nested_objects___if_so__try_splitting_your_method_call_into_two_or_more_subcalls.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005ef
jmp 0x403488
mov dword [0x41f001], 0x20005ef
mov ebx, 0x80004002
cmp ebx, dword [esp]
jne 0x402d76
mov dword [0x41f001], 0x20005f0
mov ebp, dword [esp + 8]
mov edx, str.Method_is_not_implemented.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005f1
jmp 0x403488
mov dword [0x41f001], 0x20005f1
mov ebx, 0x8007000e
cmp ebx, dword [esp]
jne 0x402de8
mov dword [0x41f001], 0x20005f2
push dword [0x43cf64]
mov edx, str.Problem_allocating_memory._r_n_r_n_Possibly_too_many_method_arguments._Each_method_property_is_limited_by_COMatePLUS_to_a_maximum_of
push edx
call fcn.0041cbe0
push dword [0x43cf64]
push dword [0x43cf64]
push 0
push 0x14
call fcn.0041b4a0
pop eax
mov edx, str._arguments._
push edx
call fcn.0041cbe0
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 4]
push eax
call fcn.0041cc40
mov dword [0x41f001], 0x20005f3
jmp 0x403488
mov dword [0x41f001], 0x20005f3
mov ebx, 0x8000ffff
cmp ebx, dword [esp]
jne 0x402e26
mov dword [0x41f001], 0x20005f4
mov ebp, dword [esp + 8]
mov edx, str.An_unexpected_error.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005f5
jmp 0x403488
mov dword [0x41f001], 0x20005f5
mov ebx, 0x80004003
cmp ebx, dword [esp]
jne 0x402e64
mov dword [0x41f001], 0x20005f6
mov ebp, dword [esp + 8]
mov edx, str.An_invalid_pointer_was_supplied.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005f7
jmp 0x403488
mov dword [0x41f001], 0x20005f7
mov ebx, 0x80004001
cmp ebx, dword [esp]
jne 0x402ea2
mov dword [0x41f001], 0x20005f8
mov ebp, dword [esp + 8]
mov edx, str.Not_implemented._In_the_case_of_attaching_an_event_handler_to_a_COM_object__this_could_signify_that_the_object_does_not_provide_any_type_information.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005f9
jmp 0x403488
mov dword [0x41f001], 0x20005f9
mov ebx, 0x800401f3
cmp ebx, dword [esp]
je 0x402ec0
mov ebx, 0x80040154
cmp ebx, dword [esp]
jne 0x402eea
mov dword [0x41f001], 0x20005fa
mov ebp, dword [esp + 8]
mov edx, str.Invalid_progID_CLSID._Check_your_spelling_of_the_programmatic_identifier._Also_check_that_the_component___ActiveX_control_has_been_registered.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005fb
jmp 0x403488
mov dword [0x41f001], 0x20005fb
mov ebx, 0x80080005
cmp ebx, dword [esp]
jne 0x402f28
mov dword [0x41f001], 0x20005fc
mov ebp, dword [esp + 8]
mov edx, str.Server_execution_failed._Usually_caused_by_an_out_of_process_server_timing_out_when_asked_to_create_an_instance_of_a_class_factory.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005fd
jmp 0x403488
mov dword [0x41f001], 0x20005fd
mov ebx, 0x80020005
cmp ebx, dword [esp]
jne 0x402f66
mov dword [0x41f001], 0x20005fe
mov ebp, dword [esp + 8]
mov edx, str.Type_mismatch_in_the_method_parameters.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x20005ff
jmp 0x403488
mov dword [0x41f001], 0x20005ff
mov ebx, 0x8002802b
cmp ebx, dword [esp]
jne 0x402fa4
mov dword [0x41f001], 0x2000600
mov ebp, dword [esp + 8]
mov edx, str.No_type_description_was_found_in_the_library_with_the_specified_GUID_whilst_trying_to_create_an_event_handler.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000601
jmp 0x403488
mov dword [0x41f001], 0x2000601
mov ebx, 0x80040201
cmp ebx, dword [esp]
jne 0x402fe2
mov dword [0x41f001], 0x2000602
mov ebp, dword [esp + 8]
mov edx, str.Unable_to_set_event_handler_because_the_connection_point_has_already_reached_its_limit_of_connections.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000603
jmp 0x403488
mov dword [0x41f001], 0x2000603
mov ebx, 0x80040110
cmp ebx, dword [esp]
jne 0x403020
mov dword [0x41f001], 0x2000604
mov ebp, dword [esp + 8]
mov edx, str.Class_does_not_support_aggregation__or_class_object_is_remote_.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000605
jmp 0x403488
mov dword [0x41f001], 0x2000605
mov ebx, 0x8002000a
cmp ebx, dword [esp]
jne 0x40305e
mov dword [0x41f001], 0x2000606
mov ebp, dword [esp + 8]
mov edx, str.Overflow_error_whilst_converting_between_types.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000607
jmp 0x403488
mov dword [0x41f001], 0x2000607
mov ebx, 0x80020006
cmp ebx, dword [esp]
jne 0x40309c
mov dword [0x41f001], 0x2000608
mov ebp, dword [esp + 8]
mov edx, str.Method_property_not_supported_by_this_object.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000609
jmp 0x403488
mov dword [0x41f001], 0x2000609
mov ebx, 0x8002000e
cmp ebx, dword [esp]
jne 0x4030da
mov dword [0x41f001], 0x200060a
mov ebp, dword [esp + 8]
mov edx, str.Invalid_number_of_method_property_parameters.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x200060b
jmp 0x403488
mov dword [0x41f001], 0x200060b
mov ebx, 0x80020008
cmp ebx, dword [esp]
jne 0x403118
mov dword [0x41f001], 0x200060c
mov ebp, dword [esp + 8]
mov edx, str.A_method_property_parameter_is_not_a_valid__variant__type.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x200060d
jmp 0x403488
mov dword [0x41f001], 0x200060d
mov ebx, 0x80020003
cmp ebx, dword [esp]
jne 0x403156
mov dword [0x41f001], 0x200060e
mov ebp, dword [esp + 8]
mov edx, 0x41f14c
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x200060f
jmp 0x403488
mov dword [0x41f001], 0x200060f
mov ebx, 0x80020011
cmp ebx, dword [esp]
jne 0x403194
mov dword [0x41f001], 0x2000610
mov ebp, dword [esp + 8]
mov edx, str.Does_not_support_a_collection.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000611
jmp 0x403488
mov dword [0x41f001], 0x2000611
mov ebx, 0x80070005
cmp ebx, dword [esp]
jne 0x4031d2
mov dword [0x41f001], 0x2000612
mov ebp, dword [esp + 8]
mov edx, str.A_general_access_denied_error.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000613
jmp 0x403488
mov dword [0x41f001], 0x2000613
mov ebx, 0x8001010e
cmp ebx, dword [esp]
jne 0x403210
mov dword [0x41f001], 0x2000614
mov ebp, dword [esp + 8]
mov edx, str.The_application_called_upon_an_interface_that_was_marshalled_for_a_different_thread.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000615
jmp 0x403488
mov dword [0x41f001], 0x2000615
mov ebx, 0x80020009
cmp ebx, dword [esp]
jne 0x40329d
mov dword [0x41f001], 0x2000616
mov edx, dword [esp + 4]
push dword [0x43cf64]
push edx
call fcn.0041cbe0
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 4]
push eax
call fcn.0041cc40
mov dword [0x41f001], 0x2000617
mov ebp, dword [esp + 8]
push dword [ebp + 4]
mov edx, 0x41f11c
pop ecx
call fcn.0040d120
je 0x403284
mov dword [0x41f001], 0x2000618
mov ebp, dword [esp + 8]
mov edx, str.An_exception_occurred_during_the_execution_of_this_method_property.
lea ecx, [ebp + 4]
call fcn.0040d008
mov dword [0x41f001], 0x2000619
mov dword [0x41f001], 0x200061a
jmp 0x403488
mov dword [0x41f001], 0x200061a
mov dword [0x41f001], 0x200061c
mov ebp, dword [esp + 8]
mov ebx, dword [ebp]
and ebx, 0x7fff0000
cmp ebx, 0x70000
jne 0x403420
mov dword [0x41f001], 0x200061d
mov ebp, dword [esp + 8]
mov ebx, dword [ebp]
and ebx, 0xffff
mov dword [esp + 0x10], ebx
mov dword [0x41f001], 0x200061e
push 0
push 0
lea eax, [esp + 0x20]
push eax
push 0
push dword [esp + 0x20]
push 0
push 0x1100
call sub.KERNEL32.dll_FormatMessageW
mov dword [esp + 0x14], eax
mov dword [0x41f001], 0x200061f
cmp dword [esp + 0x14], 0
je 0x4033b4
mov dword [0x41f001], 0x2000620
push dword [0x43cf64]
mov edx, str._FACILITY_WIN32_error
push edx
call fcn.0041cbe0
push dword [0x43cf64]
push dword [0x43cf64]
mov eax, dword [esp + 0x1c]
cdq
push edx
push eax
call fcn.0041b4a0
pop eax
mov edx, 0x41fcd6
push edx
call fcn.0041cbe0
push dword [0x43cf64]
push dword [0x43cf64]
push dword [esp + 0x20]
push dword [esp + 0x28]
call fcn.0041c060
pop eax
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 4]
push eax
call fcn.0041cc40
mov dword [0x41f001], 0x2000621
push dword [esp + 0x18]
call sub.KERNEL32.dll_LocalFree
mov dword [0x41f001], 0x2000622
jmp 0x40340a
mov dword [0x41f001], 0x2000622
mov dword [0x41f001], 0x2000623
push dword [0x43cf64]
mov edx, str._FACILITY_WIN32_error
push edx
call fcn.0041cbe0
push dword [0x43cf64]
push dword [0x43cf64]
mov eax, dword [esp + 0x1c]
cdq
push edx
push eax
call fcn.0041b4a0
pop eax
mov edx, str.__Unable_to_retrieve_error_description_from_system_
push edx
call fcn.0041cbe0
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 4]
push eax
call fcn.0041cc40
mov dword [0x41f001], 0x2000624
mov dword [0x41f001], 0x2000625
jmp 0x40347e
mov dword [0x41f001], 0x2000625
mov dword [0x41f001], 0x2000626
push dword [0x43cf64]
mov edx, str.Unknown_error.__Code_:_Hex
push edx
call fcn.0041cbe0
push dword [0x43cf64]
push dword [0x43cf64]
push 5
mov ebp, dword [esp + 0x18]
mov eax, dword [ebp]
cdq
push edx
push eax
call fcn.0041b600
pop eax
mov edx, str._._Please_report_this_error_code_to_the_author_at_enquiries_nxsoftware.com
push edx
call fcn.0041cbe0
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 4]
push eax
call fcn.0041cc40
mov dword [0x41f001], 0x2000627
mov dword [0x41f001], 0x2000628
pop eax
mov dword [0x41f001], 0x2000629
mov dword [0x41f001], 0x200062a
xor eax, eax
push dword [esp]
call fcn.0041cbb0
add esp, 0x18
pop edi
pop ebx
pop ebp
ret 0x10