joyce8/EMBER2024-capa huggingface dataset:
Function at 0x1000bf60
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov eax, dword [esp + 0xc]
push ebp
mov ebp, dword [esp + 0x14]
add ebp, 0xffffee69
lea ecx, [eax - 0x4b6]
mov dword [esp + 4], ebp
lea edx, [eax - 0x2c2]
mov eax, dword [esp + 0x18]
add eax, 0xfffffd77
cmp eax, ecx
jge 0x1000c01e
mov eax, dword [esp + 0x20]
lea ecx, [edx - 0x37]
add eax, 0xffffff3b
cmp eax, ecx
je 0x1000c099
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x12c]
imul ecx, dword [eax + 0x64], 0xdb35c39c
mov eax, dword [edx + 0xf0]
mov dword [eax + 4], ecx
mov eax, dword [edx + 0x12c]
mov ecx, dword [eax + 0x64]
mov eax, dword [edx + 0xf0]
sub ecx, 0x19ad
mov dword [eax + 8], ecx
mov ecx, dword [edx + 0x58]
mov eax, dword [ecx + 0x108]
xor dword [edx + 0x13c], eax
dec dword [ecx + 0x108]
xor dword [edx + 0x60], 0x1590
cmp dword [edx + 0x98], 0x1590
jb 0x1000c099
mov eax, dword [edx + 0x13c]
add eax, 0x19ad
imul eax, dword [edx + 0x50]
mov dword [edx + 0x50], eax
lea eax, [ebp + 0x13fc]
pop ebp
pop ecx
ret
or edx, dword [esp + 0x34]
push esi
mov esi, dword [esp + 0x2c]
push edi
mov eax, dword [esi + 0x60]
mov edi, dword [esi + 0xd8]
add eax, edx
mov dword [esp + 0x18], eax
cmp edi, eax
je 0x1000c097
push ebx
mov ebx, dword [esi + 0x12c]
add ebx, 0x30
mov eax, ebp
cmp ebp, ebx
je 0x1000c08d
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esi + 0x10c]
add ebp, 0xfffff3d6
add ecx, dword [esp + 0x40]
mov edx, dword [esi + 0x198]
mov dword [esp + 0x20], ecx
mov ecx, dword [esi + 0x118]
nop
xor edx, dword [esp + 0x20]
add eax, 4
or ecx, ebp
cmp eax, ebx
jne 0x1000c070
mov ebp, dword [esp + 0x10]
mov dword [esi + 0x118], ecx
mov dword [esi + 0x198], edx
add edi, 2
cmp edi, dword [esp + 0x1c]
jne 0x1000c045
pop ebx
pop edi
pop esi
lea eax, [ebp + 0x13fc]
pop ebp
pop ecx
ret
Function at 0x1000c8f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
add eax, 0xfffffdcc
mov edx, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x3c]
add eax, 0x576
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x4c]
add eax, 0xfffffb8f
push ebx
push ebp
mov ebp, dword [esp + 0x38]
lea ebx, [ecx - 0x1ac]
mov dword [esp + 0x34], eax
lea eax, [ecx - 0x1b5]
push esi
mov dword [esp + 0x48], eax
lea esi, [edx - 0x1dd]
lea eax, [edx - 0x4b6]
mov dword [esp + 0xc], esi
push edi
lea edi, [ebp + 0x30d]
cmp eax, ebx
jle 0x1000c983
mov edx, dword [esp + 0x64]
pop edi
pop esi
pop ebp
mov eax, dword [edx + 0xf8]
pop ebx
mov ecx, dword [eax + 0x198]
mov eax, dword [edx + 0xf0]
add ecx, 0x41735589
mov dword [eax], ecx
mov eax, dword [esp + 0x50]
add eax, 0x738
add esp, 0x28
ret
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x64]
cmp dword [esi + 0x78], 0
je 0x1000cac8
mov edx, dword [esp + 0x14]
and edi, ebp
or ebx, 0x14e4
mov dword [esp + 0x18], edi
mov dword [esp + 0x2c], ebx
lea eax, [edx + 0x11d7]
mov dword [esp + 0x5c], eax
nop dword [eax]
nop word [eax + eax]
mov eax, dword [esi + 0x2c]
imul eax, dword [esp + 0x44]
mov ebp, dword [esi + 0x118]
mov edi, dword [esi + 0x158]
add ebp, edx
or edi, dword [esp + 0x40]
and ebp, 0x156f
sub edi, 0x13a4
xor eax, dword [esi + 0x12c]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0x13c]
or eax, 0x1839
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x40]
or eax, dword [esi + 0x1b8]
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0x170]
add eax, edx
mov edx, dword [esi + 0xd0]
xor eax, dword [esp + 0x3c]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x24]
sub eax, 0x1590
imul ebx, edx, 0x1869
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0xf8]
mov ecx, eax
xor ecx, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
mov ecx, edx
or edx, dword [esp + 0x3c]
or ecx, eax
xor edx, dword [esi + 0x98]
mov eax, dword [esi + 0x50]
or eax, dword [esi + 0xc8]
sub ecx, dword [esi + 0x78]
push edx
push eax
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x64]
push ecx
push eax
push edi
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
push ebx
push ebp
push dword [esp + 0x34]
push dword [esp + 0x3c]
push dword [esp + 0x44]
push esi
push dword [esp + 0x50]
push dword [esp + 0x58]
push dword [esp + 0x60]
call fcn.10002b80
mov edx, dword [esp + 0x90]
mov ecx, 0xffffe5ba
sub ecx, dword [esp + 0x7c]
add edx, 3
add dword [esi + 0x1b8], ecx
add esp, 0x38
mov ecx, dword [esi + 0x78]
add ecx, eax
mov dword [esp + 0x58], edx
cmp edx, ecx
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x14]
jne 0x1000c9c0
mov eax, dword [esp + 0x60]
pop edi
pop esi
pop ebp
add eax, 0x738
pop ebx
add esp, 0x28
ret
Function at 0x1000db00
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x14
mov dword [esp + 4], ecx
mov ecx, dword [0x1004d438]
push ebx
mov ebx, dword [0x1004d3f0]
mov dword [esp + 4], edx
push ebp
mov ebp, dword [0x1004d440]
mov ebx, dword [edx + ebx*8]
mov edx, dword [0x1004d3e0]
add edx, edx
push esi
mov esi, dword [esp + 0x24]
movzx eax, si
mov ecx, dword [ecx + edx*8]
sub ebx, eax
mov edx, dword [0x1004d3f0]
sub ecx, ebp
mov dword [esp + 0x14], ecx
lea ecx, [esi + 1]
mov esi, dword [esp + 0xc]
movzx ecx, cx
or ebp, dword [0x1004d3cc]
push edi
mov edi, dword [0x1004d43c]
lea ecx, [ecx + ecx*2]
mov dword [esp + 0x28], eax
mov ecx, dword [esi + ecx*4]
mov eax, dword [esp + 0x2c]
add ecx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [0x427f]
mov dword [0x1004d420], ecx
mov ecx, dword [esi + edx*4]
mov esi, dword [esp + 0x14]
movzx eax, ax
mov dword [esp + 0x20], eax
add dword [esi + edi*4], ecx
mov ecx, dword [ebx*4 + 0x1377]
sub ecx, dword [0x1004d434]
mov si, word [0x1004d400]
add ecx, eax
mov ebx, dword [esp + 0x10]
mov dword [0x1004d434], ecx
lea ecx, [edx + edx*2]
and dword [ecx*4 + 0xf7b], 0x1484
mov ecx, dword [0x1004d418]
movzx edx, si
add edx, edx
add dword [ecx + edx*8], ebp
mov ecx, 0xffff
add si, cx
mov ecx, dword [esp + 0x28]
xor dword [0x1004d408], ecx
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + edi*4]
lea edi, [ecx + edi*4]
mov ecx, eax
mov word [0x1004d400], si
add ecx, ecx
cmp edx, dword [ebx + ecx*8]
je 0x1000dc31
movzx esi, byte [0x1004d3c7]
mov ebp, dword [esp + 0x1c]
nop
mov ecx, dword [edi]
lea eax, [eax + eax*2]
mov ebx, dword [esp + 0x20]
imul ecx, esi
and dword [ebp + edx*8], ecx
inc edx
mov ecx, dword [esp + 0x14]
add dword [ecx + eax*4], ebx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x10]
inc eax
mov dword [esp + 0x2c], eax
movzx eax, ax
mov ecx, eax
add ecx, ecx
cmp edx, dword [ebx + ecx*8]
jne 0x1000dc00
pop edi
pop esi
pop ebp
mov eax, 0x2e7
pop ebx
add esp, 0x14
ret
Function at 0x1000edd0
Capabilities:
Allocate or change rwx memory
Create thread
Encode data using xor
Spawn thread to rwx shellcode

Disassembly:
push ecx
mov eax, dword [esp + 0x14]
add edx, 0xfffffc9f
add eax, 0xfffffec0
mov dword [esp], eax
mov eax, dword [esp + 0x30]
push ebp
push esi
push edi
lea ebp, [eax - 0x1590]
lea edi, [eax + 0x13b]
mov eax, dword [esp + 0x34]
add eax, 0xffffffc9
lea esi, [ecx - 0x1292]
mov dword [esp + 0x20], eax
add eax, 0x11c
cmp ebp, eax
je 0x1000ef13
mov eax, dword [esp + 0x24]
add eax, 0x612
cmp edi, eax
jge 0x1000ee99
mov esi, dword [esp + 0x38]
push 0x40
push 0x3000
mov eax, dword [esi + 0x44]
mov eax, dword [eax + 0x50]
add eax, 0xfff
and eax, 0xfffff000
mov dword [esi + 0xc4], eax
mov eax, dword [esi + 0x154]
xor eax, 0x1550
sub dword [esi + 0x118], eax
push dword [esi + 0xc4]
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x64]
add dword [esi + 0x15c], 0xffffcf72
xor eax, 0x3e0
cmp eax, dword [esi]
jae 0x1000ef13
mov eax, 0xffffffb0
sub eax, esi
add dword [esi + 0x194], eax
mov eax, dword [esp + 0x24]
pop edi
pop esi
add eax, 0x1b5
pop ebp
pop ecx
ret
push ebx
mov ebx, dword [esp + 0x3c]
mov ecx, dword [ebx + 0x50]
mov eax, ecx
and eax, edi
cmp esi, eax
jb 0x1000eeef
mov edi, dword [esp + 0x24]
add edi, esi
and edi, ebp
cmp esi, edi
jg 0x1000ef12
sub edi, esi
shr edi, 2
inc edi
nop dword [eax + eax]
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov eax, dword [ebx + 0x30]
add eax, ebp
push eax
mov eax, dword [ebx + 0x1b8]
or eax, esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateActCtxA]
sub edi, 1
jne 0x1000eec0
mov eax, dword [esp + 0x28]
pop ebx
pop edi
pop esi
add eax, 0x1b5
pop ebp
pop ecx
ret
or ecx, dword [esp + 0x10]
sub ecx, dword [ebx + 0x24]
cmp esi, ecx
jne 0x1000ef12
mov eax, dword [ebx + 0x118]
xor eax, edx
inc esi
xor eax, 0x1648
cmp esi, ecx
je 0x1000ef00
mov dword [ebx + 0x118], eax
pop ebx
mov eax, dword [esp + 0x24]
pop edi
pop esi
add eax, 0x1b5
pop ebp
pop ecx
ret
Function at 0x1000ef30
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov ecx, dword [esp + 0x1c]
lea eax, [edx + 0x4c5]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x38]
lea ebp, [ecx - 0x1a4d]
mov dword [esp + 0x38], eax
lea eax, [edx - 0x1cd]
push edi
lea edi, [esi - 0x361]
mov dword [esp + 0x10], edi
lea ebx, [esi - 0x14fb]
cmp ebp, eax
jg 0x1000f00d
lea eax, [ecx - 0x2c9]
cmp dword [esp + 0x20], eax
jge 0x1000f123
mov ecx, dword [esp + 0x24]
lea eax, [esi - 0x1cc]
add ecx, 0xfffffe1c
cmp eax, ecx
jg 0x1000f123
mov esi, dword [esp + 0x38]
mov ecx, esi
push 0x190f
call fcn.10006fc0
mov eax, dword [esi + 0x28]
add esp, 4
mov ecx, dword [eax + 0x3c]
add ecx, eax
mov dword [esi + 0x44], ecx
mov ebx, dword [esi]
imul edx, dword [esi + 0x64], 0x9127ffb1
mov eax, dword [ebx + 0x40]
sub eax, 0x3b2
cmp eax, edx
je 0x1000efe6
mov edi, dword [esi + 0xf8]
sub edx, eax
mov ecx, dword [esi + 0x30]
mov eax, dword [edi + 0xc8]
or eax, 0x1869
or ecx, eax
mov dword [esi + 0x30], ecx
sub edx, 1
jne 0x1000efd1
cmp ebx, 0x1648
je 0x1000f123
mov eax, dword [esi + 0x24]
add esi, 0x10
pop edi
xor dword [eax + 0xc8], esi
mov eax, dword [esp + 0x38]
pop esi
pop ebp
add eax, 0xfffff96e
pop ebx
pop ecx
ret
imul ecx, edi, 0x14fb
cmp ebx, ecx
jge 0x1000f123
mov eax, dword [esp + 0x30]
sub ecx, ebx
mov esi, dword [esp + 0x38]
add eax, 0xfffffc64
imul eax, eax, 0x139b
dec ecx
mov dword [esp + 0x2c], eax
mov eax, 0xaaaaaaab
mul ecx
mov edi, edx
shr edi, 1
inc edi
nop dword [eax]
nop word [eax + eax]
imul eax, dword [esi + 0x1b8], 0xffffe8b3
mov ecx, dword [esi + 0x198]
mov edx, dword [esi + 0x16c]
push esi
push ecx
add dword [esi + 0x50], eax
mov eax, dword [esi + 0x19c]
and eax, ebx
and eax, dword [esi + 0x40]
push eax
sub esp, 8
mov eax, ecx
or eax, 0x19ad
and eax, dword [esi + 0xfc]
push eax
mov eax, dword [esi + 0xc8]
or eax, edx
or eax, ecx
push ecx
push eax
mov eax, dword [esi + 0x12c]
sub eax, edx
sub eax, ebp
push eax
mov eax, dword [esi + 0x118]
add eax, ebp
push eax
mov eax, dword [esi + 0x108]
imul eax, dword [esp + 0x54]
push ecx
mov ecx, dword [esi + 0x98]
or ecx, dword [esp + 0x3c]
push eax
call fcn.1000fab0
add esp, 0x30
mov eax, 0x1112
xor ax, word [esi + 0x118]
movzx eax, ax
push eax
mov eax, dword [esi + 0x1b8]
sub eax, dword [esi + 0x12c]
sub eax, dword [esi]
push eax
mov eax, dword [esi + 0xc8]
sub eax, dword [esp + 0x28]
push eax
mov eax, dword [esi + 0x58]
add eax, 0x1648
imul eax, dword [esi]
push eax
mov eax, dword [esi + 0x98]
and eax, 0x1648
push eax
mov eax, dword [esi + 0x198]
xor eax, dword [esp + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
sub edi, 1
jne 0x1000f050
mov eax, dword [esp + 0x3c]
pop edi
pop esi
pop ebp
add eax, 0xfffff96e
pop ebx
pop ecx
ret
Function at 0x1000f140
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add eax, 0xffffe5ba
push ebx
push ebp
mov ebp, dword [esp + 0x50]
push esi
push edi
mov edi, dword [esp + 0x54]
lea ebx, [ecx - 0x190f]
mov dword [esp + 0x54], eax
mov esi, edx
mov eax, dword [esp + 0x40]
add edi, 0xfffffd60
mov edx, dword [esp + 0x44]
add eax, 0xffffecd1
mov dword [esp + 0x44], eax
add edx, 0xfffffbe3
lea eax, [ecx - 0x778]
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x44]
add ebp, 0xfffffcc2
mov dword [esp + 0x4c], eax
lea eax, [ebx + 0x1197]
mov dword [esp + 0x28], ebx
cmp ecx, eax
jge 0x1000f34d
lea eax, [ebx + 0x1590]
cmp edi, eax
jge 0x1000f34d
lea eax, [edx - 0x3f6]
cmp ebp, eax
jl 0x1000f1f6
push 0x14fb
mov ecx, esi
call fcn.10006fc0
mov eax, dword [esi + 0x38]
add esp, 4
mov eax, dword [eax + 0x1b8]
xor eax, 0x13a4
imul eax, dword [esi + 0xc8]
mov dword [esi + 0xc8], eax
jmp 0x1000f349
mov eax, ecx
mov ecx, dword [esp + 0x54]
or eax, ecx
cmp edx, eax
jle 0x1000f229
sub ebx, ecx
mov ecx, dword [esp + 0x44]
add ebx, edi
cmp edx, ebx
je 0x1000f34d
mov eax, dword [esp + 0x58]
add dword [esi + 0x98], edi
add eax, 0xffffe7c7
mov dword [esi + 0x7c], eax
jmp 0x1000f34d
mov ecx, dword [esi + 0x19c]
mov eax, ebp
and eax, dword [esi + 0xc8]
mov dword [esp + 0x48], ecx
cmp ecx, eax
ja 0x1000f349
mov edi, dword [esp + 0x54]
imul eax, ebx, 0x16cb
add eax, 0x13fc
mov dword [esp + 0x40], eax
nop word [eax + eax]
mov edx, dword [esi + 0x94]
sub ebp, edi
mov ecx, dword [esi + 0xf8]
mov eax, edx
or ebp, dword [esi + 0x24]
xor edx, 0x132f
and edx, ecx
mov dword [esp + 0x18], ebp
mov ebp, dword [esi + 0x170]
or eax, 0x16cb
mov dword [esp + 0x20], edx
mov edx, dword [esi + 0x14]
imul edx, edi
mov edi, dword [esi + 0x38]
mov dword [esp + 0x24], eax
and edi, 0x440
mov eax, ebp
or edi, 0x130d
sub eax, ebx
and ebp, ecx
mov ecx, dword [esi + 0x1b8]
or ecx, dword [esi + 0x50]
sub ebx, dword [esi + 0x50]
xor ebp, dword [esi + 0x13c]
mov dword [esp + 0x1c], edx
mov edx, dword [esi + 0x12c]
and edx, dword [esi + 0x14]
and edx, dword [esi + 0x108]
mov dword [esp + 0x14], edx
mov edx, dword [esi + 0xfc]
imul edx, dword [esp + 0x4c]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0xc8]
xor eax, dword [esp + 0x10]
push eax
push ecx
push edx
mov edx, dword [esp + 0x30]
mov ecx, esi
push edi
push ebx
push ebp
push dword [esp + 0x58]
push dword [esp + 0x70]
push dword [esp + 0x34]
push dword [esp + 0x3c]
push dword [esp + 0x44]
push dword [esp + 0x4c]
call fcn.10001500
mov ebp, dword [esp + 0x88]
mov edi, eax
mov eax, dword [esp + 0x78]
add ebp, 0xfffffcc2
mov ebx, dword [esp + 0x58]
mov ecx, ebp
and ecx, dword [esi + 0xc8]
add eax, 3
add esp, 0x30
mov dword [esp + 0x48], eax
cmp eax, ecx
jbe 0x1000f260
mov ecx, dword [esp + 0x44]
mov eax, dword [esi + 0x1f4]
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x1c]
xor eax, 0x9be
cmp eax, 0x1839
ja 0x1000f375
imul eax, dword [esi + 0x94], 0x174d
add dword [esi + 0x50], eax
mov eax, 0xfffffe48
sub eax, esi
add dword [esi + 0xfc], eax
lea eax, [ecx + 0x1839]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
Function at 0x1000fab0
Capabilities:
Connect pipe

Disassembly:
mov edx, dword [esp + 0x28]
push ebx
push edi
mov edi, dword [esp + 0x18]
add edx, 0xffffe5b3
add edi, 0xfffff751
mov ebx, ecx
lea eax, [edi + 0x5ed]
cmp edx, eax
jg 0x1000faf2
mov ecx, dword [esp + 0x38]
pop edi
pop ebx
mov eax, dword [ecx + 0x28]
mov dword [ecx + 0x90], eax
mov eax, dword [esp + 0xc]
mov dword [ecx + 0x50], 0
add eax, 0x69f
ret
mov eax, dword [esp + 0xc]
push esi
mov esi, dword [esp + 0x3c]
add eax, 0x692
add eax, dword [esi + 8]
cmp dword [esi + 0x50], eax
jbe 0x1000fb58
mov eax, dword [esi + 0x24]
sub eax, dword [esp + 0x20]
add eax, 0x71b
add dword [esi + 0x12c], eax
mov eax, dword [esi + 0x40]
xor eax, edi
sub eax, dword [esi + 0xd0]
push eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffe22
add eax, edi
and eax, dword [esi + 0xf8]
push eax
call dword [sym.imp.KERNEL32.dll_ConnectNamedPipe]
lea eax, [ebx - 0x71b]
imul eax, dword [esi + 0x1c4]
imul eax, dword [esi + 0xf8]
mov dword [esi + 0x1c4], eax
mov eax, dword [esp + 0x18]
pop esi
pop edi
add eax, 0x69f
pop ebx
ret
Function at 0x408fca
Capabilities:
Parse pe header

Disassembly:
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x409009
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x409009
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x409009
mov eax, 0x10b
cmp word [ecx + 0x18], ax
jne 0x409009
cmp dword [ecx + 0x74], 0xe
jbe 0x409009
cmp dword [ecx + 0xe8], 0
setne al
ret
xor al, al
ret

Function at 0x40eec6
Capabilities:
Allocate thread local storage

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x823ea8
push 0x823ea0
push str.FlsAlloc
push 0x1f
call fcn.0040ed85
mov esi, eax
add esp, 0x10
test esi, esi
je 0x40eefa
push dword [ebp + 8]
mov ecx, esi
call dword [0x427130]
call esi
jmp 0x40ef00
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
pop esi
pop ebp
ret 4

Function at 0x40ef44
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x823eb8
push 0x823eb0
push str.FlsGetValue
push 0x21
call fcn.0040ed85
mov esi, eax
add esp, 0x10
test esi, esi
je 0x40ef7b
push dword [ebp + 8]
mov ecx, esi
call dword [0x427130]
call esi
pop esi
pop ebp
ret 4
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsGetValue]

Function at 0x40ef83
Capabilities:
Set thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x823ec0
push 0x823eb8
push str.FlsSetValue
push 0x22
call fcn.0040ed85
mov esi, eax
add esp, 0x10
test esi, esi
je 0x40efbd
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [0x427130]
call esi
pop esi
pop ebp
ret 8
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsSetValue]
Function at 0x408224
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffff4
mov edi, edx
mov esi, eax
mov ebp, dword [esi + 0x10]
mov eax, esi
call fcn.0040861c
mov byte [esp], al
cmp byte [esp], 0
jne 0x4083b0
test edi, edi
je 0x4083b0
mov byte [esp + 1], 0
test ebp, ebp
jle 0x4082e7
call sub.kernel32.dll_GetTickCount
mov dword [esp + 4], eax
test ebp, ebp
jle 0x4082c2
cmp edi, 0xffffffff
je 0x408283
call sub.kernel32.dll_GetTickCount
sub eax, dword [esp + 4]
cmp edi, eax
ja 0x408283
mov byte [esp], 0
jmp 0x4083b0
mov ebx, dword [esi]
cmp ebx, 1
jg 0x4082c2
test ebx, ebx
jne 0x4082b8
mov eax, esi
xor ecx, ecx
mov edx, 1
call fcn.00402770
test eax, eax
jne 0x4082b8
call sub.kernel32.dll_GetCurrentThreadId
mov dword [esi + 8], eax
mov dword [esi + 4], 1
mov byte [esp], 1
jmp 0x4083b0
call 0x408740
dec ebp
test ebp, ebp
jg 0x408268
cmp edi, 0xffffffff
je 0x4082e7
call sub.kernel32.dll_GetTickCount
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
sub eax, dword [esp + 4]
cmp edi, eax
ja 0x4082e5
mov byte [esp], 0
jmp 0x4083b0
sub edi, eax
mov ebx, dword [esi]
test ebx, ebx
je 0x408232
lea edx, [ebx + 2]
mov eax, esi
mov ecx, ebx
call fcn.00402770
cmp ebx, eax
jne 0x4082e7
call sub.kernel32.dll_GetTickCount
mov dword [esp + 4], eax
mov eax, esi
call fcn.00408420
mov edx, eax
mov ebx, dword [0x5648f8]
mov ecx, edi
xor eax, eax
call dword [ebx + 0x10]
test eax, eax
sete byte [esp]
cmp edi, 0xffffffff
je 0x40834e
call sub.kernel32.dll_GetTickCount
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
sub eax, dword [esp + 4]
cmp edi, eax
jbe 0x40834c
mov eax, dword [esp + 8]
sub eax, dword [esp + 4]
sub edi, eax
jmp 0x40834e
xor edi, edi
cmp byte [esp], 0
je 0x408377
mov ebx, dword [esi]
test bl, 1
jne 0x408390
mov edx, ebx
sub edx, 2
or edx, 1
mov eax, esi
mov ecx, ebx
call fcn.00402770
cmp ebx, eax
jne 0x408354
mov byte [esp + 1], 1
jmp 0x408390
mov ebx, dword [esi]
mov edx, ebx
sub edx, 2
mov eax, esi
mov ecx, ebx
call fcn.00402770
cmp ebx, eax
jne 0x408377
mov byte [esp + 1], 1
cmp byte [esp + 1], 0
je 0x408301
cmp byte [esp], 0
je 0x4083b0
call sub.kernel32.dll_GetCurrentThreadId
mov dword [esi + 8], eax
mov dword [esi + 4], 1
movzx eax, byte [esp]
add esp, 0xc
pop ebp
pop edi
pop esi
pop ebx
ret

Function at 0x409140
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x564058], 0
je 0x4091a7
cmp word [0x564344], 0xd7b2
jne 0x409169
cmp dword [0x56434c], 0
jbe 0x409169
mov eax, 0x564340
call dword [0x56435c]
push 0
lea eax, [esp + 4]
push eax
push 0x1d
push str.Runtime_error_____at_00000000
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
push 0
lea eax, [esp + 4]
push eax
push 2
mov eax, 0x4091d4
call fcn.00409f8c
push eax
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x55e032], 0
jne 0x4091c3
push 0
push 0x55e9f2
push str.Runtime_error_____at_00000000
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret
Function at 0x409364
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov esi, ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov edi, dword [ebp + 0x10]
cmp dword [0x55e034], 0
je 0x40938f
mov edx, edi
mov eax, esi
call dword [0x55e034]
mov ebx, eax
jmp 0x4093a0
mov eax, 8
call fcn.00404554
mov ebx, eax
mov dword [ebx], esi
mov dword [ebx + 4], edi
mov byte [0x564059], 1
mov eax, dword [ebp + 8]
push eax
mov eax, dword [ebp + 0xc]
push eax
push ebx
mov eax, 0x40932c
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
push eax
call sub.kernel32.dll_CreateThread
mov esi, eax
test esi, esi
jne 0x4093d5
mov edx, 8
mov eax, ebx
call fcn.00404570
mov eax, esi
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret 0xc

Function at 0x40be2c
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe98
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x160], ecx
mov dword [ebp - 0x164], ecx
mov dword [ebp - 0x168], ecx
mov dword [ebp - 4], edx
mov esi, eax
xor eax, eax
push ebp
push 0x40bf91
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.004094a8
cmp si, word [0x55ea30]
jb 0x40bec4
cmp si, word [0x55ec30]
ja 0x40bec4
mov edi, 0x40
xor eax, eax
mov dword [ebp - 8], eax
cmp edi, dword [ebp - 8]
jb 0x40bec4
mov ebx, edi
add ebx, dword [ebp - 8]
shr ebx, 1
cmp si, word [ebx*8 + 0x55ea30]
jae 0x40be9e
mov edi, ebx
dec edi
jmp 0x40bebf
cmp si, word [ebx*8 + 0x55ea30]
jbe 0x40beae
inc ebx
mov dword [ebp - 8], ebx
jmp 0x40bebf
mov edx, dword [ebp - 4]
mov eax, dword [ebx*8 + 0x55ea34]
call fcn.0040bd3c
jmp 0x40bec4
cmp edi, dword [ebp - 8]
jae 0x40be88
mov eax, dword [ebp - 4]
cmp dword [eax], 0
jne 0x40bf73
push 2
movzx eax, si
push eax
call sub.kernel32.dll_IsValidLocale
test eax, eax
je 0x40bf73
push 0x55
lea eax, [ebp - 0xb2]
push eax
push 0x59
movzx ebx, si
push ebx
call sub.kernel32.dll_GetLocaleInfoW
push 0x55
lea eax, [ebp - 0x15c]
push eax
push 0x5a
push ebx
call sub.kernel32.dll_GetLocaleInfoW
lea eax, [ebp - 0x160]
lea edx, [ebp - 0xb2]
mov ecx, 0x55
call fcn.0040a310
push dword [ebp - 0x160]
push 0x40bfac
lea eax, [ebp - 0x164]
lea edx, [ebp - 0x15c]
mov ecx, 0x55
call fcn.0040a310
push dword [ebp - 0x164]
push 0x40bfbc
lea eax, [ebp - 0x168]
lea edx, [ebp - 0xb2]
mov ecx, 0x55
call fcn.0040a310
push dword [ebp - 0x168]
mov eax, dword [ebp - 4]
mov edx, 5
call fcn.0040a548
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40bf98
lea eax, [ebp - 0x168]
mov edx, 3
call fcn.00409508
ret
Function at 0x40c144
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push 0
push ebx
push esi
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push 0x40c247
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x566b88
call sub.kernel32.dll_EnterCriticalSection
cmp bx, word [0x566ba0]
jne 0x40c190
mov eax, esi
mov edx, 0x566ba2
mov ecx, 0x55
call fcn.0040a310
push 0x566b88
call sub.kernel32.dll_LeaveCriticalSection
jmp 0x40c231
push 0x566b88
call sub.kernel32.dll_LeaveCriticalSection
mov eax, esi
call fcn.004094a8
push 2
movzx eax, bx
push eax
call sub.kernel32.dll_IsValidLocale
test eax, eax
je 0x40c1ff
cmp byte [0x566b84], 0
je 0x40c1c4
mov edx, esi
mov eax, ebx
call fcn.0040c028
jmp 0x40c1ff
mov edx, esi
mov eax, ebx
call fcn.0040be2c
call sub.kernel32.dll_GetSystemDefaultUILanguage
cmp bx, ax
je 0x40c1ff
cmp dword [esi], 0
je 0x40c1e8
mov eax, esi
mov edx, 0x40c260
call fcn.0040a468
call sub.kernel32.dll_GetSystemDefaultUILanguage
lea edx, [ebp - 4]
call fcn.0040be2c
mov edx, dword [ebp - 4]
mov eax, esi
call fcn.0040a468
push 0x566b88
call sub.kernel32.dll_EnterCriticalSection
mov word [0x566ba0], bx
push 0xaa
mov eax, dword [esi]
call fcn.0040a26c
push eax
push 0x566ba2
call sub.kernel32.dll_lstrcpynW
push 0x566b88
call sub.kernel32.dll_LeaveCriticalSection
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40c24e
lea eax, [ebp - 4]
call fcn.004094a8
ret