joyce8/EMBER2024-capa huggingface dataset:
Function at 0x406610
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
mov esi, ecx
push ebx
sub esp, 0x2c
mov edi, dword [0x49c308]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebp
mov ebx, eax
mov eax, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp], edi
mov dword [esp + 0x18], eax
call eax
mov edi, eax
mov eax, dword [sym.imp.KERNEL32.dll_SetLastError]
sub esp, 4
mov dword [esp], ebx
lea ebx, [esi - 8]
mov dword [esp + 0x1c], eax
call eax
mov eax, dword [edi + 0x1630]
mov edx, dword [edi + 0x1638]
sub esp, 4
sub eax, 1
js 0x40668a
lea ecx, [edx + eax*4]
mov edx, ecx
jmp 0x40667b
sub eax, 1
sub edx, 4
cmp eax, 0xffffffff
je 0x40668a
cmp dword [edx], ebx
jne 0x406670
mov eax, dword [ecx]
mov dword [edx], eax
sub dword [edi + 0x1630], 1
mov eax, dword [esi - 8]
sub eax, 8
mov dword [esi - 8], eax
cmp eax, 7
ja 0x4066cb
mov esi, dword [0x49c308]
call ebp
mov edi, eax
mov dword [esp], esi
mov eax, dword [esp + 0x18]
call eax
sub esp, 4
mov esi, eax
mov dword [esp], edi
mov eax, dword [esp + 0x1c]
add esi, 0x2c
call eax
sub esp, 4
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.00405190
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret

Function at 0x406db0
Capabilities:
Get thread local storage value

Disassembly:
push edi
push esi
push ebx
sub esp, 0x20
mov esi, dword [0x49c308]
mov edi, dword [esp + 0x30]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], esi
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov esi, eax
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
sub esp, 4
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x1c]
xor eax, eax
cmp edx, edi
ja 0x406dfa
cmp dword [esi + 0x20], edi
setae al
add esp, 0x20
pop ebx
pop esi
pop edi
ret

