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

Disassembly:
endbr32
push ebp
mov ebp, esp
push esi
push edi
sub esp, 0xc
mov edi, 1
mov dword [ebp - 0x10], 0
xor esi, esi
push 1
push 0x10246db8
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x1003e408
mov eax, 0x66666667
imul edi
sar edx, 2
lea ecx, [edx + edx*4]
add ecx, ecx
cmp ecx, edi
jne 0x1003e408
cmp edi, 0x2710
jle 0x1003e401
mov esi, 1
push esi
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x1003e418
inc edi
cmp edi, 0x7ffffff
jl 0x1003e3ca
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x1003e432
mov dword [ebp - 0x14], 0x98
lea eax, [ebp - 0x14]
push eax
call fcn.1004ad00
add esp, 4
mov eax, dword [0x10246dbc]
test eax, eax
jne 0x1003e470
cmp dword [0x10237264], 1
je 0x1003e570
xor esi, esi
xor edi, edi
cmp dword [0x10246db4], 0
je 0x1003e52d
mov dword [0x10246dbc], 1
cmp dword [0x10237264], 1
je 0x1003e515
push dword [0x10246db0]
mov dword [0x10246db8], 0
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
test edx, edx
je 0x1003e49a
mov eax, dword [ebp + 8]
mov dword [eax], edx
xor eax, eax
lea esp, [ebp - 8]
pop edi
pop esi
pop ebp
ret
mov dword [ebp - 0x10], edx
lea eax, [ebp - 0x10]
push eax
push 0
push 0x74
call fcn.10025750
add esp, 0xc
test eax, eax
je 0x1003e4c1
mov edx, dword [ebp + 8]
mov dword [edx], 0
lea esp, [ebp - 8]
pop edi
pop esi
pop ebp
ret
mov edx, dword [ebp - 0x10]
mov eax, dword [0x10237230]
mov dword [edx + 0x70], eax
mov eax, 0x70
mov ecx, dword [eax + 0x102371bc]
mov dword [edx + eax - 4], ecx
mov esi, dword [eax + 0x102371b8]
mov dword [edx + eax - 8], esi
mov edi, dword [eax + 0x102371b4]
mov dword [edx + eax - 0xc], edi
mov ecx, dword [eax + 0x102371b0]
mov dword [edx + eax - 0x10], ecx
sub eax, 0x10
jne 0x1003e4d1
push dword [ebp - 0x10]
push dword [0x10246db0]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov edx, dword [ebp - 0x10]
jmp 0x1003e48c
push edi
push 2
call fcn.101c3456
push esi
push 0x16
call fcn.101c3456
add esp, 0x10
jmp 0x1003e470
mov dword [0x10246db4], 1
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x10246db0], eax
cmp eax, 0xffffffff
jne 0x1003e554
push 8
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x1003e459
push 0x1003e380
call fcn.101a5f40
push 0x1003e340
call fcn.101a5f40
add esp, 8
jmp 0x1003e459
push 1
push 2
call fcn.101c3456
mov edi, eax
push 1
push 0x16
call fcn.101c3456
mov esi, eax
add esp, 0x10
jmp 0x1003e44c
Function at 0x1003e590
Capabilities:
Allocate thread local storage
Get thread local storage value
Set thread local storage value

Disassembly:
endbr32
push ebp
mov ebp, esp
push esi
push edi
sub esp, 0xc
mov edi, 1
mov dword [ebp - 0x10], 0
xor esi, esi
push 1
push 0x10246db8
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x1003e5e8
mov eax, 0x66666667
imul edi
sar edx, 2
lea ecx, [edx + edx*4]
add ecx, ecx
cmp ecx, edi
jne 0x1003e5e8
cmp edi, 0x2710
jle 0x1003e5e1
mov esi, 1
push esi
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x1003e5f8
inc edi
cmp edi, 0x7ffffff
jl 0x1003e5aa
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x1003e612
mov dword [ebp - 0x14], 0x98
lea eax, [ebp - 0x14]
push eax
call fcn.1004ad00
add esp, 4
mov eax, dword [0x10246dbc]
test eax, eax
jne 0x1003e650
cmp dword [0x10237264], 1
je 0x1003e776
xor esi, esi
xor edi, edi
cmp dword [0x10246db4], 0
je 0x1003e733
mov dword [0x10246dbc], 1
cmp dword [0x10237264], 1
je 0x1003e71b
push dword [0x10246db0]
mov dword [0x10246db8], 0
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
mov dword [ebp - 0x10], esi
test esi, esi
je 0x1003e6a3
mov eax, dword [ebp + 8]
mov dword [eax], esi
cmp dword [0x10237264], 1
je 0x1003e686
xor eax, eax
lea esp, [ebp - 8]
pop edi
pop esi
pop ebp
ret
push 1
push 2
call fcn.101c3456
push 1
push 0x16
mov dword [esi + 0x64], eax
call fcn.101c3456
add esp, 0x10
mov dword [esi + 0x68], eax
jmp 0x1003e67d
lea eax, [ebp - 0x10]
push eax
push 0
push 0x74
call fcn.10025750
add esp, 0xc
test eax, eax
je 0x1003e6c7
mov edx, dword [ebp + 8]
mov dword [edx], 0
lea esp, [ebp - 8]
pop edi
pop esi
pop ebp
ret
mov edx, dword [ebp - 0x10]
mov eax, dword [0x10237230]
mov dword [edx + 0x70], eax
mov eax, 0x70
mov ecx, dword [eax + 0x102371bc]
mov dword [edx + eax - 4], ecx
mov esi, dword [eax + 0x102371b8]
mov dword [edx + eax - 8], esi
mov edi, dword [eax + 0x102371b4]
mov dword [edx + eax - 0xc], edi
mov ecx, dword [eax + 0x102371b0]
mov dword [edx + eax - 0x10], ecx
sub eax, 0x10
jne 0x1003e6d7
push dword [ebp - 0x10]
push dword [0x10246db0]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov esi, dword [ebp - 0x10]
jmp 0x1003e66f
push edi
push 2
call fcn.101c3456
push esi
push 0x16
call fcn.101c3456
add esp, 0x10
jmp 0x1003e650
mov dword [0x10246db4], 1
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x10246db0], eax
cmp eax, 0xffffffff
jne 0x1003e75a
push 8
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x1003e639
push 0x1003e380
call fcn.101a5f40
push 0x1003e340
call fcn.101a5f40
add esp, 8
jmp 0x1003e639
push 1
push 2
call fcn.101c3456
mov edi, eax
push 1
push 0x16
call fcn.101c3456
mov esi, eax
add esp, 0x10
jmp 0x1003e62c
Function at 0x1004ad00
Capabilities:
Terminate process

Disassembly:
endbr32
push ebp
mov ebp, esp
xor esi, esi
push esi
push esi
call fcn.1003fe10
add esp, 8
mov ebx, dword [ebp + 8]
cmp dword [0x1024c380], 0
jne 0x1004ad2b
test ebx, ebx
je 0x1004ad25
mov esi, dword [ebx]
push esi
call fcn.101bb343
test ebx, ebx
je 0x1004ad3b
push dword [ebx]
call fcn.10066b20
add esp, 4
jmp 0x1004ad23
push 0
call fcn.10066b20
add esp, 4
jmp 0x1004ad25
Function at 0x1004b150
Capabilities:
Encrypt data using rc4 prga
Query environment variable

Disassembly:
endbr32
push ebp
mov ebp, esp
push esi
push edi
push ebx
sub esp, 0x24
mov edx, 0xfffffffc
mov eax, dword [0x10234e38]
mov esi, 0x1024af60
xor eax, ebp
mov edi, 0xfffffffd
mov dword [ebp - 0x10], eax
movzx eax, byte [0x1024b2b1]
and eax, 0xffffffe7
add eax, 8
mov byte [0x1024b2b1], al
movzx ecx, byte [0x1024b0f1]
movzx ebx, byte [0x1024b471]
and ecx, 0xffffffe7
movzx eax, byte [0x1024b631]
and ebx, 0xffffffe7
and eax, 0xffffffe7
add ecx, 8
mov dword [0x1024b078], edx
add ebx, 8
mov dword [0x1024af88], edx
mov edx, 0x1024b120
add eax, 8
mov byte [0x1024b0f1], cl
mov ecx, 0xffffffff
mov dword [0x10240b8c], esi
mov dword [0x1024e4a8], esi
mov esi, 0x1024b2e0
mov dword [0x1024b238], edi
mov dword [0x1024b148], edi
mov edi, 0xfffffffe
mov dword [0x10240bb4], edx
mov dword [0x1024e4ac], edx
mov edx, 0x1024b4a0
mov dword [0x1024b3f8], ecx
mov dword [0x1024b308], ecx
mov byte [0x1024b471], bl
mov dword [0x10240c04], esi
mov dword [0x1024e4b4], esi
mov dword [0x1024b5b8], edi
mov dword [0x1024b4c8], edi
mov byte [0x1024b631], al
mov dword [0x10240bdc], edx
mov dword [0x1024e4b0], edx
cmp dword [0x102372a0], 0
je 0x1004b3ab
mov ebx, 0x10237310
mov eax, dword [ebx]
push 0
push str.FORT_d
lea edi, [ebp - 0x30]
push edi
call eax
add esp, 0xc
xor esi, esi
push esi
push esi
push edi
mov dword [0x1024b778], esi
mov dword [0x1024b688], esi
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edx, eax
cmp edx, 1
mov edx, 2
movzx eax, byte [0x1024b7f1]
mov ecx, 0x1024b660
sbb edx, 0
and eax, 0xffffffe7
and edx, 3
shl edx, 3
or eax, edx
mov byte [0x1024b7f1], al
mov dword [0x10240c2c], ecx
mov dword [0x1024e4b8], ecx
cmp dword [0x102372a0], 0
je 0x1004b3a1
mov eax, dword [ebx]
push 5
push str.FORT_d
push edi
call eax
add esp, 0xc
push esi
push esi
mov eax, 5
push edi
mov dword [0x1024b938], eax
mov dword [0x1024b848], eax
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edx, eax
cmp edx, 1
mov edx, 2
movzx eax, byte [0x1024b9b1]
mov ecx, 0x1024b820
sbb edx, 0
and eax, 0xffffffe7
and edx, 3
shl edx, 3
or eax, edx
mov byte [0x1024b9b1], al
mov dword [0x10240cf4], ecx
mov dword [0x1024e4cc], ecx
cmp dword [0x102372a0], 0
je 0x1004b397
mov eax, dword [ebx]
push 6
push str.FORT_d
push edi
call eax
add esp, 0xc
push esi
push esi
mov eax, 6
push edi
mov dword [0x1024baf8], eax
mov dword [0x1024ba08], eax
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
cmp eax, 1
mov eax, 2
movzx edx, byte [0x1024bb71]
mov ecx, 0x1024b9e0
sbb eax, 0
and edx, 0xffffffe7
and eax, 3
shl eax, 3
or edx, eax
mov byte [0x1024bb71], dl
mov dword [0x10240d1c], ecx
mov dword [0x1024e4d0], ecx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], 0
xor ecx, ebp
cmp ecx, dword [0x10234e38]
jne 0x1004b392
lea esp, [ebp - 0xc]
pop ebx
pop edi
pop esi
pop ebp
ret
call fcn.101a6152
call fcn.10061c60
jmp 0x1004b31b
call fcn.10061c60
jmp 0x1004b2b6
call fcn.10061c60
jmp 0x1004b246
Function at 0x1004b3c0
Capabilities:
Query environment variable

