joyce8/EMBER2024-capa huggingface dataset:
Function at 0x417eb5
Capabilities:
Create shortcut via ishelllink

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
lea eax, [ebp - 4]
xor ebx, ebx
push eax
push 0x43071c
push 1
push ebx
push 0x4307ec
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x417f86
mov eax, dword [ebp - 4]
lea edx, [ebp - 8]
push edx
push 0x4307dc
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
js 0x417f7d
cmp byte [ebp + 8], bl
je 0x417f08
mov eax, dword [ebp - 8]
push 2
push dword [ebp + 0x10]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov eax, dword [ebp - 4]
push dword [ebp + 0xc]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
cmp dword [ebp + 0x18], ebx
je 0x417f25
mov eax, dword [ebp - 4]
push dword [ebp + 0x18]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [ebp - 4]
push ebx
mov ecx, dword [eax]
cmp dword [ebp + 0x1c], ebx
jne 0x417f37
push 0x42f294
jmp 0x417f3a
push dword [ebp + 0x1c]
push eax
call dword [ecx + 0x44]
cmp dword [ebp + 0x20], ebx
je 0x417f4f
mov eax, dword [ebp - 4]
push dword [ebp + 0x20]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
cmp dword [ebp + 0x14], ebx
je 0x417f60
mov eax, dword [ebp - 4]
push dword [ebp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
mov eax, dword [ebp - 8]
push 1
push dword [ebp + 0x10]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
test eax, eax
js 0x417f74
mov bl, 1
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret 0x1c

Function at 0x418035
Capabilities:
Get common file path

Disassembly:
push dword [esp + 4]
push dword [esp + 0xc]
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
neg eax
sbb eax, eax
neg eax
ret 8

Function at 0x4184f3
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1020
call fcn.0041bfd0
push 0x800
lea eax, [ebp - 0x1020]
push eax
call fcn.00418035
cmp byte [0x4537d2], 0
jne 0x418588
push 6
push dword [0x43914c]
lea eax, [ebp - 0x1020]
push eax
call fcn.0040b298
push eax
call fcn.00410466
test eax, eax
jne 0x418588
push 0x42f4f4
call fcn.004183cf
lea eax, [ebp - 0x1020]
push eax
call fcn.004211f5
xor ecx, ecx
push 0x1e
push ecx
mov word [ebp + eax*2 - 0x101e], cx
lea eax, [ebp - 0x20]
push eax
call fcn.0041cfa0
add esp, 0x10
mov dword [ebp - 0x1c], 3
push 0x14
pop eax
mov word [ebp - 0x10], ax
lea eax, [ebp - 0x1020]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
mov esp, ebp
pop ebp
ret
Function at 0x4185e4
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x12c
cmp dword [0x439160], 0
push ebx
push esi
push edi
mov ebx, 0x400
jne 0x41862f
push 0x64
lea eax, [ebp - 0x12c]
push eax
push 0xf
push ebx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov ax, word [ebp - 0x12c]
mov word [0x4557fc], ax
xor eax, eax
mov word [0x4557fe], ax
mov dword [0x439160], 0x4557fc
push 0x32
lea eax, [ebp - 0x64]
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0040e991
mov edi, dword [ebp + 0x10]
xor eax, eax
mov esi, dword [ebp + 0x14]
push esi
push edi
push 0x439150
mov word [edi], ax
lea eax, [ebp - 0x64]
push eax
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetNumberFormatW]
xor eax, eax
mov word [edi + esi*2 - 2], ax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10

Function at 0x41882c
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x200c
call fcn.0041bfd0
cmp byte [0x448108], 0
je 0x4188d5
lea eax, [ebp - 0x200c]
push eax
push dword [ebp + 8]
call fcn.00419c0a
lea eax, [ebp - 8]
push eax
push 1
push 0
push str.SoftwareWinRAR_SFX
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4188d5
lea eax, [ebp - 4]
mov dword [ebp - 4], 0x1000
push eax
lea eax, [ebp - 0x100c]
push eax
lea eax, [ebp - 0xc]
push eax
push 0
lea eax, [ebp - 0x200c]
push eax
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4188cc
mov eax, dword [ebp - 4]
mov ecx, 0x7ff
shr eax, 1
mov dword [ebp - 4], eax
cmp eax, ecx
jb 0x4188b0
mov eax, ecx
push dword [ebp + 0xc]
xor ecx, ecx
mov word [ebp + eax*2 - 0x100c], cx
lea eax, [ebp - 0x100c]
push eax
push dword [ebp + 8]
call fcn.0040ea71
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esp, ebp
pop ebp
ret 8
Function at 0x418981
Capabilities:
Query environment variable