Function at 0x406e10
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
mov esi, edx
push ebx
mov ebx, ecx
sub esp, 0x2c
mov dword [esp], ecx
call fcn.00406db0
test al, al
jne 0x406e49
test esi, esi
je 0x406e2f
add dword [esi - 8], 8
mov eax, dword [ebx]
cmp eax, 0xfff
jbe 0x406e49
mov edi, dword [eax - 8]
lea ebp, [eax - 8]
lea edx, [edi - 8]
mov dword [eax - 8], edx
cmp edx, 7
jbe 0x406e58
mov dword [ebx], esi
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi, dword [0x49c308]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x1c], eax
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov edi, eax
mov edx, dword [esp + 0x1c]
add edi, 0x2c
mov dword [esp], edx
call dword [sym.imp.KERNEL32.dll_SetLastError]
sub esp, 4
mov dword [esp + 4], ebp
mov dword [esp], edi
call fcn.00405190
mov dword [ebx], esi
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x406f80
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov ebx, dword [0x49c308]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call ebp
mov dword [esp], ebx
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
call edi
sub esp, 4
mov ebx, eax
mov dword [esp], esi
mov esi, dword [sym.imp.KERNEL32.dll_SetLastError]
call esi
sub esp, 4
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x407002
mov edx, dword [esp + 0x14]
lea eax, [ecx - 8]
mov dword [esp + 0x10], eax
cmp dl, 2
je 0x407110
ja 0x407010
test dl, dl
je 0x407028
mov edx, dword [ebx + 0x48]
mov eax, dword [ebx + 0x44]
cmp edx, eax
jle 0x407040
lea esi, [esi]
mov edi, dword [ebx + 0x4c]
mov dword [esp + 0x14], edi
mov esi, dword [esp + 0x10]
mov dword [edi + eax*4], esi
add dword [ebx + 0x44], 1
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dl, 3
jne 0x407002
mov edx, dword [ebx + 0x48]
mov eax, dword [ebx + 0x44]
cmp edx, eax
jg 0x406ff0
jmp 0x407040
add esp, 0x2c
lea ecx, [ebx + 0x20]
mov edx, eax
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00407af0
lea eax, [edx + edx*2]
mov ecx, dword [0x49c308]
mov edx, eax
shr edx, 0x1f
mov dword [esp + 0x18], ecx
add edx, eax
sar edx, 1
mov dword [ebx + 0x48], edx
mov dword [esp + 0x1c], edx
call ebp
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov dword [esp], ecx
call edi
sub esp, 4
mov edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp], edx
call esi
sub esp, 4
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
lea edx, [edx*4 + 8]
add ecx, 0x54
call fcn.00404070
lea ecx, [eax + 8]
mov dword [eax + 4], 1
mov eax, dword [ebx + 0x44]
mov edx, dword [ebx + 0x4c]
mov dword [esp], ecx
shl eax, 2
mov dword [esp + 0x14], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x49c308]
mov eax, dword [ebx + 0x4c]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], eax
call ebp
mov edx, dword [esp + 0x1c]
mov ebp, eax
mov dword [esp], edx
call edi
sub esp, 4
mov edi, eax
mov dword [esp], ebp
call esi
lea ecx, [edi + 0x54]
sub esp, 4
mov eax, dword [esp + 0x18]
lea edx, [eax - 8]
call fcn.00404df0
mov ecx, dword [esp + 0x14]
mov eax, dword [ebx + 0x44]
mov dword [ebx + 0x4c], ecx
mov edi, ecx
jmp 0x406ff7
mov eax, dword [ecx - 8]
sub eax, 8
mov dword [ecx - 8], eax
cmp eax, 7
ja 0x407002
mov ebx, dword [0x49c308]
call ebp
mov ebp, eax
mov dword [esp], ebx
call edi
sub esp, 4
mov ebx, eax
mov dword [esp], ebp
add ebx, 0x2c
call esi
sub esp, 4
mov eax, dword [esp + 0x10]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00405190
jmp 0x407002
Function at 0x407a00
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, ecx
sub esp, 0x1c
mov eax, dword [ebx + 0xc]
lea esi, [esi]
test eax, eax
jle 0x407aa3
mov eax, dword [ebx + 0x14]
mov esi, dword [eax]
and dword [esi], 0xfffffffb
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 0xc]
mov edx, dword [eax + edx*4 - 4]
mov dword [eax], edx
mov eax, dword [ebx + 0xc]
sub eax, 1
mov dword [ebx + 0xc], eax
cmp dword [esi], 7
ja 0x407a10
mov edi, dword [0x49c308]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov edi, eax
mov dword [esp], ebp
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov edx, dword [esi + 4]
sub esp, 4
mov eax, dword [edx + 0x14]
test eax, eax
je 0x407a7d
add dword [edi + 0x50], 1
lea ecx, [esi + 8]
call dword [edx + 0x14]
sub dword [edi + 0x50], 1
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x18]
test eax, eax
je 0x407ab0
lea ecx, [esi + 8]
mov edx, 2
call eax
lea ecx, [ebx + 0x34]
mov edx, esi
call fcn.00404df0
mov eax, dword [ebx + 0xc]
test eax, eax
jg 0x407a18
add esp, 0x1c
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [edx + 8]
cmp al, 0x16
je 0x407ad0
cmp al, 0x18
jne 0x407a8e
mov edx, 2
mov ecx, esi
call fcn.00407830
jmp 0x407a8e
mov edx, dword [edx + 0xc]
mov dword [esp], 2
lea ecx, [esi + 8]
call fcn.00407160
sub esp, 4
jmp 0x407a8e
Function at 0x407fd0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, ecx
push edi
push esi
push ebx
sub esp, 0x2c
call fcn.004056e0
mov edx, dword [ebp + 0x15ec]
cmp edx, eax
cmovge eax, edx
mov dword [ebp + 0x15ec], eax
mov eax, dword [ebp + 0x14b8]
mov edx, dword [eax]
mov ebx, eax
cmp eax, edx
jne 0x40800a
jmp 0x408160
mov ebx, ecx
mov ecx, edx
mov edx, dword [edx]
cmp edx, ecx
jne 0x408008
mov edx, dword [ebx + 8]
mov dword [ebp + 0x34], edx
cmp eax, dword [eax]
je 0x408170
mov edx, eax
mov eax, dword [eax + 4]
cmp dword [eax], eax
jne 0x408020
mov eax, dword [edx + 0xc]
mov dword [ebp + 0x38], eax
mov dword [esp], ebp
call fcn.004058e0
mov eax, dword [ebp + 0x15f0]
mov edx, dword [ebp + 0x18]
mov ecx, ebp
cmp eax, edx
cmovl eax, edx
add dword [ebp + 0x15e0], 1
mov dword [ebp + 0x15f0], eax
call fcn.00407a00
test al, al
je 0x40806c
mov eax, dword [ebp + 0x10b0]
cmp dword [ebp + 4], eax
jle 0x4080f8
mov edx, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x20]
xor ebx, ebx
test edx, edx
jle 0x4080e3
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x14], edx
mov edx, ecx
lea esi, [esi]
mov esi, dword [edx + ebx*4]
mov eax, dword [esi]
sub eax, 8
mov dword [esi], eax
cmp eax, 7
ja 0x4080d6
mov edi, dword [0x49c308]
mov dword [esp + 0x18], edx
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov edi, eax
mov dword [esp], ebp
add edi, 0x2c
call dword [sym.imp.KERNEL32.dll_SetLastError]
sub esp, 4
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.00405190
mov edx, dword [esp + 0x18]
add ebx, 1
cmp dword [esp + 0x14], ebx
jne 0x408088
mov ebp, dword [esp + 0x1c]
mov dword [ebp + 0x18], 0
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, ebp
call fcn.00407d20
mov ebx, dword [0x49c308]
add dword [ebp + 0x15e4], 1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebx + 0x10d0]
mov edx, 0x400000
sub esp, 4
add eax, eax
cmp eax, edx
cmovl eax, edx
mov edx, dword [ebp + 0x15e8]
cmp edx, eax
mov dword [ebp + 4], eax
cmovl edx, eax
mov dword [ebp + 0x15e8], edx
jmp 0x40806c
xor edx, edx
mov dword [ebp + 0x34], edx
cmp eax, dword [eax]
jne 0x408020
lea esi, [esi]
mov eax, 0xffffffff
jmp 0x40802c
Function at 0x4081c0
Capabilities:
Get thread local storage value

