joyce8/EMBER2024-capa huggingface dataset:
Function at 0x42f180
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa4
mov eax, dword [ebp + 8]
push ebx
push esi
xor ebx, ebx
lea edx, [eax + 0x50]
lea ecx, [eax + 8]
push edi
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0x3ff00000
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0x3ff00000
xor eax, eax
fld qword [ecx]
fadd qword [edx]
add eax, 8
add ecx, 8
sub edx, 8
cmp eax, 0x20
fsub qword [esp + eax + 0x48]
fstp qword [esp + eax + 0x50]
fld qword [ecx - 8]
fsub qword [edx + 8]
fadd qword [esp + eax + 0x78]
fstp qword [esp + eax + 0x80]
jle 0x42f1c2
mov eax, dword [0x4593f0]
mov ecx, dword [0x4593f4]
mov dword [esp + 0x10], eax
lea edx, [esp + 0x50]
mov dword [esp + 0x14], ecx
push 5
mov eax, ecx
mov ecx, dword [esp + 0x14]
push edx
push eax
push ecx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x44], ebx
lea edi, [esp + 0x60]
call fcn.0042f3b0
mov edx, dword [ebp + 0xc]
add esp, 0x10
mov dword [esp + 0x44], edx
mov esi, 0x4593f0
cmp esi, 0x459580
jge 0x42f37d
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 8]
add esi, 8
fstp qword [esp + 0x28]
mov dword [esp + 0x38], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x3c], ecx
push 5
mov ecx, eax
push edi
push ecx
push edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
call fcn.0042f3b0
fst qword [esp + 0x58]
fld qword [esp + 0x38]
fmul st(1)
add esp, 0x10
fcomp qword [0x444ea0]
fnstsw ax
test ah, 0x41
je 0x42f36b
fstp st(0)
sub esi, 8
mov ebx, 2
fld qword [esp + 0x38]
fadd qword [esp + 0x10]
push 5
push edi
fmul qword [0x444e98]
fstp qword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
push eax
push ecx
call fcn.0042f3b0
fld st(0)
fmul qword [esp + 0x58]
add esp, 0x10
fcomp qword [0x444ea0]
fnstsw ax
test ah, 0x41
je 0x42f2e4
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
fstp qword [esp + 0x28]
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
jmp 0x42f2f8
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
fstp qword [esp + 0x48]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
dec ebx
jne 0x42f294
fld qword [esp + 0x38]
fsub qword [esp + 0x10]
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
add eax, 8
fmul qword [esp + 0x48]
fld qword [esp + 0x28]
fsub qword [esp + 0x48]
mov dword [esp + 0x44], eax
inc edi
mov dword [esp + 0x1c], edi
lea edi, [esp + 0x80]
fdivp st(1)
fsubr qword [esp + 0x10]
fst qword [esp + 0x28]
fld st(0)
fstp qword [eax - 8]
mov eax, 1
sub eax, ecx
mov dword [esp + 0x34], eax
jne 0x42f34e
lea edi, [esp + 0x50]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
fstp qword [esp + 0x10]
push 5
push edi
push ecx
push edx
call fcn.0042f3b0
mov ebx, dword [esp + 0x2c]
add esp, 0x10
cmp ebx, 0xa
jl 0x42f22f
fstp st(0)
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ebx, 0xa
fstp st(0)
jge 0x42f3a3
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
sub ecx, eax
mov edx, 0xa
mov esi, dword [ecx + eax]
mov dword [eax], esi
mov esi, dword [ecx + eax + 4]
mov dword [eax + 4], esi
add eax, 8
dec edx
jne 0x42f391
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x43585d
Capabilities:
Get graphical window text

Disassembly:
push esi
mov esi, ecx
cmp dword [esi + 0x4c], 0
jne 0x435896
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowTextLengthA]
lea ecx, [eax + 1]
push ecx
mov ecx, dword [esp + 0xc]
push eax
call fcn.0041e5ba
push eax
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowTextA]
mov ecx, dword [esp + 8]
push 0xffffffffffffffff
call fcn.0041e48e
pop esi
ret 4
mov ecx, dword [esi + 0x4c]
mov eax, dword [ecx]
pop esi
jmp dword [eax + 0x8c]