Disassembly:
mov eax, 0x2004
call fcn.0041bfd0
mov ecx, dword [esp + 0x2014]
push ebx
xor ebx, ebx
push esi
test ecx, ecx
je 0x41899c
mov byte [ecx], bl
mov edx, dword [esp + 0x2020]
test edx, edx
je 0x4189a9
mov byte [edx], bl
mov esi, dword [esp + 0x2010]
test esi, esi
je 0x418a6c
movzx eax, word [esi]
test ax, ax
je 0x418a6c
push ebp
mov ebp, dword [esp + 0x2018]
push edi
mov edi, dword [esp + 0x2020]
mov dword [esp + 0x10], ebx
movzx eax, ax
add esi, 2
cmp eax, 0x3d
jne 0x4189f6
test edi, edi
je 0x418a00
test ebx, ebx
jne 0x418a00
test ecx, ecx
je 0x4189f2
mov byte [ecx], 1
mov ebx, ebp
jmp 0x418a17
cmp eax, 0xd
je 0x418a2a
cmp eax, 0xa
je 0x418a2d
mov word [ebp], ax
add ebp, 2
mov eax, dword [esp + 0x202c]
add eax, 0xfffffffe
cmp dword [esp + 0x10], eax
jge 0x418a25
movzx eax, word [esi]
inc dword [esp + 0x10]
test ax, ax
jne 0x4189d8
jmp 0x418a2d
mov byte [edx], 1
jmp 0x418a2d
add esi, 2
xor eax, eax
mov word [ebp], ax
test edi, edi
je 0x418a66
mov word [edi], ax
test ebx, ebx
je 0x418a66
push 0x1000
lea eax, [esp + 0x18]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
push dword [esp + 0x202c]
lea eax, [esp + 0x18]
push eax
push edi
call fcn.0040ea71
xor eax, eax
mov word [ebx], ax
pop edi
mov eax, esi
pop ebp
jmp 0x418a6e
xor eax, eax
pop esi
pop ebx
add esp, 0x2004
ret 0x18

Function at 0x418a79
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
lea eax, [ebp - 8]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
lea eax, [ebp - 4]
push eax
xor eax, eax
push eax
push eax
push dword [ebp + 0xc]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFolderLocation]
mov ebx, eax
neg ebx
sbb bl, bl
add bl, 1
je 0x418ac8
push dword [ebp + 8]
push dword [ebp - 4]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
push dword [ebp - 4]
dec eax
neg eax
sbb al, al
lea ebx, [eax + 1]
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
jmp 0x418ad0
mov eax, dword [ebp + 8]
xor ecx, ecx
mov word [eax], cx
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x41abb0
Capabilities:
Create process on windows

