joyce8/EMBER2024-capa huggingface dataset:
Function at 0x528620
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
sub esp, 8
push ebp
mov ebp, dword [esp + 0x10]
add ebp, 0x17c
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x5286c1
push ebx
push edi
nop dword [eax]
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x5286ba
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528678
mov dword [edi], str.TtpostIntCb
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x20]
push dword [esp + 0x20]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 4]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x5286ba
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x528640
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
add esp, 8
ret

Function at 0x5286d0
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
sub esp, 8
push ebp
mov ebp, dword [esp + 0x10]
add ebp, 0x188
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x528771
push ebx
push edi
nop dword [eax]
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x52876a
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528728
mov dword [edi], str.TtpostCollCb
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x20]
push dword [esp + 0x20]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 4]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x52876a
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x5286f0
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
add esp, 8
ret
Function at 0x528bc0
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ecx
push ebp
mov ebp, dword [esp + 0xc]
add ebp, 0x194
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x528c61
push ebx
push edi
nop dword [eax + eax]
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x528c5a
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528c18
mov dword [edi], str.TtpostIntCb
rdtsc
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x20]
push dword [esp + 0x20]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 4]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528c5a
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x528be0
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
pop ecx
ret

Function at 0x528c70
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ecx
push ebp
mov ebp, dword [esp + 0xc]
add ebp, 0x1a0
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x528d11
push ebx
push edi
nop dword [eax + eax]
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x528d0a
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528cc8
mov dword [edi], str.TtpostCollCb
rdtsc
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x20]
push dword [esp + 0x20]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 4]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528d0a
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x528c90
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
pop ecx
ret
Function at 0x528d20
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
sub esp, 8
push ebp
mov ebp, dword [esp + 0x10]
add ebp, 0x158
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x528dbd
push ebx
push edi
nop dword [eax]
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x528db6
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528d78
mov dword [edi], str.TtworldDelCb
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x1c]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 4]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528db6
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x528d40
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
add esp, 8
ret

Function at 0x528dd0
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
sub esp, 8
push ebp
mov ebp, dword [esp + 0x10]
add ebp, 0x158
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x528e6d
push ebx
push edi
nop dword [eax]
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x528e66
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528e28
mov dword [edi], str.TtworldDelCb
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x1c]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528e66
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x528df0
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
add esp, 8
ret
Function at 0x528e80
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ecx
push ebp
mov ebp, dword [esp + 0xc]
add ebp, 0x170
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x528f14
push ebx
push edi
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x528f0d
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528ecf
mov dword [edi], str.TtentMvdCb
rdtsc
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x1c]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528f0d
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x528e97
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
pop ecx
ret

Function at 0x528f30
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ecx
push ebp
mov ebp, dword [esp + 0xc]
add ebp, 0x1b8
push esi
mov esi, dword [ebp + 4]
sub esi, 1
js 0x528fd1
push ebx
push edi
nop dword [eax + eax]
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x528fca
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528f88
mov dword [edi], str.TtimpLimitCb
rdtsc
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x20]
push dword [esp + 0x20]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 4]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x528fca
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x528f50
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
pop ecx
ret
Function at 0x528fe0
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ecx
mov eax, dword [esp + 0xc]
push ebp
mov ebp, dword [esp + 0xc]
add ebp, 0x1ac
push esi
mov dword [eax + 0xc], 0
mov esi, dword [ebp + 4]
sub esi, 1
js 0x52907f
push ebx
push edi
mov eax, dword [ebp]
cmp dword [eax + esi*4], 0
je 0x529078
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x52903a
mov dword [edi], str.TtcpAddCb
rdtsc
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [ebp]
push dword [esp + 0x1c]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 0x10]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
mov edi, dword [ebx + 4]
cmp edi, dword [ebx + 0xc]
jae 0x529078
mov dword [edi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov dword [ebx + 4], eax
sub esi, 1
jns 0x529002
pop edi
pop ebx
push ebp
call fcn.005291f0
add esp, 4
pop esi
pop ebp
pop ecx
ret
Function at 0x529240
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x48
mov eax, dword [ebp + 0xc]
push esi
push edi
mov dword [esp + 0x18], eax
cmp dword [eax + 0x10], 0
je 0x5293c2
mov edi, dword [ebp + 8]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], connect
mov esi, dword [edi + 0x348]
mov dword [esp + 0x2c], esi
test esi, esi
je 0x5292cb
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
lea edx, [esi*8 + 0x7f]
and edx, 0xffffff80
mov eax, dword [ecx + 0xc]
lea edi, [eax + edx]
mov dword [esp + 0x14], edi
mov edi, dword [ebp + 8]
cmp edx, dword [ecx + 8]
jg 0x5292c3
lea edi, [eax + edx]
cmp edi, dword [ecx + 0x10]
mov edi, dword [ebp + 8]
ja 0x5292c3
mov edx, dword [esp + 0x14]
mov dword [ecx + 0xc], edx
jmp 0x5292cd
push edx
call fcn.0046a3c0
jmp 0x5292cd
xor eax, eax
mov dword [esp + 0x1c], eax
or esi, 0x80000000
mov dword [esp + 0x28], eax
lea eax, [ebp + 0xc]
push 1
push eax
push dword [edi + 0x78]
mov dword [esp + 0x30], esi
call fcn.005269a0
mov eax, dword [ebp + 0xc]
add esp, 0xc
mov ecx, dword [edi + 0x58]
movups xmm0, xmmword [eax + 0x30]
movups xmmword [esp + 0x30], xmm0
movups xmm0, xmmword [eax + 0x40]
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0x20]
movups xmmword [esp + 0x48], xmm0
mov edx, dword [ecx]
add eax, 0x24
push eax
call dword [edx + 0x18]
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x529347
mov ecx, dword [edi + 0x7c]
test ecx, ecx
je 0x529333
add ecx, 8
jmp 0x529335
xor ecx, ecx
push ecx
mov ecx, dword [edi + 0x64]
push eax
push dword [esp + 0x24]
call fcn.006af2d0
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
xor ecx, ecx
cmp edi, dword [esp + 0x1c]
push dword [0x884adc]
cmove eax, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
lea esi, [eax*8 + 0x7f]
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x52938f
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x52938f
cmp dword [eax + 0x14], edi
je 0x52938f
mov dword [eax + 0xc], edi
jmp 0x529398
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], 0
test eax, eax
js 0x5293c2
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 3
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x20]
call dword [eax + 0x10]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
Function at 0x5293d0
Capabilities:
Get thread local storage value

Disassembly:
sub esp, 0x14
push ebx
mov ebx, dword [esp + 0x20]
cmp dword [ebx + 0x10], 0
je 0x52951c
push ebp
push esi
mov esi, dword [esp + 0x24]
lea edx, [esp + 0x28]
push edi
push 1
push esi
mov ecx, dword [esi + 8]
push 1
push edx
mov eax, dword [ecx]
call dword [eax + 0x30]
mov edi, dword [esi + 0x348]
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], connect
mov dword [esp + 0x20], edi
test edi, edi
je 0x529464
push dword [0x884adc]
call ebp
mov ecx, eax
lea edx, [edi*8 + 0x7f]
and edx, 0xffffff80
mov eax, dword [ecx + 0xc]
lea ebp, [eax + edx]
cmp edx, dword [ecx + 8]
jg 0x529456
cmp ebp, dword [ecx + 0x10]
ja 0x529456
mov dword [ecx + 0xc], ebp
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
jmp 0x529466
push edx
call fcn.0046a3c0
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
jmp 0x529466
xor eax, eax
mov ecx, dword [esi + 0x58]
or edi, 0x80000000
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x10]
mov dword [esp + 0x18], edi
mov edx, dword [ecx]
push eax
lea eax, [ebx + 0x24]
push eax
call dword [edx + 0x20]
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x5294a2
mov ecx, dword [esi + 0x64]
push eax
push dword [esp + 0x14]
call fcn.006af340
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
xor ecx, ecx
cmp edi, dword [esp + 0x10]
push dword [0x884adc]
cmove eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
lea esi, [eax*8 + 0x7f]
and esi, 0xffffff80
call ebp
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x5294e6
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x5294e6
cmp dword [eax + 0x14], edi
je 0x5294e6
mov dword [eax + 0xc], edi
jmp 0x5294ef
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], 0
pop edi
pop esi
pop ebp
test eax, eax
js 0x52951c
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 3
push eax
mov eax, dword [0x7d8954]
push dword [esp + 8]
call dword [eax + 0x10]
pop ebx
add esp, 0x14
ret
Function at 0x5298f0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x38
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], connect
mov esi, dword [edi + 0x348]
mov dword [esp + 0x1c], esi
test esi, esi
je 0x52996a
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
lea edx, [esi*8 + 0x7f]
and edx, 0xffffff80
mov eax, dword [ecx + 0xc]
lea edi, [eax + edx]
mov dword [esp + 8], edi
mov edi, dword [ebp + 8]
cmp edx, dword [ecx + 8]
jg 0x529962
lea edi, [eax + edx]
cmp edi, dword [ecx + 0x10]
mov edi, dword [ebp + 8]
ja 0x529962
mov edx, dword [esp + 8]
mov dword [ecx + 0xc], edx
jmp 0x52996c
push edx
call fcn.0046a3c0
jmp 0x52996c
xor eax, eax
or esi, 0x80000000
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], esi
lea ecx, [esp + 0x20]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
push ecx
mov ecx, esi
mov eax, dword [esi]
call dword [eax + 0x1c]
mov ecx, dword [edi + 0x58]
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x24]
push eax
mov edx, dword [ecx]
lea eax, [esi + 0x24]
push eax
call dword [edx + 0x14]
lea eax, [esp + 0x20]
mov ecx, esi
push eax
call fcn.0051ef30
mov eax, dword [esp + 0x10]
test eax, eax
je 0x5299d7
mov ecx, dword [edi + 0x7c]
test ecx, ecx
je 0x5299c3
add ecx, 8
jmp 0x5299c5
xor ecx, ecx
push ecx
mov ecx, dword [edi + 0x64]
push eax
push dword [esp + 0x14]
call fcn.006af2d0
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
xor ecx, ecx
cmp edi, dword [esp + 0xc]
push dword [0x884adc]
cmove eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
lea esi, [eax*8 + 0x7f]
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x529a1f
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x529a1f
cmp dword [eax + 0x14], edi
je 0x529a1f
mov dword [eax + 0xc], edi
jmp 0x529a28
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], 0
test eax, eax
js 0x529a52
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 3
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x10]
call dword [eax + 0x10]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
Function at 0x529a60
Capabilities:
Get thread local storage value

Disassembly:
sub esp, 0x14
push esi
push edi
mov edi, dword [esp + 0x20]
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], connect
mov esi, dword [edi + 0x348]
mov dword [esp + 0x18], esi
test esi, esi
je 0x529ac7
push ebx
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
lea edx, [esi*8 + 0x7f]
and edx, 0xffffff80
mov eax, dword [ecx + 0xc]
lea ebx, [eax + edx]
cmp edx, dword [ecx + 8]
jg 0x529abe
cmp ebx, dword [ecx + 0x10]
ja 0x529abe
mov dword [ecx + 0xc], ebx
pop ebx
jmp 0x529ac9
push edx
call fcn.0046a3c0
pop ebx
jmp 0x529ac9
xor eax, eax
mov ecx, dword [edi + 0x58]
or esi, 0x80000000
mov dword [esp + 8], eax
mov dword [esp + 0x14], eax
lea eax, [esp + 8]
push eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], esi
add eax, 0x24
mov edx, dword [ecx]
push eax
call dword [edx + 0x20]
mov eax, dword [esp + 0xc]
test eax, eax
je 0x529b09
mov ecx, dword [edi + 0x64]
push eax
push dword [esp + 0xc]
call fcn.006af340
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
xor ecx, ecx
cmp edi, dword [esp + 8]
push dword [0x884adc]
cmove eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
lea esi, [eax*8 + 0x7f]
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x529b51
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x529b51
cmp dword [eax + 0x14], edi
je 0x529b51
mov dword [eax + 0xc], edi
jmp 0x529b5a
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], 0
pop edi
pop esi
test eax, eax
js 0x529b86
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 3
push eax
mov eax, dword [0x7d8954]
push dword [esp + 4]
call dword [eax + 0x10]
add esp, 0x14
ret
Function at 0x529b90
Capabilities:
Get thread local storage value

Disassembly:
push ebx
mov ebx, dword [esp + 0xc]
push esi
mov esi, dword [esp + 0xc]
cmp byte [ebx + 0xe8], 5
mov dword [ebx + 8], esi
jne 0x529bb2
mov ecx, dword [esi + 0x20]
push ebx
call fcn.00535dd0
pop esi
pop ebx
ret
cmp byte [esi + 0xcc], 0
push edi
je 0x529c73
cmp dword [esp + 0x18], 1
sete al
mov byte [esp + 0x10], al
test al, al
je 0x529bf1
push 0
push 4
lea edi, [esi + 0x28]
push edi
push esi
call fcn.0052cd30
add esp, 0x10
test eax, eax
je 0x529bf4
push ebx
mov ecx, eax
call fcn.00535dd0
pop edi
pop esi
pop ebx
ret
lea edi, [esi + 0x34]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x84
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, 0x84
push esi
mov word [eax + 4], cx
mov ecx, eax
call fcn.00535bf0
mov esi, eax
mov al, byte [esp + 0x10]
and al, 3
mov dl, al
shl dl, 2
mov cl, byte [esi + 0x26]
and cl, 0xf3
or dl, cl
and dl, 0xfc
or dl, al
mov byte [esi + 0x26], dl
mov ax, word [edi + 4]
mov word [esi + 0x20], ax
movzx eax, al
mov byte [esi + 0x24], al
mov eax, dword [edi + 8]
and eax, 0x3fffffff
cmp dword [edi + 4], eax
jne 0x529c66
push 4
push edi
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov ecx, dword [edi + 4]
mov eax, dword [edi]
mov dword [eax + ecx*4], esi
inc dword [edi + 4]
jmp 0x529c78
mov eax, dword [esi + 0x28]
mov esi, dword [eax]
push ebx
mov ecx, esi
call fcn.00535dd0
mov al, byte [ebx + 0xd4]
pop edi
mov byte [esi + 0x24], al
pop esi
pop ebx
ret
Function at 0x52ce30
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0xc]
mov ecx, ebx
call fcn.0050d7a0
test eax, eax
je 0x52cef3
push esi
mov ecx, ebx
call fcn.0050d7a0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
mov esi, eax
call fcn.004758b0
mov ecx, eax
push esi
mov edx, dword [eax]
mov eax, dword [edx + 0x20]
call eax
test al, al
jne 0x52ced8
push edi
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x52ce99
mov dword [esi], str.TtWatchDog:FreeMem
rdtsc
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0xc]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
mov ecx, ebx
call fcn.0050d7a0
push ebx
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x52ced7
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0xc]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
pop edi
cmp dword [0x8d7868], 0
pop esi
je 0x52cef3
pop ebx
add esp, 4
mov dword [esp + 4], 0
jmp fcn.00650190
pop ebx
pop ecx
ret

Function at 0x52dd80
Capabilities:
Get thread local storage value

Disassembly:
push ecx
push ebx
push ebp
push esi
push edi
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, dword [esp + 0x18]
mov ecx, dword [eax + 0x28]
movsx eax, di
mov edx, dword [ecx]
lea eax, [eax*4 + 0x14]
push eax
call dword [edx + 4]
mov ebx, dword [esp + 0x1c]
mov ebp, eax
shl ebx, 4
xor esi, esi
mov dword [esp + 0x10], ebp
mov dword [ebp + 4], edi
mov dword [ebp], edi
lea eax, [ebx + 0x20]
mov dword [ebp + 8], eax
lea eax, [ebp + 0x14]
mov dword [esp + 0x18], eax
test edi, edi
jle 0x52de14
lea ebp, [ebx + 0x20]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push ebp
mov ecx, dword [eax + 0x28]
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x18]
mov dword [ecx + esi*4], eax
test eax, eax
je 0x52de05
lea ecx, [eax + 0x10]
sub eax, ecx
add eax, 0x20
mov dword [ecx], eax
mov dword [ecx + 4], 0
mov dword [ecx + 8], ebx
inc esi
cmp esi, edi
jl 0x52ddd1
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
pop ecx
ret