Disassembly:
push edi
push esi
push ebx
sub esp, 0x10
mov ebx, dword [0x49c308]
mov esi, dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], ebx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebx + 0x2c]
sub esp, 4
cmp dword [ebx + 0x28], eax
jle 0x408205
mov eax, dword [ebx + 0x24]
cmp dword [ebx + 0x10d0], eax
jl 0x408226
mov eax, dword [ebx + 0x50]
test eax, eax
jne 0x408226
lea ecx, [ebx + 0x20]
call fcn.00407fd0
mov eax, dword [ebx + 0x2c]
mov edx, 0x1f4
add eax, eax
cmp eax, edx
cmovl eax, edx
mov dword [ebx + 0x28], eax
lea edx, [esi + 8]
lea ecx, [ebx + 0x54]
call fcn.00404070
mov edx, dword [esp + 0x20]
lea ebx, [eax + 8]
mov dword [eax], 8
mov dword [eax + 4], edx
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esp + 4], 0
call sub.msvcrt.dll_memset
add esp, 0x10
mov eax, ebx
pop ebx
pop esi
pop edi
ret

Function at 0x408420
Capabilities:
Get thread local storage value

Disassembly:
push edi
push esi
push ebx
sub esp, 0x10
mov ebx, dword [0x49c308]
mov esi, dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], ebx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], edi
add ebx, 0x20
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov edx, esi
sub esp, 4
mov dword [esp], ebx
mov ecx, dword [esp + 0x20]
call fcn.004082e0
sub esp, 4
mov ebx, eax
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll_memset
add esp, 0x10
mov eax, ebx
pop ebx
pop esi
pop edi
ret

Function at 0x408500
Capabilities:
Get thread local storage value

Disassembly:
push edi
push esi
mov esi, eax
push ebx
sub esp, 0x10
mov ebx, dword [0x49c308]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], edi
add ebx, 0x20
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, esi
mov edx, 0x18
xor esi, esi
sub esp, 4
mov dword [esp], ebx
call fcn.004082e0
xor ecx, ecx
lea ebx, [eax + 4]
mov edx, eax
mov dword [eax], 0
sub esp, 4
and ebx, 0xfffffffc
mov dword [eax + 0x14], 0
sub edx, ebx
add edx, 0x18
and edx, 0xfffffffc
mov dword [ebx + ecx], esi
add ecx, 4
cmp ecx, edx
jb 0x408566
add esp, 0x10
pop ebx
pop esi
pop edi
ret
Function at 0x4085e0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov eax, 7
push edi
push esi
mov esi, ecx
push ebx
sub esp, 0x1c
mov edi, dword [ecx]
mov ebx, dword [0x49c308]
cmp edi, eax
cmovl edi, eax
add esi, 8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], ebx
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], ebp
add ebx, 0x20
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea edx, [edi + 9]
mov ecx, 0x472020
sub esp, 4
mov dword [esp], ebx
call fcn.004082e0
mov dword [eax + 4], edi
mov ebx, eax
sub esp, 4
mov dword [eax], 0
mov eax, dword [esi - 8]
lea edx, [ebx + 8]
mov dword [ebx], eax
add eax, 1
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
add esp, 0x1c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret

Function at 0x408700
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
xor esi, esi
push ebx
sub esp, 0x2c
test ecx, ecx
je 0x408784
mov dword [esp], ecx
mov edi, ecx
mov ebp, 7
call sub.msvcrt.dll_strlen
mov esi, dword [0x49c308]
cmp eax, ebp
mov ebx, eax
cmovge ebp, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], esi
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov esi, eax
mov edx, dword [esp + 0x1c]
add esi, 0x20
mov dword [esp], edx
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea edx, [ebp + 9]
mov ecx, 0x472020
sub esp, 4
mov dword [esp], esi
call fcn.004082e0
mov dword [eax], ebx
sub esp, 4
mov esi, eax
add ebx, 1
mov dword [eax + 4], ebp
lea eax, [eax + 8]
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
add esp, 0x2c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x408790
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
xor edi, edi
push esi
push ebx
mov ebx, edx
sub esp, 0x2c
test edx, edx
cmovns edi, edx
test ecx, ecx
je 0x4088a8
mov esi, ecx
mov ecx, dword [ecx + 4]
mov edx, esi
mov eax, ecx
and eax, 0x3fffffff
cmp eax, edi
jge 0x408894
mov edx, 4
test eax, eax
je 0x4087d6
and ecx, 0x3fff0000
lea edx, [eax + eax]
je 0x4087d6
add edx, eax
sar edx, 1
cmp ebx, edx
mov ecx, dword [0x49c308]
mov ebp, 7
cmovge edx, ebx
mov dword [esp + 0x18], ecx
cmp edx, ebp
mov dword [esp + 0x14], edx
cmovge ebp, edx
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
mov dword [esp], ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov dword [esp], edx
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea edx, [ebp + 9]
sub esp, 4
mov ecx, dword [esp + 0x18]
add ecx, 0x20
mov dword [esp], ecx
mov ecx, 0x472020
call fcn.004082e0
mov dword [eax + 4], ebp
sub esp, 4
mov edx, eax
lea eax, [eax + 8]
mov dword [eax - 8], 0
mov ecx, dword [esi]
mov dword [esp + 0x18], edx
mov dword [eax - 8], ecx
lea ebp, [ecx + 1]
lea ecx, [esi + 8]
mov dword [esp + 4], ecx
mov dword [esp + 8], ebp
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esi]
mov edx, dword [esp + 0x18]
mov dword [esp + 4], 0
sub ebx, eax
lea eax, [edx + eax + 8]
mov dword [esp + 8], ebx
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov dword [edx + 4], eax
mov dword [edx], edi
mov eax, edx
mov byte [edx + edi + 8], 0
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, 7
mov dword [esp], 0x472020
cmp edx, esi
cmovge esi, edx
lea eax, [esi + 9]
mov dword [esp + 4], eax
call fcn.00408420
mov dword [eax + 4], esi
mov edx, eax
mov dword [eax], ebx
jmp 0x408894
Function at 0x408c60
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
test ecx, ecx
je 0x408d40
mov esi, dword [ecx + 4]
mov eax, dword [ecx]
mov ebx, ecx
mov edx, esi
add eax, 2
and edx, 0x3fffffff
cmp eax, edx
jle 0x408d30
mov ecx, 4
test edx, edx
je 0x408ca1
and esi, 0x3fff0000
lea ecx, [edx + edx]
je 0x408ca1
add ecx, edx
sar ecx, 1
cmp eax, ecx
mov edi, ecx
mov ebp, 7
mov esi, dword [0x49c308]
cmovge edi, eax
cmp edi, ebp
cmovge ebp, edi
add ebx, 8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], esi
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov esi, eax
mov edx, dword [esp + 0x1c]
add esi, 0x20
mov dword [esp], edx
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea edx, [ebp + 9]
mov ecx, 0x472020
sub esp, 4
mov dword [esp], esi
call fcn.004082e0
mov dword [eax + 4], ebp
mov esi, eax
sub esp, 4
mov dword [eax], 0
mov eax, dword [ebx - 8]
lea edx, [esi + 8]
mov dword [esi], eax
add eax, 1
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov dword [esi + 4], edi
add esp, 0x2c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
add esp, 0x2c
mov esi, ecx
pop ebx
mov eax, esi
pop esi
pop edi
pop ebp
ret
mov ebx, dword [0x49c308]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], esi
add ebx, 0x20
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov edx, 0x10
mov ecx, 0x472020
sub esp, 4
mov dword [esp], ebx
call fcn.004082e0
sub esp, 4
mov dword [eax + 4], 7
mov esi, eax
mov dword [eax], 0
add esp, 0x2c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x408da0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
mov edi, ecx
push esi
mov esi, edx
push ebx
sub esp, 0x1c
mov ebx, dword [0x49c308]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], ebp
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebx + 0x2c]
sub esp, 4
cmp dword [ebx + 0x28], eax
jle 0x408e30
mov eax, dword [ebx + 0x24]
cmp dword [ebx + 0x10d0], eax
jge 0x408e30
lea edx, [esi + 8]
lea ecx, [ebx + 0x54]
call fcn.00404070
mov dword [eax + 4], edi
mov esi, eax
mov dword [eax], 4
mov eax, dword [ebx + 0x2c]
mov edx, dword [ebx + 0x34]
cmp eax, 8
jle 0x408ec8
lea ebp, [eax*4 - 4]
lea ecx, [edx + ebp]
mov edi, dword [ecx]
mov eax, dword [edi]
cmp eax, 7
jbe 0x408e58
and eax, 0xfffffffb
mov dword [edi], eax
mov dword [ecx], esi
add esp, 0x1c
lea eax, [esi + 8]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebx + 0x50]
test eax, eax
jne 0x408de6
lea ecx, [ebx + 0x20]
call fcn.00407fd0
mov eax, dword [ebx + 0x2c]
mov edx, 0x1f4
add eax, eax
cmp eax, edx
cmovl eax, edx
mov dword [ebx + 0x28], eax
jmp 0x408de6
lea ecx, [edx + ebp - 4]
mov edi, dword [ecx]
mov eax, dword [edi]
cmp eax, 7
ja 0x408e1e
lea ecx, [edx + ebp - 8]
mov edi, dword [ecx]
mov eax, dword [edi]
cmp eax, 7
ja 0x408e1e
lea ecx, [edx + ebp - 0xc]
mov edi, dword [ecx]
mov eax, dword [edi]
cmp eax, 7
ja 0x408e1e
lea ecx, [edx + ebp - 0x10]
mov edi, dword [ecx]
mov eax, dword [edi]
cmp eax, 7
ja 0x408e1e
lea ecx, [edx + ebp - 0x14]
mov edi, dword [ecx]
mov eax, dword [edi]
cmp eax, 7
ja 0x408e1e
lea ecx, [edx + ebp - 0x18]
mov edi, dword [ecx]
mov eax, dword [edi]
cmp eax, 7
ja 0x408e1e
lea edx, [edx + ebp - 0x1c]
mov ecx, dword [edx]
mov eax, dword [ecx]
cmp eax, 7
jbe 0x408eda
and eax, 0xfffffffb
mov dword [ecx], eax
mov dword [edx], esi
jmp 0x408e25
mov dword [edx + eax*4], esi
lea eax, [esi + 8]
add dword [ebx + 0x2c], 1
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [ebx + 0x2c]
mov edx, esi
call fcn.00404fd0
jmp 0x408e25
Function at 0x408ef0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
test ecx, ecx
je 0x408fc0
mov esi, dword [ecx + 4]
add edx, dword [ecx]
mov ebx, ecx
mov edi, ecx
mov eax, esi
and eax, 0x3fffffff
cmp edx, eax
jle 0x408fb0
mov ecx, 4
test eax, eax
je 0x408f2f
and esi, 0x3fff0000
lea ecx, [eax + eax]
je 0x408f2f
add ecx, eax
sar ecx, 1
cmp edx, ecx
mov esi, ecx
mov ebp, 7
mov edi, dword [0x49c308]
cmovge esi, edx
cmp esi, ebp
cmovge ebp, esi
add ebx, 8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], edi
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov edi, eax
mov edx, dword [esp + 0x1c]
add edi, 0x20
mov dword [esp], edx
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea edx, [ebp + 9]
mov ecx, 0x472020
sub esp, 4
mov dword [esp], edi
call fcn.004082e0
mov dword [eax + 4], ebp
mov edi, eax
sub esp, 4
mov dword [eax], 0
mov eax, dword [ebx - 8]
lea edx, [edi + 8]
mov dword [edi], eax
add eax, 1
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov dword [edi + 4], esi
add esp, 0x2c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 7
mov ecx, 0x472020
cmp edx, eax
cmovge eax, edx
lea edx, [eax + 9]
mov ebx, eax
call fcn.00408da0
mov dword [eax + 4], ebx
mov edi, eax
mov dword [eax], 0
add esp, 0x2c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x408ff0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
mov edi, edx
push esi
push ebx
sub esp, 0x2c
test ecx, ecx
je 0x409118
mov eax, dword [ecx + 4]
mov ebp, dword [ecx]
mov ebx, ecx
mov edx, ebx
mov esi, eax
lea ecx, [ebp + 1]
and esi, 0x3fffffff
cmp esi, ebp
jg 0x4090d3
test esi, esi
je 0x409100
test eax, 0x3fff0000
jne 0x4090f0
add esi, esi
mov ebp, 7
cmp esi, ebp
cmovge ebp, esi
lea edx, [ebp + 9]
mov ecx, dword [0x49c308]
mov dword [esp + 0x1c], edx
add ebx, 8
mov dword [esp + 0x18], ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov dword [esp], ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp], ecx
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, 0x472020
sub esp, 4
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
add eax, 0x20
mov dword [esp], eax
call fcn.004082e0
mov dword [eax], 0
sub esp, 4
mov edx, eax
lea eax, [eax + 8]
mov dword [eax - 4], ebp
mov ebp, dword [ebx - 8]
mov dword [esp + 0x18], edx
lea ecx, [ebp + 1]
mov dword [eax - 8], ebp
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [esp + 0x14], ecx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [edx + 4], esi
mov eax, edi
mov byte [edx + ebp + 8], al
mov eax, edx
mov byte [edx + ecx + 8], 0
mov dword [edx], ecx
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
lea esi, [esi + esi*2]
sar esi, 1
lea edx, [esi + 9]
mov ebp, esi
jmp 0x40903f
mov edx, 0x10
mov ebp, 7
mov esi, 4
jmp 0x40903f
mov edx, 0x10
mov ecx, 0x472020
xor ebp, ebp
call fcn.00408da0
mov ecx, 1
mov dword [eax + 4], 7
mov edx, eax
mov dword [eax], 0
jmp 0x4090d3