Disassembly:
mov eax, 0x1040
call fcn.0041bfd0
push ebx
push esi
mov esi, dword [esp + 0x1050]
xor ebx, ebx
cmp word [esi], bx
je 0x41ade8
push esi
call fcn.004211f5
pop ecx
cmp eax, 0x7f6
jae 0x41ade8
push edi
push 0x3c
pop edi
push edi
lea eax, [esp + 0x14]
push ebx
push eax
call fcn.0041cfa0
add esp, 0xc
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], 0x1c0
cmp byte [esp + 0x1058], bl
je 0x41ac10
mov dword [esp + 0x14], 0x5c0
movzx ecx, word [esi]
lea edx, [esi + 2]
push 0x22
pop edi
cmp cx, di
je 0x41ac20
mov edx, esi
mov dword [esp + 0x20], edx
mov eax, ebx
push ebp
test cx, cx
je 0x41ac6a
push 0x20
mov ecx, esi
pop ebp
cmp word [ecx], di
jne 0x41ac4b
jmp 0x41ac3e
cmp word [esi + eax*2], di
je 0x41ac47
inc eax
cmp word [esi + eax*2], bx
jne 0x41ac38
jmp 0x41ac4b
mov word [esi + eax*2], bp
cmp word [esi + eax*2], bp
je 0x41adbf
cmp word [esi + eax*2 + 2], 0x2f
je 0x41adb9
inc eax
lea ecx, [esi + eax*2]
cmp word [ecx], bx
jne 0x41ac31
mov eax, dword [esp + 0x28]
test eax, eax
je 0x41ac77
cmp word [eax], bx
jne 0x41ac91
cmp byte [esp + 0x105c], bl
jne 0x41ac91
cmp word [0x44910a], bx
je 0x41ac91
mov dword [esp + 0x28], 0x44910a
push edx
mov dword [esp + 0x34], 1
call fcn.0040ab14
mov esi, eax
test esi, esi
je 0x41acbc
push str..inf
push esi
call fcn.00410444
test eax, eax
jne 0x41acbc
mov dword [esp + 0x20], 0x430664
push dword [esp + 0x24]
call fcn.004098a5
test al, al
je 0x41ace4
push 0x800
lea eax, [esp + 0x54]
push eax
push dword [esp + 0x2c]
call fcn.0040a89d
lea eax, [esp + 0x50]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x41ade6
mov edi, dword [esp + 0x1054]
mov ebp, dword [sym.imp.USER32.dll_ShowWindow]
cmp byte [0x448100], bl
jne 0x41ad1d
cmp byte [esp + 0x105c], bl
jne 0x41ad1d
cmp byte [0x4547ee], bl
je 0x41ad7c
test edi, edi
je 0x41ad32
push edi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x41ad32
push ebx
push edi
call ebp
mov bl, 1
push 0x7d0
push dword [esp + 0x50]
call dword [sym.imp.USER32.dll_WaitForInputIdle]
push dword [esp + 0x4c]
call fcn.0041b03e
cmp byte [0x4547ee], 0
je 0x41ad7c
lea eax, [esp + 0x10]
push eax
push dword [esp + 0x50]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
je 0x41ad7c
mov eax, dword [esp + 0x10]
add eax, 0x3e8
cmp eax, dword [0x4547f0]
jbe 0x41ad7c
mov dword [0x4547f0], eax
push dword [esp + 0x4c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x41ad99
push str..exe
push esi
call fcn.00410444
test eax, eax
je 0x41add2
cmp byte [0x448100], 0
mov al, byte [esp + 0x105c]
je 0x41add9
test al, al
jne 0x41add9
mov dword [0x4547f4], 0x1b58
jmp 0x41add9
cmp word [esi + eax*2], bp
jne 0x41adc5
xor ecx, ecx
mov word [esi + eax*2], cx
inc eax
lea eax, [esi + eax*2]
mov dword [esp + 0x28], eax
jmp 0x41ac6e
mov al, byte [esp + 0x105c]
test bl, bl
je 0x41ade6
test al, al
je 0x41ade6
push 1
push edi
call ebp
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1040
ret 0xc
Function at 0x41adf3
Capabilities:
Hide graphical window

Disassembly:
and dword [0x4410e8], 0
push 1
push dword [esp + 8]
mov byte [0x4410dc], 1
mov byte [0x4410dd], 1
call dword [sym.imp.USER32.dll_ShowWindow]
push 0
push 2
push dword [esp + 0xc]
call fcn.0040112d
cmp dword [0x4480f4], 0
jne 0x41ae33
cmp byte [0x4410e2], 0
je 0x41ae3c
cmp dword [0x4410d8], 0
jne 0x41ae4f
push 0
push 1
push 0x111
push dword [esp + 0x10]
call dword [sym.imp.USER32.dll_SendMessageW]
ret 4

Function at 0x41af4f
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1008
call fcn.0041bfd0
cmp byte [0x448108], 0
je 0x41afd9
cmp word [0x4547f8], 0
je 0x41afd9
push esi
lea eax, [ebp - 0x1008]
push eax
push 0x4547f8
call fcn.00419c0a
lea eax, [ebp - 8]
xor esi, esi
push eax
lea eax, [ebp - 4]
push eax
push esi
push 0x20006
push esi
push esi
push esi
push str.SoftwareWinRAR_SFX
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x41afd8
push dword [ebp + 8]
call fcn.004211f5
pop ecx
lea eax, [eax*2 + 2]
push eax
push dword [ebp + 8]
lea eax, [ebp - 0x1008]
push 1
push esi
push eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop esi
mov esp, ebp
pop ebp
ret 4

Function at 0x41afdf
Capabilities:
Set environment variable

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2000
call fcn.0041bfd0
push esi
push dword [ebp + 8]
push str.sfxcmd
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
push 0x1000
lea eax, [ebp - 0x2000]
push eax
push dword [ebp + 8]
call fcn.0040e866
mov esi, eax
test esi, esi
je 0x41b037
movzx ecx, word [esi]
push ecx
jmp 0x41b022
add esi, 2
movzx eax, word [esi]
push eax
call fcn.0040e95d
test al, al
jne 0x41b01b
push esi
push str.sfxpar
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
pop esi
mov esp, ebp
pop ebp
ret 4
Function at 0x401cd0
Capabilities:
Terminate thread

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, ecx
mov eax, dword [esi + 8]
mov dword [esi], vtable.nbase::Thread.0
test eax, eax
je 0x401d17
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x401d00
mov eax, dword [esi + 8]
test eax, eax
je 0x401d17
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esi + 4], 0
mov dword [esi + 8], 0
test byte [ebp + 8], 1
je 0x401d28
push 0x10
push esi
call fcn.004c625e
add esp, 8
mov eax, esi
pop esi
pop ebp
ret 4