Disassembly:
endbr32
push ebp
mov ebp, esp
push edi
sub esp, 0x10c
mov edx, dword [0x10246e04]
or edx, dword [0x10246e08]
or edx, dword [0x10246dfc]
mov eax, dword [0x10234e38]
xor eax, ebp
mov dword [ebp - 8], eax
or edx, dword [0x10246e00]
jne 0x1004b5de
push 0x104
lea edi, [ebp - 0x10c]
push edi
push str.FORT_BLOCKSIZE
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edx, eax
test edx, edx
je 0x1004b429
cmp edx, 0x104
jae 0x1004b420
inc edx
je 0x1004b432
jmp 0x1004b43e
mov byte [ebp - 0x10c], 0
jmp 0x1004b43e
mov byte [ebp - 0x10c], 0
jne 0x1004b43e
mov dword [0x10246e04], 0xffffffff
jmp 0x1004b47e
dec edx
lea eax, [ebp - 0x110]
push eax
push 2
push edx
push edi
call fcn.100494a0
add esp, 0x10
test eax, eax
jne 0x1004b463
mov eax, dword [ebp - 0x110]
cmp eax, 0x7fffc000
jbe 0x1004b46f
mov dword [0x10246e04], 0xfffffffe
jmp 0x1004b47e
add eax, 0x1ff
and eax, 0xfffffe00
mov dword [0x10246e04], eax
push 0x104
push edi
push str.FORT_BUFFERCOUNT
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edx, eax
test edx, edx
je 0x1004b4ab
cmp edx, 0x104
jae 0x1004b4a2
inc edx
je 0x1004b4b4
jmp 0x1004b4c0
mov byte [ebp - 0x10c], 0
jmp 0x1004b4c0
mov byte [ebp - 0x10c], 0
jne 0x1004b4c0
mov dword [0x10246e08], 0xffffffff
jmp 0x1004b4f4
dec edx
lea eax, [ebp - 0x110]
push eax
push 2
push edx
push edi
call fcn.100494a0
add esp, 0x10
test eax, eax
jne 0x1004b4e3
mov eax, dword [ebp - 0x110]
cmp eax, 0x7f
jbe 0x1004b4ef
mov dword [0x10246e08], 0xfffffffe
jmp 0x1004b4f4
mov dword [0x10246e08], eax
push 0x104
push edi
push str.FORT_FMT_RECL
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edx, eax
test edx, edx
je 0x1004b521
cmp edx, 0x104
jae 0x1004b518
inc edx
je 0x1004b52a
jmp 0x1004b536
mov byte [ebp - 0x10c], 0
jmp 0x1004b536
mov byte [ebp - 0x10c], 0
jne 0x1004b536
mov dword [0x10246dfc], 0xffffffff
jmp 0x1004b569
dec edx
lea eax, [ebp - 0x110]
push eax
push 2
push edx
push edi
call fcn.100494a0
add esp, 0x10
test eax, eax
jne 0x1004b55f
mov eax, dword [ebp - 0x110]
test eax, eax
jl 0x1004b55f
mov dword [0x10246dfc], eax
jmp 0x1004b569
mov dword [0x10246dfc], 0xfffffffe
push 0x104
push edi
push str.FORT_UFMT_RECL
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edx, eax
test edx, edx
je 0x1004b596
cmp edx, 0x104
jae 0x1004b58d
inc edx
je 0x1004b59f
jmp 0x1004b5ab
mov byte [ebp - 0x10c], 0
jmp 0x1004b5ab
mov byte [ebp - 0x10c], 0
jne 0x1004b5ab
mov dword [0x10246e00], 0xffffffff
jmp 0x1004b5de
dec edx
lea eax, [ebp - 0x110]
push eax
push 2
push edx
push edi
call fcn.100494a0
add esp, 0x10
test eax, eax
jne 0x1004b5d4
mov eax, dword [ebp - 0x110]
test eax, eax
jl 0x1004b5d4
mov dword [0x10246e00], eax
jmp 0x1004b5de
mov dword [0x10246e00], 0xfffffffe
mov ecx, dword [ebp - 8]
mov dword [ebp - 8], 0
xor ecx, ebp
cmp ecx, dword [0x10234e38]
jne 0x1004b5f8
lea esp, [ebp - 4]
pop edi
pop ebp
ret
call fcn.101a6152
lea esi, [esi]
Function at 0x10064b70
Capabilities:
Check for software breakpoints

Disassembly:
endbr32
push esi
push edi
push ebx
push ebp
sub esp, 0x324
mov eax, dword [0x10234e38]
mov edx, dword [esp + 0x344]
xor eax, esp
mov dword [esp + 0x320], eax
test edx, edx
je 0x10064b9d
mov dword [edx], 0
lea eax, [esp]
push 0x1c
push eax
push dword [esp + 0x340]
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
mov edi, dword [esp + 0x33c]
test eax, eax
jne 0x10064be6
xor eax, eax
mov byte [edi], al
mov ecx, dword [esp + 0x320]
mov dword [esp + 0x320], eax
xor ecx, esp
cmp ecx, dword [0x10234e38]
jne 0x10064c80
add esp, 0x324
pop ebp
pop ebx
pop edi
pop esi
ret
lea esi, [esp + 0x21c]
push 0x104
push esi
push dword [esp + 0xc]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x10064c28
xor eax, eax
mov byte [edi], al
mov ecx, dword [esp + 0x320]
mov dword [esp + 0x320], eax
xor ecx, esp
cmp ecx, dword [0x10234e38]
jne 0x10064c80
add esp, 0x324
pop ebp
pop ebx
pop edi
pop esi
ret
xor eax, eax
lea ebx, [esp + 0x1c]
lea ebp, [esp + 0x11c]
push ebx
push ebp
push eax
push eax
push esi
call fcn.101b7fa6
mov esi, dword [esp + 0x354]
push esi
push ebp
push edi
call fcn.101c8c50
push esi
push ebx
push edi
call fcn.101c8f10
add esp, 0x2c
mov ecx, dword [esp + 0x320]
mov dword [esp + 0x320], 0
xor ecx, esp
cmp ecx, dword [0x10234e38]
jne 0x10064c80
add esp, 0x324
pop ebp
pop ebx
pop edi
pop esi
ret
call fcn.101a6152
lea esi, [esi]
lea edi, [edi]
Function at 0x10067f50
Capabilities:
Create process on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x88
mov eax, dword [0x10234e38]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push eax
push 0x50
lea ecx, [ebp - 0x54]
push ecx
call fcn.101aea4a
add esp, 0xc
lea edx, [ebp - 0x54]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x5c]
add eax, 1
mov dword [ebp - 0x80], eax
mov ecx, dword [ebp - 0x5c]
mov dl, byte [ecx]
mov byte [ebp - 0x55], dl
add dword [ebp - 0x5c], 1
cmp byte [ebp - 0x55], 0
jne 0x10067f84
mov eax, dword [ebp - 0x5c]
sub eax, dword [ebp - 0x80]
mov dword [ebp - 0x84], eax
mov ecx, dword [ebp - 0x84]
mov dword [ebp - 0x6c], ecx
mov edx, dword [ebp - 0x6c]
mov dword [ebp - 0x70], edx
cmp dword [ebp - 0x70], 0x50
jae 0x10067fb9
jmp 0x10067fbe
call fcn.101a6078
mov eax, dword [ebp - 0x70]
mov byte [ebp + eax - 0x54], 0
lea ecx, [ebp - 0x54]
push ecx
call fcn.10067810
add esp, 4
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x64], 0x101d8dc0
mov edx, dword [ebp + 8]
mov dword [ebp - 0x60], edx
mov eax, dword [ebp - 0x60]
mov cl, byte [eax]
mov byte [ebp - 0x56], cl
mov edx, dword [ebp - 0x64]
cmp cl, byte [edx]
jne 0x10068023
cmp byte [ebp - 0x56], 0
je 0x1006801a
mov eax, dword [ebp - 0x60]
mov cl, byte [eax + 1]
mov byte [ebp - 0x57], cl
mov edx, dword [ebp - 0x64]
cmp cl, byte [edx + 1]
jne 0x10068023
add dword [ebp - 0x60], 2
add dword [ebp - 0x64], 2
cmp byte [ebp - 0x57], 0
jne 0x10067fe6
mov dword [ebp - 0x74], 0
jmp 0x1006802b
sbb eax, eax
or eax, 1
mov dword [ebp - 0x74], eax
mov ecx, dword [ebp - 0x74]
mov dword [ebp - 0x88], ecx
cmp dword [ebp - 0x88], 0
jne 0x10068080
push 0x101d8dcc
lea ecx, [ebp - 0x7c]
call fcn.100678a0
push 5
lea ecx, [ebp - 0x7c]
call fcn.10067a10
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
mov word [ebp - 0x68], ax
mov dword [ebp - 0x78], 1
movzx edx, word [ebp - 0x68]
cmp edx, 0x1f
jg 0x10068076
mov dword [ebp - 0x78], 0
lea ecx, [ebp - 0x7c]
call fcn.10067970
jmp 0x100680a2
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.MSCADLIB.dll_int___cdecl_MSCAD_CmdMngCpp_char__const_]
add esp, 4
test eax, eax
jne 0x100680a2
mov ecx, dword [ebp - 0x6c]
push ecx
lea edx, [ebp - 0x54]
push edx
lea eax, [ebp - 0x6c]
push eax
call fcn.10001060
mov eax, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.101a6152
mov esp, ebp
pop ebp
ret
Function at 0x10068500
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x10068524
xor eax, eax
jmp 0x100685a4
mov edx, dword [ebp - 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x1006853b
xor eax, eax
jmp 0x100685a4
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 4]
add edx, dword [ebp - 0x14]
mov dword [ebp - 0x10], edx
mov eax, dword [ebp + 0x10]
and eax, 0xf
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jbe 0x10068587
mov ecx, dword [ebp - 4]
cmp ecx, dword [ebp - 0x10]
jae 0x10068587
mov edx, dword [ebp - 4]
movzx eax, word [edx]
mov ecx, dword [ebp - 4]
lea edx, [ecx + eax*2 + 2]
mov dword [ebp - 4], edx
mov eax, dword [ebp - 8]
sub eax, 1
mov dword [ebp - 8], eax
jmp 0x1006855e
mov ecx, dword [ebp - 4]
cmp ecx, dword [ebp - 0x10]
jb 0x10068593
xor eax, eax
jmp 0x100685a4
mov edx, dword [ebp - 4]
movzx eax, word [edx]
test eax, eax
jne 0x100685a1
xor eax, eax
jmp 0x100685a4
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret

Function at 0x1006da40
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101ca488
mov eax, dword fs:[0]
push eax
sub esp, 0x34
mov eax, dword [0x10234e38]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
call fcn.1006dbb0
lea ecx, [ebp - 0x40]
call fcn.1007dea7
mov dword [ebp - 4], 0
mov dword [ebp - 0x18], 0x101da120
push 0
mov eax, dword [ebp - 0x18]
push eax
lea ecx, [ebp - 0x40]
call fcn.1007e123
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], 0
cmp dword [ebp - 0x10], 0
je 0x1006dab4
lea ecx, [ebp - 0x40]
call fcn.1007e2dc
mov dword [ebp - 0x20], eax
lea ecx, [ebp - 0x40]
call fcn.1006d740
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], 0
cmp dword [ebp - 0x10], 0
je 0x1006dac7
cmp dword [ebp - 0x14], 0
jne 0x1006dad8
mov ecx, dword [ebp - 0x1c]
push ecx
mov edx, dword [ebp - 0x18]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov dword [ebp - 0x24], eax
lea ecx, [ebp - 0x40]
call fcn.1007e0c9
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
call fcn.1007e050
mov eax, dword [ebp + 8]
push eax
call fcn.1006d9b0
add esp, 4
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov esp, ebp
pop ebp
ret
Function at 0x1007391c
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push esi
xor esi, esi
push edi
cmp dword [ecx + 0x58], esi
je 0x1007396f
push esi
push dword [ebp + 8]
call fcn.10073b08
mov edi, eax
test edi, edi
je 0x1007396a
lea eax, [ebp - 4]
mov dword [ebp - 4], 4
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0xc]
push eax
push esi
push dword [ebp + 0xc]
push edi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push edi
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
jne 0x1007396a
mov eax, dword [ebp - 8]
jmp 0x10073981
mov eax, dword [ebp + 0x10]
jmp 0x10073981
push dword [ecx + 0x6c]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
pop edi
pop esi
leave
ret 0xc

Function at 0x10073987
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101ca7b6
mov eax, dword fs:[0]
push eax
mov eax, 0x1018
call fcn.101a67a0
mov eax, dword [0x10234e38]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
cmp dword [ecx + 0x58], 0
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x101c], edi
mov dword [ebp - 0x1024], eax
je 0x10073abb
push 0
push edx
call fcn.10073b08
mov ebx, eax
test ebx, ebx
jne 0x100739ef
push esi
jmp 0x10073ae3
call fcn.10070b55
push eax
lea ecx, [ebp - 0x1014]
call fcn.10067830
xor ecx, ecx
lea eax, [ebp - 0x1018]
push eax
push ecx
lea eax, [ebp - 0x1020]
mov dword [ebp - 4], ecx
push eax
push ecx
push dword [ebp - 0x1024]
mov dword [ebp - 0x1020], ecx
push ebx
mov dword [ebp - 0x1018], ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x101c], eax
test eax, eax
jne 0x10073a7a
push dword [ebp - 0x1018]
lea ecx, [ebp - 0x1014]
call fcn.10068160
lea ecx, [ebp - 0x1018]
push ecx
push eax
lea eax, [ebp - 0x1020]
push eax
push 0
push dword [ebp - 0x1024]
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push 0xffffffffffffffff
lea ecx, [ebp - 0x1014]
mov dword [ebp - 0x101c], eax
call fcn.100707f6
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x101c], 0
jne 0x10073aa8
mov esi, dword [ebp - 0x1014]
add esi, 0xfffffff0
push esi
call fcn.1006ca00
pop ecx
add eax, 0x10
mov ecx, esi
mov dword [edi], eax
call fcn.10068230
jmp 0x10073aea
push esi
mov ecx, edi
call fcn.100678a0
mov ecx, dword [ebp - 0x1014]
lea ecx, [ecx - 0x10]
jmp 0x10073aa1
test esi, esi
jne 0x10073ac4
mov esi, 0x101da8fd
push dword [ecx + 0x6c]
lea ecx, [ebp - 0x1010]
push 0x1000
push ecx
push esi
push eax
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x1010]
push eax
mov ecx, edi
call fcn.100678a0
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101a6152
leave
ret 0x10
Function at 0x10076df8
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
xor esi, esi
mov ebx, ecx
push edi
cmp dword [ebp + 8], esi
je 0x10076e37
call fcn.1007d95f
push 0xf0
push dword [ebp + 8]
mov edi, dword [eax + 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
test eax, eax
je 0x10076e37
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x10076e3f
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
push esi
mov ecx, ebx
call fcn.10074ab0
pop edi
pop esi
pop ebx
pop ebp
ret 4

Function at 0x10077852
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
mov esi, ecx
push edi
test esi, esi
je 0x100778de
cmp dword [esi + 0x20], 0
je 0x100778de
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x100778de
cmp dword [ebp + 8], 0
je 0x100778de
xor edi, edi
mov ebx, edi
call fcn.1007d95f
push str.AFX_DIALOG_LAYOUT
push dword [ebp + 8]
mov eax, dword [eax + 0xc]
push eax
mov dword [ebp - 4], eax
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov dword [ebp - 8], eax
test eax, eax
je 0x100778c2
mov ebx, dword [ebp - 4]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push dword [ebp - 8]
mov edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x100778de
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
push edi
push ebx
push esi
call fcn.1008a8b0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x100778da
mov ecx, esi
call fcn.100775f4
mov eax, edi
jmp 0x100778e0
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 4

Function at 0x1007be77
Capabilities:
Get graphical window text

Disassembly:
push 4
mov eax, 0x101ca710
call fcn.101a65ce
mov edi, ecx
xor ebx, ebx
cmp dword [edi + 0x74], ebx
jne 0x1007be9d
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_GetWindowTextA]
jmp 0x1007befd
call fcn.10070b55
push eax
lea ecx, [ebp - 0x10]
call fcn.10067830
mov edi, dword [edi + 0x74]
lea ecx, [ebp - 0x10]
push ecx
mov dword [ebp - 4], ebx
mov eax, dword [edi]
mov esi, dword [eax + 0x8c]
mov ecx, esi
call dword [0x101d8ab4]
mov ecx, edi
call esi
mov esi, dword [ebp + 8]
push 0xffffffffffffffff
push dword [ebp - 0x10]
push dword [ebp + 0xc]
push esi
call fcn.101b1bba
push eax
call fcn.1006c8c0
add esp, 0x14
test esi, esi
je 0x1007bef0
push esi
call fcn.101b2040
pop ecx
mov ebx, eax
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.10068230
mov eax, ebx
call fcn.101a6597
ret 8