Function at 0x436a84
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
push ebp
push esi
push edi
xor edi, edi
xor ebx, ebx
cmp dword [esp + 0x14], edi
mov ebp, ecx
je 0x436ac7
call fcn.0043b898
mov esi, dword [eax + 0xc]
push 0xf0
push dword [esp + 0x18]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
test eax, eax
je 0x436ac7
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov edi, eax
test edi, edi
je 0x436ae2
push edi
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
push ebx
mov ecx, ebp
call fcn.00435be9
test ebx, ebx
mov esi, eax
je 0x436ae0
test edi, edi
je 0x436ae0
push edi
call dword [sym.imp.KERNEL32.dll_FreeResource]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
ret 4

Function at 0x4379d0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, ecx
cmp dword [edi + 0x54], 0
mov eax, dword [edi + 0x58]
mov esi, dword [edi + 0x5c]
mov dword [ebp - 4], eax
je 0x437a07
call fcn.0043b898
mov ebx, dword [eax + 0xc]
push 5
push dword [edi + 0x54]
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceA]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x437a18
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
xor ebx, ebx
inc ebx
test esi, esi
je 0x437a51
cmp word [esi + 2], 0xffff
mov ecx, dword [esi]
jne 0x437a36
mov ecx, dword [esi + 0xc]
mov ax, word [esi + 0x12]
mov si, word [esi + 0x14]
jmp 0x437a3e
mov ax, word [esi + 0xa]
mov si, word [esi + 0xc]
test cx, 0x1801
jne 0x437a4f
test ax, ax
jne 0x437a4f
test si, si
je 0x437a51
xor ebx, ebx
cmp dword [edi + 0x54], 0
je 0x437a60
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_FreeResource]
pop edi
pop esi
mov eax, ebx
pop ebx
leave
ret
Function at 0x437cb2
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov eax, 0x43ea53
call fcn.0042113c
sub esp, 0x18
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 0x58]
mov ebx, dword [esi + 0x5c]
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x18], eax
call fcn.0043b898
cmp dword [esi + 0x54], 0
mov edi, dword [eax + 0xc]
je 0x437d00
call fcn.0043b898
mov edi, dword [eax + 0xc]
push 5
push dword [esi + 0x54]
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x437d11
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
test ebx, ebx
jne 0x437d1d
or eax, 0xffffffff
jmp 0x437e20
mov ecx, esi
call fcn.004377f2
mov dword [ebp - 0x14], eax
call fcn.00434eaf
and dword [ebp - 0x20], 0
cmp dword [ebp - 0x14], 0
je 0x437d60
call dword [sym.imp.USER32.dll_GetDesktopWindow]
cmp dword [ebp - 0x14], eax
je 0x437d60
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_IsWindowEnabled]
test eax, eax
je 0x437d60
push 0
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_EnableWindow]
mov dword [ebp - 0x20], 1
and dword [ebp - 4], 0
push esi
call fcn.00436118
push dword [ebp - 0x14]
call fcn.00434e07
push edi
push eax
push ebx
mov ecx, esi
call fcn.00437aa5
xor ebx, ebx
cmp eax, ebx
je 0x437dd4
test byte [esi + 0x38], 0x10
je 0x437da2
push 4
pop edi
mov ecx, esi
call fcn.00436d94
test ah, 1
je 0x437d9a
push 5
pop edi
push edi
mov ecx, esi
call fcn.004348ab
cmp dword [esi + 0x1c], ebx
je 0x437dd4
push 0x97
push ebx
push ebx
push ebx
push ebx
push ebx
mov ecx, esi
call fcn.00436f1e
jmp 0x437dd4
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x20], ebx
je 0x437de8
push 1
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_EnableWindow]
cmp dword [ebp - 0x14], ebx
je 0x437e01
call dword [sym.imp.USER32.dll_GetActiveWindow]
cmp eax, dword [esi + 0x1c]
jne 0x437e01
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_SetActiveWindow]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x60]
mov ecx, esi
call fcn.0043782c
cmp dword [esi + 0x54], ebx
je 0x437e1d
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_FreeResource]
mov eax, dword [esi + 0x40]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret

Function at 0x4399ee
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x104
mov eax, dword [0x454880]
push esi
push dword [ebp + 0xc]
mov dword [ebp - 4], eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
mov eax, 0x100
cmp esi, eax
ja 0x439a3d
push eax
lea eax, [ebp - 0x104]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetWindowTextA]
cmp eax, esi
jne 0x439a3d
push dword [ebp + 0xc]
lea eax, [ebp - 0x104]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x439a49
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetWindowTextA]
mov ecx, dword [ebp - 4]
pop esi
call fcn.0042103e
leave
ret 8
Function at 0x43a86b
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [0x454880]
push esi
mov esi, ecx
cmp dword [esi + 0x50], 0
mov dword [ebp - 4], eax
je 0x43a8b8
push dword [ebp + 8]
call fcn.0043d068
mov esi, eax
test esi, esi
je 0x43a8e0
push edi
push 4
lea eax, [ebp + 0x10]
push eax
push 4
push 0
push dword [ebp + 0xc]
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push esi
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
test edi, edi
sete al
pop edi
jmp 0x43a8e0
push dword [ebp + 0x10]
lea eax, [ebp - 0x14]
push 0x43fe44
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push dword [esi + 0x64]
lea eax, [ebp - 0x14]
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov ecx, dword [ebp - 4]
pop esi
call fcn.0042103e
leave
ret 0xc

Function at 0x43bc3d
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
cmp dword [ebp + 0xc], 0x800
mov eax, dword [0x454880]
mov dword [ebp - 4], eax
lea eax, [ebp + 0xc]
jne 0x43bc9b
push 0x44342c
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push esi
lea eax, [ebp + 0xc]
push eax
push dword [ebp + 8]
mov esi, 0x112
lea eax, [ebp - 0x118]
push esi
push eax
call fcn.0042154c
add esp, 0x10
cmp eax, 0xffffffff
je 0x43bcaf
cmp eax, esi
jae 0x43bcaf
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
jmp 0x43bcb1
push 4
push eax
push 3
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
jne 0x43bc66
jmp 0x43bcb2
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
call fcn.0042103e
leave
ret
Function at 0x43bcd2
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x454880]
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
xor ebx, ebx
push str.kernel32.dll
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], ebx
xor esi, esi
call edi
push str.GetUserDefaultUILanguage
push eax
mov dword [ebp - 0x20], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x43bd74
call eax
mov esi, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov ebx, 0x3ff
mov edi, 0xfc00
mov dword [ebp - 0x18], eax
movzx eax, ax
mov ecx, eax
and ecx, ebx
movzx ecx, cx
and eax, edi
or eax, ecx
push eax
mov dword [ebp - 0x1c], ecx
call esi
push dword [ebp - 0x1c]
mov dword [ebp - 0x3c], eax
call esi
push str.GetSystemDefaultUILanguage
push dword [ebp - 0x20]
mov dword [ebp - 0x38], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
call eax
mov dword [ebp - 0x18], eax
movzx eax, ax
mov ecx, eax
and ecx, ebx
movzx ebx, cx
and eax, edi
or eax, ebx
push eax
call esi
push ebx
mov dword [ebp - 0x34], eax
call esi
mov dword [ebp - 0x30], eax
push 4
xor ebx, ebx
jmp 0x43be76
call dword [sym.imp.KERNEL32.dll_GetVersion]
test eax, eax
jns 0x43be24
lea eax, [ebp - 0x1c]
push eax
push 0x20019
push ebx
push str.Control_PanelDesktopResourceLocale
push reloc.WS2_32.dll_accept
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x43be77
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x24]
push eax
push ebx
push ebx
push dword [ebp - 0x1c]
mov dword [ebp - 0x20], 0x10
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x43be19
cmp dword [ebp - 0x24], 1
jne 0x43be19
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push 0x44343c
push eax
call fcn.00421518
add esp, 0xc
cmp eax, 1
jne 0x43be19
mov eax, dword [ebp - 0x28]
mov esi, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov dword [ebp - 0x18], eax
movzx eax, ax
mov ecx, eax
and ecx, 0x3ff
movzx edi, cx
and eax, 0xfc00
or eax, edi
push eax
call esi
push edi
mov dword [ebp - 0x3c], eax
call esi
push 2
mov dword [ebp - 0x38], eax
pop esi
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x43be77
push str.ntdll.dll
call edi
cmp eax, ebx
je 0x43be77
lea ecx, [ebp - 0x18]
push ecx
push 0x43bcbc
push 1
push 0x10
push eax
mov dword [ebp - 0x18], ebx
call dword [sym.imp.KERNEL32.dll_EnumResourceLanguagesA]
cmp word [ebp - 0x18], bx
je 0x43be77
movzx eax, word [ebp - 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov ecx, eax
and ecx, 0x3ff
movzx edi, cx
and eax, 0xfc00
or eax, edi
push eax
call esi
push edi
mov dword [ebp - 0x3c], eax
call esi
mov dword [ebp - 0x38], eax
push 2
pop esi
mov dword [ebp + esi*4 - 0x3c], 0x800
inc esi
xor edi, edi
cmp esi, ebx
jle 0x43be9d
push dword [ebp + edi*4 - 0x3c]
push dword [ebp + 8]
call fcn.0043bc3d
cmp eax, ebx
pop ecx
pop ecx
jne 0x43be9f
inc edi
cmp edi, esi
jl 0x43be86
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
pop ebx
call fcn.0042103e
leave
ret 4
Function at 0x43beae
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push edi
xor edi, edi
mov dword [ecx + 0x9c], edi
cmp dword [str.SoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer], edi
mov dword [ebp - 0x10], ecx
mov dword [ebp - 4], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], 4
mov dword [ebp - 0xc], edi
mov ebx, 0x45444c
je 0x43bf6a
push esi
lea eax, [ebp - 4]
push eax
push 1
push edi
push dword [ebx]
push reloc.WS2_32.dll_accept
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x43bf52
mov esi, dword [ebx + 4]
jmp 0x43bf4c
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp - 8]
push ecx
lea ecx, [ebp - 0xc]
push ecx
push edi
push eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x43bf3c
cmp dword [ebp - 0xc], 4
jne 0x43bf3c
cmp dword [ebp - 8], edi
mov eax, dword [ebp - 0x10]
mov ecx, dword [esi + 4]
je 0x43bf34
or dword [eax + 0x9c], ecx
jmp 0x43bf3c
not ecx
and dword [eax + 0x9c], ecx
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], 4
mov dword [ebp - 0xc], edi
add esi, 8
mov eax, dword [esi]
cmp eax, edi
jne 0x43bf00
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add ebx, 8
cmp dword [ebx], edi
mov dword [ebp - 4], edi
jne 0x43bee3
pop esi
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
pop edi
inc eax
pop ebx
leave
ret

Function at 0x43c323
Capabilities:
Query or enumerate registry key

Disassembly:
mov eax, 0x43eb60
call fcn.0042113c
sub esp, 0x11c
mov eax, dword [0x454880]
push ebx
push esi
push edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov dword [ebp - 0x10], esp
lea ecx, [ebp - 0x124]
push ecx
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov esi, eax
test esi, esi
jne 0x43c41c
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0
push dword [ebp - 0x124]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
mov esi, eax
test esi, esi
jne 0x43c3f0
and dword [ebp - 4], eax
lea eax, [ebp - 0x11c]
push eax
lea ecx, [ebp - 0x120]
call fcn.00409920
lea eax, [ebp - 0x120]
push eax
push dword [ebp - 0x124]
mov byte [ebp - 4], 1
call fcn.0043c323
mov ecx, dword [ebp - 0x120]
mov esi, eax
test esi, esi
setne bl
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.00401fc0
test bl, bl
jne 0x43c3f0
or dword [ebp - 4], 0xffffffff
jmp 0x43c361
cmp esi, 0x103
je 0x43c400
cmp esi, 0x3f2
jne 0x43c410
mov eax, dword [ebp + 0xc]
push dword [eax]
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov esi, eax
push dword [ebp - 0x124]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x14]
mov eax, esi
call fcn.0042103e
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x43c754
Capabilities:
Get thread local storage value

Disassembly:
push ebx
push esi
mov esi, ecx
push edi
lea ebx, [esi + 0x1c]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [esp + 0x10]
test edi, edi
jle 0x43c789
cmp edi, dword [esi + 0xc]
jge 0x43c789
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x43c789
cmp edi, dword [eax + 8]
jge 0x43c789
mov eax, dword [eax + 0xc]
mov edi, dword [eax + edi*4]
jmp 0x43c78b
xor edi, edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, edi
pop edi
pop esi
pop ebx
ret 4

Function at 0x43c88f
Capabilities:
Allocate thread local storage

Disassembly:
xor eax, eax
push esi
mov esi, ecx
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x18], 4
mov dword [esi + 4], eax
mov dword [esi + 8], 1
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
cmp eax, 0xffffffff
mov dword [esi], eax
jne 0x43c8c3
jmp fcn.004326c0
lea eax, [esi + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov eax, esi
pop esi
ret

Function at 0x43c934
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, ecx
lea esi, [edi + 0x1c]
push esi
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp + 8]
xor ebx, ebx
cmp eax, ebx
jle 0x43ca2d
cmp eax, dword [edi + 0xc]
jge 0x43ca2d
push dword [edi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
cmp esi, ebx
je 0x43c985
mov ecx, dword [ebp + 8]
cmp ecx, dword [esi + 8]
jl 0x43ca16
cmp dword [ebp + 0xc], ebx
je 0x43ca16
jmp 0x43c9af
push 0x10
call fcn.0043c620
cmp eax, ebx
je 0x43c99b
mov ecx, eax
call fcn.0043c886
mov esi, eax
jmp 0x43c99d
xor esi, esi
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
mov dword [esi + eax], ecx
mov dword [edi + 0x14], esi
mov eax, dword [esi + 0xc]
cmp eax, ebx
jne 0x43c9c6
mov eax, dword [edi + 0xc]
shl eax, 2
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
jmp 0x43c9d6
mov ecx, dword [edi + 0xc]
push 2
shl ecx, 2
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_LocalReAlloc]
cmp eax, ebx
jne 0x43c9e8
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.004326c0
mov ecx, dword [esi + 8]
mov dword [esi + 0xc], eax
mov edx, dword [edi + 0xc]
sub edx, ecx
shl edx, 2
push edx
lea eax, [eax + ecx*4]
push ebx
push eax
call fcn.004211a0
mov eax, dword [edi + 0xc]
add esp, 0xc
push esi
mov dword [esi + 8], eax
push dword [edi]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov ecx, dword [ebp + 8]
mov eax, dword [esi + 0xc]
cmp eax, ebx
je 0x43ca28
cmp ecx, dword [esi + 8]
jge 0x43ca28
mov edx, dword [ebp + 0xc]
mov dword [eax + ecx*4], edx
push dword [ebp - 4]
jmp 0x43ca2e
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x43caed
Capabilities:
Get thread local storage value

Disassembly:
push ebx
push esi
mov esi, ecx
lea ebx, [esi + 0x1c]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esp + 0x10], 0
jne 0x43cb1b
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x43cb39
push dword [esp + 0xc]
mov ecx, esi
push eax
call fcn.0043ca57
jmp 0x43cb39
mov eax, dword [esi + 0x14]
test eax, eax
je 0x43cb39
push edi
push dword [esp + 0x10]
mov edi, dword [eax + 4]
push eax
mov ecx, esi
call fcn.0043ca57
test edi, edi
mov eax, edi
jne 0x43cb23
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop esi
pop ebx
ret 8
mov ecx, dword [0x4ec734]
test ecx, ecx
je 0x43cbec
jmp 0x43caec
ret 8

Function at 0x43d792
Capabilities:
Get socket status

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10c
push ebx
mov ebx, dword [ebp + 8]
push edi
xor edi, edi
cmp ebx, edi
jne 0x43d7af
cmp dword [ebp + 0xc], edi
je 0x43d8a4
push 1
push ebx
call fcn.0043d390
test eax, eax
jne 0x43d8a4
push esi
push edi
push ebx
call fcn.0043d390
mov esi, eax
cmp esi, edi
jne 0x43d7fb
call fcn.0043b8be
mov ecx, dword [eax + 0x30]
push 0xffffffffffffffff
call fcn.00433338
mov esi, eax
cmp esi, edi
je 0x43d8a3
push edi
push 0xffffffffffffffff
mov dword [esi + 4], ebx
call fcn.0043d6b2
push edi
push esi
push dword [esi + 4]
call fcn.0043d5eb
movzx eax, word [ebp + 0xc]
mov ebx, dword [ebp + 0xc]
shr ebx, 0x10
dec eax
je 0x43d854
dec eax
je 0x43d84a
dec eax
dec eax
je 0x43d840
sub eax, 4
je 0x43d836
sub eax, 8
je 0x43d82c
sub eax, 0x10
jne 0x43d8a3
mov eax, dword [esi]
push ebx
mov ecx, esi
call dword [eax + 0x30]
jmp 0x43d8a3
mov eax, dword [esi]
push ebx
mov ecx, esi
call dword [eax + 0x2c]
jmp 0x43d8a3
mov eax, dword [esi]
push ebx
mov ecx, esi
call dword [eax + 0x28]
jmp 0x43d8a3
mov eax, dword [esi]
push ebx
mov ecx, esi
call dword [eax + 0x24]
jmp 0x43d8a3
mov eax, dword [esi]
push ebx
mov ecx, esi
call dword [eax + 0x20]
jmp 0x43d8a3
mov eax, dword [esi + 4]
mov dword [ebp - 0x108], eax
lea eax, [ebp - 8]
push eax
push edi
push edi
lea eax, [ebp - 0x10c]
push eax
push edi
mov dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x10c], 1
call dword [sym.imp.WS2_32.dll_select]
cmp eax, 0xffffffff
mov dword [ebp + 0xc], eax
jne 0x43d891
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov ebx, eax
cmp dword [ebp + 0xc], 1
je 0x43d89b
cmp ebx, edi
je 0x43d8a3
mov eax, dword [esi]
push ebx
mov ecx, esi
call dword [eax + 0x1c]
pop esi
pop edi
pop ebx
leave
ret 8
Function at 0x40314c
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
movzx eax, word [0x4db020]
mov dword [ebp - 8], eax
lea eax, [ebp - 4]
push eax
push 1
push 0
push 0x4031e4
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x4031c4
xor eax, eax
push ebp
push 0x4031bd
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0xc], 4
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
push 0
push 0
push 0x403200
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegQueryValueExA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4031c4
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey
ret
mov ax, word [0x4db020]
and ax, 0xffc0
mov dx, word [ebp - 8]
and dx, 0x3f
or ax, dx
mov word [0x4db020], ax
mov esp, ebp
pop ebp
ret

Function at 0x403fb4
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x4de04c], 0
je 0x404015
cmp word [0x4de220], 0xd7b2
jne 0x403fdd
cmp dword [0x4de228], 0
jbe 0x403fdd
mov eax, 0x4de21c
call dword [0x4de238]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x4db06c
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
push 0
lea eax, [esp + 4]
push eax
push 2
push 0x40403c
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x4db030], 0
jne 0x404031
push 0
push 0x4db064
push 0x4db06c
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret

Function at 0x404168
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
mov eax, 8
call fcn.004027b8
mov dword [eax], edi
mov edx, dword [ebp + 0x10]
mov dword [eax + 4], edx
mov byte [0x4de04d], 1
mov edx, dword [ebp + 8]
push edx
mov edx, dword [ebp + 0xc]
push edx
push eax
mov eax, 0x404130
push eax
push esi
push ebx
call sub.kernel32.dll_CreateThread
pop edi
pop esi
pop ebx
pop ebp
ret 0xc