Function at 0x4023d0
Capabilities:
Check mutex on windows
Extract resource via kernel32 functions
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x47cf5f
mov eax, dword fs:[0]
push eax
sub esp, 0x114
mov eax, dword [0x49f00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x68], 0
call fcn.0040dd40
call fcn.0040c040
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
test ebx, ebx
je 0x402495
call fcn.0040dd40
mov esi, eax
push esi
mov dword [ebp - 0x68], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [ebp - 4], 0
mov eax, dword [ebx]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], eax
call fcn.0040dd40
mov edi, eax
lea eax, [ebp - 0x4c]
push eax
lea ecx, [edi + 0x18]
call fcn.0040e3e0
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0x4c]
push eax
lea ecx, [edi + 0x18]
call fcn.0040e400
cmp byte [ebp - 0x48], 0
jne 0x402479
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 0x14]
cmp eax, dword [ebx]
jne 0x402483
inc dword [ebx + 8]
mov dword [ebx + 0xc], 0
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x402495
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x58
call fcn.00463051
mov esi, eax
mov dword [ebp - 0x48], esi
push 0x58
push 0
push esi
mov dword [ebp - 4], 1
call fcn.00465030
mov dword [esi + 0x10], 0x491e3c
mov dword [esi + 0x4c], vtable.nbase::SupportWeakCallback.0
mov dword [esi + 0x50], 0
mov dword [esi + 0x54], 0
add esp, 0xc
mov byte [ebp - 4], 2
mov ecx, esi
mov dword [ebp - 0x68], 1
push str.Global_Misc_Thread
call fcn.0040b810
mov eax, dword [esi + 0x10]
mov dword [esi], vtable.MiscThread.1.0
mov eax, dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov ebx, dword [ebp - 0x44]
mov dword [eax + esi + 0x10], vtable.MiscThread.0
mov dword [esi + 0x48], 2
mov ecx, dword [ebx + 0x48]
mov dword [ebx + 0x48], esi
test ecx, ecx
je 0x40252b
mov dword [ebp - 4], 3
mov eax, dword [ecx]
push 1
call dword [eax]
mov dword [ebp - 4], 0xffffffff
mov esi, dword [ebx + 0x48]
cmp dword [esi + 0x1c], 0
jne 0x40255c
mov ecx, esi
mov dword [esi + 0x18], 0
mov dword [esi + 0x28], 0
call fcn.00411b60
test al, al
je 0x40255c
push 0xffffffffffffffff
push dword [esi + 0x2c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov byte [esi + 0x14], 1
lea ecx, [ebp - 0x40]
call fcn.0040c740
push 0x489658
push 0x8e
push 0
mov dword [ebp - 4], 4
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov esi, eax
push esi
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push esi
push 0
mov edi, eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
cmp dword [0x4a3e38], 0
mov esi, eax
je 0x4025ad
call fcn.00430640
mov dword [0x4a3e38], 0
cmp dword [0x4a3d9c], 0x10
mov ecx, 0x4a3d88
mov edx, esi
cmovae ecx, dword [0x4a3d88]
push ecx
push ecx
mov ecx, edi
call fcn.00430410
add esp, 8
mov dword [0x4a3e38], eax
xor eax, eax
mov dword [ebp - 0x54], 0
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x50], 7
mov word [ebp - 0x64], ax
push 0xa
push str.langzh_CN
call fcn.00404890
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x80]
push 0xe
xor eax, eax
mov dword [ebp - 0x70], 0
push str.themesdefault
mov dword [ebp - 0x6c], 7
mov word [ebp - 0x80], ax
call fcn.00404890
mov byte [ebp - 4], 6
lea ecx, [ebp - 0xf8]
push 0xa
xor eax, eax
mov dword [ebp - 0xe8], 0
push str.resources_
mov dword [ebp - 0xe4], 7
mov word [ebp - 0xf8], ax
call fcn.00404890
mov dword [ebp - 0xfc], 0
lea eax, [ebp - 0x64]
mov byte [ebp - 4], 8
push eax
lea eax, [ebp - 0x80]
push eax
push ecx
lea edx, [ebp - 0x120]
lea ecx, [ebp - 0xf8]
call fcn.00413820
add esp, 0xc
mov byte [ebp - 4], 9
mov ecx, dword [ebp - 0xfc]
test ecx, ecx
je 0x40269d
mov edx, dword [ecx]
lea eax, [ebp - 0x120]
cmp ecx, eax
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0xe4]
cmp edx, 8
jb 0x4026e1
mov ecx, dword [ebp - 0xf8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4026d7
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e80
push edx
push ecx
call fcn.00463043
add esp, 8
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x6c]
cmp edx, 8
jb 0x40271f
mov ecx, dword [ebp - 0x80]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402715
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e85
push edx
push ecx
call fcn.00463043
add esp, 8
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x50]
cmp edx, 8
jb 0x40275d
mov ecx, dword [ebp - 0x64]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402753
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e8a
push edx
push ecx
call fcn.00463043
add esp, 8
call fcn.004013f0
add eax, 0xb0
cmp dword [eax + 0x14], 8
jb 0x40276f
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x28]
push str._sUninstall
push eax
call fcn.0040cd90
add esp, 0xc
mov byte [ebp - 4], 0xa
lea eax, [ebp - 0x28]
cmp dword [ebp - 0x14], 8
cmovae eax, dword [ebp - 0x28]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebx + 0x4c], eax
test eax, eax
je 0x402aff
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x402af3
xor eax, eax
mov dword [ebp - 0x44], ebx
push eax
push 0x489870
lea ecx, [ebp - 0xe0]
mov dword [ebp - 0xec], 0x403090
mov dword [ebp - 0xe8], 0
mov dword [ebp - 0xd0], 0
mov dword [ebp - 0xcc], 7
mov word [ebp - 0xe0], ax
call fcn.00404890
xor eax, eax
mov byte [ebp - 4], 0xb
push eax
push 0x489870
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xb4], 7
mov word [ebp - 0xc8], ax
call fcn.00404890
xor eax, eax
mov byte [ebp - 4], 0xc
push eax
push 0x489870
lea ecx, [ebp - 0xb0]
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x9c], 7
mov word [ebp - 0xb0], ax
call fcn.00404890
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0x98]
push 2
xor eax, eax
mov dword [ebp - 0x88], 0
push 0x4896cc
mov dword [ebp - 0x84], 7
mov word [ebp - 0x98], ax
call fcn.00404890
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x80]
push 0xa
xor eax, eax
mov dword [ebp - 0x70], 0
push 0x4896d4
mov dword [ebp - 0x6c], 7
mov word [ebp - 0x80], ax
call fcn.00404890
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x64]
push 2
xor eax, eax
mov dword [ebp - 0x54], 0
push 0x4896ec
mov dword [ebp - 0x50], 7
mov word [ebp - 0x64], ax
call fcn.00404890
sub esp, 0x28
mov byte [ebp - 4], 0x10
movq xmm0, qword [ebp - 0xec]
lea edx, [ebp - 0x44]
mov esi, esp
lea ecx, [ebp - 0x118]
sub esp, 0x10
mov dword [ebp - 0x48], esi
mov eax, esp
movq qword [eax], xmm0
mov dword [eax + 8], 0
call fcn.00403c90
add esp, 0x10
mov dword [esi + 0x24], 0
lea ecx, [ebp - 0x118]
mov byte [ebp - 4], 0x12
call fcn.004043b0
mov dword [esi + 0x24], eax
mov byte [ebp - 4], 0x13
mov ecx, dword [ebp - 0x114]
test ecx, ecx
je 0x40294c
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x40294c
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0xe0]
mov byte [ebp - 4], 0x10
push eax
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x98]
push eax
push 1
lea edx, [ebp - 0x80]
lea ecx, [ebp - 0x64]
call fcn.00409c80
mov edx, dword [ebp - 0x50]
add esp, 0x3c
cmp edx, 8
jb 0x4029b6
mov ecx, dword [ebp - 0x64]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4029ac
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e8f
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x6c]
cmp edx, 8
jb 0x4029f0
mov ecx, dword [ebp - 0x80]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4029e6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e94
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x84]
cmp edx, 8
jb 0x402a30
mov ecx, dword [ebp - 0x98]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402a26
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e99
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x9c]
cmp edx, 8
jb 0x402a70
mov ecx, dword [ebp - 0xb0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402a66
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e9e
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0xb4]
cmp edx, 8
jb 0x402ab0
mov ecx, dword [ebp - 0xc8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402aa6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402ea3
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0xcc]
cmp edx, 8
jb 0x402de0
mov ecx, dword [ebp - 0xe0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402dd6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402ea8
jmp 0x402dd6
mov ecx, ebx
call fcn.004037f0
jmp 0x402de0
push 4
xor eax, eax
mov dword [ebp - 0x44], ebx
push 0x4896f4
lea ecx, [ebp - 0x64]
mov dword [ebp - 0xec], 0x403090
mov dword [ebp - 0xe8], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 7
mov word [ebp - 0x64], ax
call fcn.00404890
xor eax, eax
mov byte [ebp - 4], 0x14
push eax
push 0x489870
lea ecx, [ebp - 0x98]
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x84], 7
mov word [ebp - 0x98], ax
call fcn.00404890
mov byte [ebp - 4], 0x15
lea ecx, [ebp - 0xb0]
push 2
xor eax, eax
mov dword [ebp - 0xa0], 0
push 0x4896cc
mov dword [ebp - 0x9c], 7
mov word [ebp - 0xb0], ax
call fcn.00404890
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0xc8]
push 0x14
xor eax, eax
mov dword [ebp - 0xb8], 0
push 0x489700
mov dword [ebp - 0xb4], 7
mov word [ebp - 0xc8], ax
call fcn.00404890
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0xe0]
push 2
xor eax, eax
mov dword [ebp - 0xd0], 0
push 0x4896ec
mov dword [ebp - 0xcc], 7
mov word [ebp - 0xe0], ax
call fcn.00404890
sub esp, 0x28
mov byte [ebp - 4], 0x18
movq xmm0, qword [ebp - 0xec]
lea edx, [ebp - 0x44]
mov esi, esp
lea ecx, [ebp - 0x118]
sub esp, 0x10
mov dword [ebp - 0x48], esi
mov eax, esp
movq qword [eax], xmm0
mov dword [eax + 8], 0
call fcn.00403c90
add esp, 0x10
mov dword [esi + 0x24], 0
lea ecx, [ebp - 0x118]
mov byte [ebp - 4], 0x1a
call fcn.004043b0
mov dword [esi + 0x24], eax
mov byte [ebp - 4], 0x1b
mov ecx, dword [ebp - 0x114]
test ecx, ecx
je 0x402c6f
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x402c6f
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x18
call fcn.004013f0
add eax, 0x12c
lea edx, [ebp - 0xc8]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0xb0]
push eax
push 5
lea ecx, [ebp - 0xe0]
call fcn.00409c80
mov edx, dword [ebp - 0xcc]
add esp, 0x3c
cmp edx, 8
jb 0x402ce6
mov ecx, dword [ebp - 0xe0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402cdc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402ead
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0xb4]
cmp edx, 8
jb 0x402d26
mov ecx, dword [ebp - 0xc8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402d1c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402eb2
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x9c]
cmp edx, 8
jb 0x402d66
mov ecx, dword [ebp - 0xb0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402d5c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402eb7
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x84]
cmp edx, 8
jb 0x402da6
mov ecx, dword [ebp - 0x98]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402d9c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402ebc
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x50]
cmp edx, 8
jb 0x402de0
mov ecx, dword [ebp - 0x64]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402dd6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402ec1
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x402e1a
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402e10
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402ec6
push edx
push ecx
call fcn.00463043
add esp, 8
mov edx, dword [ebp - 0x2c]
xor eax, eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x402e64
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402e5a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402ecb
push edx
push ecx
call fcn.00463043
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00462ae1
mov esp, ebp
pop ebp
ret
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
call fcn.00466e0f
int3