Function at 0x401d80
Capabilities:
Create thread

Disassembly:
push esi
push edi
mov esi, ecx
lea edi, [esi + 4]
push edi
push 0
push esi
push 0x401e60
push 0
push 0
call fcn.004e05b9
mov edx, eax
add esp, 0x18
mov dword [esi + 8], edx
cmp edx, 2
jae 0x401db5
mov dword [esi + 8], 0
xor edx, edx
mov dword [edi], 0
mov ecx, dword [esi + 0xc]
test ecx, ecx
jle 0x401e24
or eax, 0xffffffff
cmp ecx, 1
jne 0x401ddb
mov eax, 0xfffffffe
push eax
push edx
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
cmp dword [esi + 8], 1
pop edi
seta al
pop esi
ret
cmp ecx, 2
jne 0x401df5
or eax, 0xffffffff
push eax
push edx
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
cmp dword [esi + 8], 1
pop edi
seta al
pop esi
ret
cmp ecx, 3
jne 0x401e11
mov eax, 2
push eax
push edx
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
cmp dword [esi + 8], 1
pop edi
seta al
pop esi
ret
cmp ecx, 4
mov edi, 0xf
cmove eax, edi
push eax
push edx
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
cmp dword [esi + 8], 1
pop edi
seta al
pop esi
ret

Function at 0x401e30
Capabilities:
Terminate thread

Disassembly:
push esi
mov esi, ecx
mov eax, dword [esi + 8]
test eax, eax
je 0x401e5a
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esi + 8], 0
mov dword [esi + 4], 0
pop esi
ret
Function at 0x4036b0
Capabilities:
Allocate thread local storage

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [0x5465b0]
cmp eax, 2
je 0x403743
push esi
push 0
push 1
push 0x5465b0
call dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
test eax, eax
jne 0x40371f
push 4
call fcn.004c622e
mov esi, eax
add esp, 4
mov dword [ebp - 4], esi
mov dword [esi], 0
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
push 0x5465b0
mov dword [esi], eax
push 0x403b70
mov dword [0x5465b4], esi
call fcn.004017b0
mov eax, dword [0x5465b4]
add esp, 8
mov dword [0x5465b0], 2
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
je 0x403742
mov eax, dword [0x5465b0]
cmp eax, 2
je 0x403742
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0
call esi
mov eax, dword [0x5465b0]
cmp eax, 2
jne 0x403734
pop esi
mov eax, dword [0x5465b4]
mov esp, ebp
pop ebp
ret

Function at 0x404990
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
mov ebx, ecx
mov dword [esp + 8], 0
mov ecx, dword [ebp + 8]
push esi
push edi
xor edi, edi
lea eax, [ecx - 1]
mov dword [esp + 0x1c], eax
sar eax, 1
mov dword [esp + 0x18], eax
test eax, eax
jle 0x404a63
lea ecx, [edi + edi]
lea eax, [ecx*8]
mov dword [esp + 0x14], ecx
sub eax, ecx
mov ecx, dword [ebx + eax*8 + 0x70]
mov edi, dword [ebx + eax*8 + 0x74]
lea edx, [ebx + eax*8]
mov esi, dword [edx + 0x3c]
mov eax, dword [edx + 0x38]
cmp edi, esi
jl 0x4049f9
jg 0x4049eb
cmp ecx, eax
jbe 0x4049ef
xor eax, eax
jmp 0x404a0b
cmp edi, esi
jg 0x404a00
jl 0x4049f9
cmp ecx, eax
jae 0x404a00
mov eax, 1
jmp 0x404a0b
mov ecx, dword [edx + 0x78]
xor eax, eax
cmp ecx, dword [edx + 0x40]
setle al
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
inc edi
add edi, eax
lea eax, [edi*8]
sub eax, edi
lea esi, [ebx + eax*8]
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [esi + 4]
lea edx, [ebx + eax*8]
mov eax, dword [esi]
mov dword [edx], eax
mov dword [edx + 4], ecx
lea ecx, [edx + 0x10]
mov eax, dword [esi + 8]
mov dword [edx + 8], eax
mov al, byte [esi + 0xc]
mov byte [edx + 0xc], al
lea eax, [esi + 0x10]
push eax
call fcn.00404490
mov eax, dword [esp + 0x18]
mov dword [esp + 0x10], edi
cmp edi, eax
jl 0x4049c0
mov ecx, dword [ebp + 8]
mov edx, edi
cmp edi, eax
jne 0x404aae
test cl, 1
jne 0x404aae
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebx + eax*8 - 0x34]
lea esi, [ebx + eax*8]
lea eax, [edi*8]
sub eax, edi
lea edx, [ebx + eax*8]
mov eax, dword [esi - 0x38]
mov dword [edx], eax
mov dword [edx + 4], ecx
lea ecx, [edx + 0x10]
mov eax, dword [esi - 0x30]
mov dword [edx + 8], eax
mov al, byte [esi - 0x2c]
mov byte [edx + 0xc], al
lea eax, [esi - 0x28]
push eax
call fcn.00404490
mov edx, dword [esp + 0x1c]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, ebx
call fcn.00404360
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x405490
Capabilities:
Allocate thread local storage

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [0x5465b8]
cmp eax, 2
je 0x405523
push esi
push 0
push 1
push 0x5465b8
call dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
test eax, eax
jne 0x4054ff
push 4
call fcn.004c622e
mov esi, eax
add esp, 4
mov dword [ebp - 4], esi
mov dword [esi], 0
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
push 0x5465b8
mov dword [esi], eax
push 0x403b70
mov dword [0x5465bc], esi
call fcn.004017b0
mov eax, dword [0x5465bc]
add esp, 8
mov dword [0x5465b8], 2
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
je 0x405522
mov eax, dword [0x5465b8]
cmp eax, 2
je 0x405522
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0
call esi
mov eax, dword [0x5465b8]
cmp eax, 2
jne 0x405514
pop esi
mov eax, dword [0x5465bc]
mov esp, ebp
pop ebp
ret
Function at 0x407e20
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f9890
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x53e200]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
mov dword [ebp - 0x10], eax
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov ebx, ecx
mov dword [ebp - 4], 0
mov esi, dword [ebp + 8]
mov dword [ebx], vtable.nbase::CmdLineArgs.0
mov dword [ebx + 0x10], 0
test esi, esi
jne 0x407e8d
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov esi, eax
test esi, esi
je 0x407fe6
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x407e92
sub ecx, edx
sar ecx, 1
je 0x407fe6
lea edi, [ecx + ecx]
lea eax, [edi + 2]
push eax
call fcn.004d851b
mov ecx, eax
add esp, 4
mov dword [ebx + 0x10], ecx
test ecx, ecx
je 0x407fe6
movzx eax, word [esi]
lea esi, [esi + 2]
mov word [ecx], ax
lea ecx, [ecx + 2]
test ax, ax
jne 0x407ec3
mov eax, dword [ebx + 0x10]
xor ecx, ecx
mov word [edi + eax], cx
mov esi, dword [ebx + 0x10]
test esi, esi
je 0x407fe6
movzx eax, word [esi]
test ax, ax
je 0x407fe6
mov ecx, eax
push ecx
call fcn.004e0685
add esp, 4
test eax, eax
je 0x407f17
movzx eax, word [esi + 2]
add esi, 2
push eax
call fcn.004e0685
add esp, 4
test eax, eax
jne 0x407f03
movzx eax, word [esi]
mov ebx, eax
test ax, ax
je 0x407fcf
cmp eax, 0x22
lea ecx, [esi + 2]
movzx eax, word [ecx]
cmove esi, ecx
mov edx, eax
mov edi, esi
mov esi, ecx
mov dword [ebp + 8], edi
test ax, ax
je 0x407f74
mov ecx, edx
movzx eax, cx
cmp ebx, 0x22
jne 0x407f56
cmp eax, ebx
jne 0x407f63
movzx eax, word [esi + 2]
test ax, ax
je 0x407f71
push eax
call fcn.004e0685
add esp, 4
test eax, eax
jne 0x407f71
movzx eax, word [esi + 2]
add esi, 2
mov ecx, eax
test ax, ax
jne 0x407f41
mov edi, dword [ebp + 8]
cmp word [esi], 0
je 0x407f82
xor eax, eax
mov word [esi], ax
add esi, 2
cmp word [edi], 0
mov edx, dword [ebp - 0x10]
je 0x407fab
mov eax, dword [edx + 8]
cmp dword [edx + 0xc], eax
je 0x407f9b
mov dword [eax], edi
add dword [edx + 8], 4
jmp 0x407fab
lea ecx, [ebp + 8]
push ecx
push eax
lea ecx, [edx + 4]
call fcn.00408160
mov edx, dword [ebp - 0x10]
movzx eax, word [esi]
mov ecx, eax
test ax, ax
jne 0x407ef6
mov eax, edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x408430
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f98fd
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push ebx
push esi
push edi
mov eax, dword [0x53e200]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
call fcn.004082c0
mov edi, dword [ebp + 8]
test edi, edi
js 0x4084d7
call fcn.00405490
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
test ebx, ebx
je 0x4084d7
call fcn.004082c0
mov esi, eax
push esi
mov dword [ebp - 0x10], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [ebp - 4], 0
mov eax, dword [ebx]
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], eax
call fcn.004082c0
mov edi, eax
lea eax, [ebp - 0x18]
push eax
lea ecx, [edi + 0x18]
call fcn.00408c80
push eax
add eax, 0x10
push eax
push ecx
lea eax, [ebp - 0x18]
push eax
lea ecx, [edi + 0x18]
call fcn.00408ca0
cmp byte [ebp - 0x14], 0
jne 0x4084eb
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x14]
cmp eax, dword [ebx]
je 0x4084eb
test esi, esi
je 0x4084d7
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc dword [ebx + 8]
mov eax, dword [ebp + 8]
mov dword [ebx + 0xc], eax
test esi, esi
je 0x4084ff
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x408520
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f992d
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
push edi
mov eax, dword [0x53e200]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
call fcn.004082c0
call fcn.00405490
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
test edi, edi
je 0x4085f0
mov eax, dword [edi + 8]
cmp eax, 1
jl 0x4085f0
add eax, 0xffffffff
mov dword [edi + 8], eax
jne 0x4085dc
call fcn.004082c0
mov esi, eax
push esi
mov dword [ebp - 0x14], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea ebx, [edi + 0xc]
mov dword [ebp - 4], 0
lea eax, [ebp - 0x10]
push ebx
push eax
call fcn.004082c0
lea ecx, [eax + 0x18]
call fcn.004086d0
call fcn.004082c0
mov edi, dword [ebp - 0x10]
cmp edi, dword [eax + 0x18]
je 0x4085cb
call fcn.004082c0
push edi
lea ecx, [eax + 0x18]
call fcn.00408840
push 0x18
push eax
call fcn.004c625e
add esp, 8
mov dword [ebx], 0xffffffff
test esi, esi
je 0x4085dc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret