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

Disassembly:
sub esp, 0x10
mov eax, dword [esp + 0x14]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x28]
mov esi, edi
mov ebx, edx
xor edx, edx
shr esi, 2
mov ebp, ecx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x10], edx
test esi, esi
je 0x1001931e
cmp esi, 4
jb 0x100192da
lea ecx, [eax - 4]
mov dword [esp + 0x10], edx
lea ecx, [ecx + esi*4]
cmp ebp, ecx
ja 0x1001926b
lea ecx, [ebp - 4]
lea ecx, [ecx + esi*4]
cmp ecx, eax
jae 0x100192da
lea ecx, [ebx - 4]
lea ecx, [ecx + esi*4]
cmp ebp, ecx
ja 0x1001927f
lea ecx, [ebp - 4]
lea ecx, [ecx + esi*4]
cmp ecx, ebx
jae 0x100192da
mov edi, ebp
sub edi, ebx
mov dword [esp + 0x14], edi
mov ecx, esi
and ecx, 3
mov dword [esp + 0x10], esi
sub dword [esp + 0x10], ecx
mov edi, eax
mov eax, dword [esp + 0x14]
sub edi, ebx
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
mov ecx, ebx
lea ebx, [ebx]
movdqu xmm1, xmmword [ecx + ebp]
movdqu xmm0, xmmword [ecx]
add edx, 4
pxor xmm1, xmm0
movdqu xmmword [eax + ecx], xmm1
lea ecx, [ecx + 0x10]
cmp edx, dword [esp + 0x10]
jb 0x100192b0
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x10], edx
cmp edx, esi
jae 0x1001931e
mov ecx, ebx
sub ecx, eax
mov dword [esp + 0x1c], ecx
mov edi, ecx
mov ecx, ebp
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x10]
sub esi, ecx
add ecx, esi
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + edx]
xor ecx, dword [edx]
lea edx, [edx + 4]
mov dword [eax + edx - 4], ecx
dec esi
jne 0x10019303
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
shl edx, 2
sub edi, edx
je 0x10019342
add ebp, edx
add ebx, edx
add eax, edx
test edi, edi
je 0x10019342
sub ebx, eax
sub ebp, eax
mov cl, byte [eax + ebx]
xor cl, byte [eax]
lea eax, [eax + 1]
mov byte [eax + ebp - 1], cl
dec edi
jne 0x10019333
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
Function at 0x10019490
Capabilities:
Encrypt data using des

Disassembly:
sub esp, 0x14
push ebx
push ebp
push esi
mov dword [esp + 0x1c], ecx
push edi
mov ecx, 0x78
call fcn.10015970
mov ecx, 0x78
call fcn.10019370
mov esi, dword [esp + 0x2c]
mov ebx, eax
mov eax, 0x100db192
sub eax, ebx
mov dword [esp + 0x14], eax
mov edi, str.91__
mov ebp, 0x100db191
sub edi, ebx
sub ebp, ebx
mov eax, 0x100db193
sub eax, ebx
mov dword [esp + 0x1c], ebx
mov edx, ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0xe
jmp 0x100194f0
movzx ecx, byte [edi + edx]
dec ecx
mov eax, ecx
sar eax, 3
and ecx, 7
movzx eax, byte [eax + esi]
test byte [ecx*4 + 0x100db170], al
lea edx, [edx + 4]
setne al
mov byte [edx - 4], al
movzx ecx, byte [edx + ebp - 4]
dec ecx
mov eax, ecx
sar eax, 3
and ecx, 7
movzx eax, byte [eax + esi]
test byte [ecx*4 + 0x100db170], al
setne al
mov byte [edx - 3], al
movzx ecx, byte [ebx + edx - 4]
dec ecx
mov eax, ecx
sar eax, 3
and ecx, 7
movzx eax, byte [eax + esi]
test byte [ecx*4 + 0x100db170], al
setne al
mov byte [edx - 2], al
mov eax, dword [esp + 0x18]
movzx ecx, byte [eax + edx - 4]
dec ecx
mov eax, ecx
sar eax, 3
and ecx, 7
movzx eax, byte [eax + esi]
test byte [ecx*4 + 0x100db170], al
setne al
dec dword [esp + 0x10]
mov byte [edx - 1], al
jne 0x100194f0
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
xor edi, edi
lea esi, [edi + 0x1c]
lea esp, [esp]
xorps xmm0, xmm0
movq qword [ebx + 0x70], xmm0
xor edx, edx
lea ebx, [ebx]
movzx eax, byte [edi + 0x100db1c8]
add eax, edx
cmp edx, 0x1c
mov ecx, 0x38
cmovl ecx, esi
cmp eax, ecx
jl 0x100195bb
add eax, 0xffffffe4
mov al, byte [eax + ebx]
mov byte [edx + ebx + 0x38], al
inc edx
cmp edx, 0x38
jl 0x100195a0
xor esi, esi
lea ebx, [ebx]
movzx eax, byte [esi + 0x100db1d8]
cmp byte [eax + ebx + 0x37], 0
je 0x100195ff
mov eax, 0xaaaaaaab
mul esi
shr edx, 2
mov eax, esi
lea ecx, [edx + edx*2]
add ecx, ecx
sub eax, ecx
mov eax, dword [eax*4 + 0x100db170]
sar eax, 2
or byte [edx + ebx + 0x70], al
inc esi
cmp esi, 0x30
jl 0x100195d0
movzx ecx, byte [ebx + 0x70]
movzx eax, byte [ebx + 0x72]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x74]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x76]
shl ecx, 8
or ecx, eax
mov eax, dword [ebp + 0x8c]
inc edi
mov dword [eax + edi*8 - 8], ecx
movzx ecx, byte [ebx + 0x71]
movzx eax, byte [ebx + 0x73]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x75]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0x77]
shl ecx, 8
or ecx, eax
mov eax, dword [ebp + 0x8c]
mov esi, 0x1c
mov dword [eax + edi*8 - 4], ecx
cmp edi, 0x10
jl 0x10019590
cmp dword [esp + 0x28], 1
jne 0x100196ac
xor edi, edi
mov esi, 0x7c
mov ecx, dword [ebp + 0x8c]
lea eax, [ecx - 4]
add eax, esi
push eax
lea eax, [edi + ecx]
push eax
call fcn.100047f0
mov ecx, dword [ebp + 0x8c]
lea eax, [esi + ecx]
push eax
lea eax, [ecx + 4]
add eax, edi
push eax
call fcn.100047f0
sub esi, 8
add esp, 0x10
add edi, 8
cmp esi, 0x3c
jg 0x10019674
xor al, al
mov edi, ebx
mov ecx, 0x78
push ebx
rep stosb byte es:[edi], al
call fcn.10035f6c
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 8
Function at 0x1001af00
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x100b98b9
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push esi
mov esi, dword [esp + 0x18]
push edi
mov edi, ecx
push 0xffffffffffffffff
push 0
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
push esi
mov dword [esp + 0x14], edi
mov byte [edi], 0
call fcn.10001580
lea ecx, [edi + 0x18]
push 0xffffffffffffffff
push 0
lea eax, [esi + 0x18]
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push eax
mov dword [esp + 0x20], 0
mov byte [ecx], 0
call fcn.10001580
lea ecx, [edi + 0x30]
push 0xffffffffffffffff
push 0
lea eax, [esi + 0x30]
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push eax
mov byte [esp + 0x20], 1
mov byte [ecx], 0
call fcn.10001580
lea ecx, [edi + 0x48]
push 0xffffffffffffffff
push 0
lea eax, [esi + 0x48]
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push eax
mov byte [esp + 0x20], 2
mov byte [ecx], 0
call fcn.10001580
lea eax, [esi + 0x60]
push eax
lea ecx, [edi + 0x60]
mov byte [esp + 0x18], 3
call fcn.1001f000
mov al, byte [esi + 0x6c]
mov ecx, dword [esp + 0xc]
mov byte [edi + 0x6c], al
mov eax, edi
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x10
ret 4

Function at 0x1001e400
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x100b9d1f
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
xor ecx, ecx
mov eax, 0x7fff
mov edx, 2
mul edx
seto cl
mov dword [esp], 0
push edi
mov dword [esp + 0x64], 0
mov dword [esp + 8], 0x7fff
mov dword [esp + 0xc], 0x7fff
mov byte [esp + 0x14], 1
neg ecx
or ecx, eax
push ecx
call fcn.1001a154
mov edi, eax
add esp, 4
mov dword [esp + 0x10], edi
push 0x7fff
push edi
mov dword [esp + 0x6c], 1
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x1001e526
push 0x7fff
push edi
push edi
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
jne 0x1001e4c0
push str.Cannot_get_system_directory_long_path_name
lea ecx, [esp + 0x1c]
call fcn.10001520
push 0
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0x6c], 2
call fcn.10025e40
push 0x100ef348
lea eax, [esp + 0x34]
push eax
call fcn.1003856a
push esi
mov esi, dword [esp + 0x70]
mov dword [esi + 0x14], 0xf
mov dword [esi + 0x10], 0
mov byte [esi], 0
push esi
push edi
mov dword [esp + 0x10], 1
call fcn.1002abb0
mov ecx, dword [esi + 0x10]
add esp, 8
cmp dword [esi + 0x14], 0x10
jb 0x1001e4f5
mov eax, dword [esi]
jmp 0x1001e4f7
mov eax, esi
cmp byte [eax + ecx - 1], 0x5c
je 0x1001e50a
push 0x100c04b8
mov ecx, esi
call fcn.10015b30
push edi
call fcn.10035d9e
mov ecx, dword [esp + 0x64]
add esp, 4
mov eax, esi
pop esi
pop edi
mov dword fs:[0], ecx
add esp, 0x64
ret
push 0x23
push str.Cannot_get_temporary_directory_path
lea ecx, [esp + 0x20]
mov dword [esp + 0x34], 0xf
mov dword [esp + 0x30], 0
mov byte [esp + 0x20], 0
call fcn.100016c0
push 0
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0x6c], 3
call fcn.10025e40
push 0x100ef348
lea eax, [esp + 0x34]
push eax
call fcn.1003856a
int3
Function at 0x1001e570
Capabilities:
Query environment variable

Disassembly:
push 0xffffffffffffffff
push 0x100b9d41
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x44
push esi
xor eax, eax
push edi
mov dword [esp + 8], 0
mov dword [esp + 0x30], 7
mov dword [esp + 0x2c], 0
mov word [esp + 0x1c], ax
mov dword [esp + 0x54], eax
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x64]
call fcn.1002a650
xor ecx, ecx
mov eax, 0x7fff
mov edx, 2
mul edx
seto cl
mov dword [esp + 0x14], 0x7fff
mov dword [esp + 0x18], 0x7fff
mov byte [esp + 0x20], 1
neg ecx
or ecx, eax
push ecx
call fcn.1001a154
mov edi, eax
add esp, 0xc
mov dword [esp + 0x14], edi
cmp dword [esp + 0x30], 8
push 0x7fff
lea ecx, [esp + 0x20]
cmovae ecx, dword [esp + 0x20]
push edi
push ecx
mov byte [esp + 0x60], 1
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x1001e6ae
cmp eax, 0x7ffe
jae 0x1001e6ae
lea esi, [eax + 1]
cmp esi, 0x7fff
jb 0x1001e64b
push 0
push 0x132
push 0x100c0614
push str.index____used
call fcn.100237b0
add esp, 0x10
xor eax, eax
mov word [edi + esi*2], ax
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x44], eax
mov byte [esp + 0x34], al
lea eax, [esp + 0x34]
push eax
push edi
mov byte [esp + 0x5c], 2
call fcn.1002abb0
mov esi, dword [esp + 0x64]
add esp, 8
lea eax, [esp + 0x34]
push eax
mov ecx, esi
call fcn.1000d6e0
cmp dword [esp + 0x48], 0x10
jb 0x1001e697
push dword [esp + 0x34]
call fcn.10035dcd
add esp, 4
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x44], 0
mov byte [esp + 0x34], 0
jmp 0x1001e6d2
mov esi, dword [esp + 0x5c]
push 0xffffffffffffffff
push 0
push dword [esp + 0x68]
mov dword [esi + 0x14], 0xf
mov dword [esi + 0x10], 0
mov ecx, esi
mov byte [esi], 0
call fcn.10001580
push edi
call fcn.10035d9e
add esp, 4
cmp dword [esp + 0x30], 8
jb 0x1001e6ee
push dword [esp + 0x1c]
call fcn.10035dcd
add esp, 4
mov ecx, dword [esp + 0x4c]
pop edi
mov eax, esi
pop esi
mov dword fs:[0], ecx
add esp, 0x50
ret
Function at 0x1001fab0
Capabilities:
Check if file exists

Disassembly:
push esi
mov esi, ecx
cmp dword [esi + 0x14], 0
jne 0x1001facf
push 0
push 0x60
push str.e:public_thirdpartypoco_develop_foundation_srcFile_WIN32U.cpp
push str.__path.empty__
call fcn.100237b0
add esp, 0x10
cmp dword [esi + 0x30], 8
lea eax, [esi + 0x1c]
jb 0x1001fada
mov eax, dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x1001fb06
call dword [sym.imp.KERNEL32.dll_GetLastError]
add eax, 0xfffffffe
cmp eax, 0x13
ja case.0x1001fafb.4
movzx eax, byte [eax + 0x1001fb1c]
jmp dword [eax*4 + 0x1001fb14]
xor al, al
pop esi
ret
mov al, 1
pop esi
ret
lea eax, [esi + 4]
push eax
call fcn.10020620
nop
add bh, bl
add dword [eax], edx
or bh, bl
add dword [eax], edx
add byte [eax], al
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [eax], eax
add dword [ecx], eax
add dword [ecx], eax
add dword [eax], eax
push esi
mov esi, ecx
cmp dword [esi + 0x14], 0
jne 0x1001fb4f
push 0
push 0x76
push str.e:public_thirdpartypoco_develop_foundation_srcFile_WIN32U.cpp
push str.__path.empty__
call fcn.100237b0
add esp, 0x10
cmp dword [esi + 0x30], 8
lea eax, [esi + 0x1c]
jb 0x1001fb5a
mov eax, dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x1001fb75
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 5
jne 0x1001fb79
xor al, al
pop esi
ret
mov al, 1
pop esi
ret
lea eax, [esi + 4]
push eax
call fcn.10020620
int3

Function at 0x1001fcc0
Capabilities:
Check if file exists

Disassembly:
push esi
mov esi, ecx
cmp dword [esi + 0x14], 0
jne 0x1001fce2
push 0
push 0xa1
push str.e:public_thirdpartypoco_develop_foundation_srcFile_WIN32U.cpp
push str.__path.empty__
call fcn.100237b0
add esp, 0x10
cmp dword [esi + 0x30], 8
lea eax, [esi + 0x1c]
jb 0x1001fced
mov eax, dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1001fd01
shr eax, 4
and eax, 1
pop esi
ret
lea eax, [esi + 4]
push eax
call fcn.10020620
int3

Function at 0x10020248
Capabilities:
Copy file

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x100b9e89
push eax
mov dword fs:[0], esp
sub esp, 0x18
push esi
mov esi, ecx
cmp dword [esi + 0x14], 0
jne 0x1002026a
push 0
push 0x125
push str.e:public_thirdpartypoco_develop_foundation_srcFile_WIN32U.cpp
push str.__path.empty__
call fcn.100237b0
add esp, 0x10
xor eax, eax
mov dword [esp + 0x18], 7
mov dword [esp + 0x14], 0
mov word [esp + 4], ax
mov dword [esp + 0x24], eax
lea eax, [esp + 4]
push eax
push dword [esp + 0x30]
call fcn.10020a90
add esp, 8
cmp dword [esp + 0x18], 8
lea ecx, [esp + 4]
cmovae ecx, dword [esp + 4]
cmp dword [esi + 0x30], 8
lea eax, [esi + 0x1c]
jb 0x100202af
mov eax, dword [eax]
push 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x100202c6
lea eax, [esi + 4]
push eax
call fcn.10020620
cmp dword [esp + 0x18], 8
jb 0x100202d9
push dword [esp + 4]
call fcn.10035dcd
add esp, 4
mov ecx, dword [esp + 0x1c]
pop esi
mov dword fs:[0], ecx
add esp, 0x24
ret 4
Function at 0x10020308
Capabilities:
Move file

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x100b9e9b
push eax
mov dword fs:[0], esp
sub esp, 0x18
push esi
mov esi, ecx
cmp dword [esi + 0x14], 0
jne 0x1002032a
push 0
push 0x130
push str.e:public_thirdpartypoco_develop_foundation_srcFile_WIN32U.cpp
push str.__path.empty__
call fcn.100237b0
add esp, 0x10
xor eax, eax
mov dword [esp + 0x18], 7
mov dword [esp + 0x14], 0
mov word [esp + 4], ax
mov dword [esp + 0x24], eax
lea eax, [esp + 4]
push eax
push dword [esp + 0x30]
call fcn.10020a90
add esp, 8
cmp dword [esp + 0x18], 8
lea ecx, [esp + 4]
cmovae ecx, dword [esp + 4]
cmp dword [esi + 0x30], 8
lea eax, [esi + 0x1c]
jb 0x1002036f
mov eax, dword [eax]
push 1
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne 0x10020386
lea eax, [esi + 4]
push eax
call fcn.10020620
cmp dword [esp + 0x18], 8
jb 0x10020399
push dword [esp + 4]
call fcn.10035dcd
add esp, 4
mov ecx, dword [esp + 0x1c]
pop esi
mov dword fs:[0], ecx
add esp, 0x24
ret 4

Function at 0x10022140
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x100ba048
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push esi
mov esi, ecx
mov dword [esp + 4], esi
call fcn.1000fc20
mov eax, dword [esi + 0xc]
mov dword [esi + 0x38], 0xffffffff
mov byte [esi + 0x3c], 0
mov dword [eax], 0
mov eax, dword [esi + 0x1c]
mov dword [eax], 0
mov eax, dword [esi + 0x2c]
mov dword [eax], 0
mov eax, dword [esi + 0x10]
mov dword [eax], 0
mov eax, dword [esi + 0x20]
mov dword [eax], 0
mov eax, dword [esi + 0x30]
mov dword [eax], 0
mov ecx, dword [esp + 0x18]
mov dword [esi], vtable.Poco::Base64DecoderBuf.0
mov dword [esi + 0x44], 0
mov dword [esi + 0x48], 0
mov eax, dword [ecx]
mov dword [esp + 0x10], 0
mov eax, dword [eax + 4]
mov dword [esp + 0x18], 0x1010bb34
mov eax, dword [eax + ecx + 0x38]
mov ecx, 0x1010bb34
mov dword [esi + 0x4c], eax
call fcn.10022790
cmp byte [0x1010bb30], 0
jne 0x10022221
push edi
or eax, 0xffffffff
mov ecx, 0x40
mov edi, 0x1010ba30
rep stosd dword es:[edi], eax
xor eax, eax
pop edi
lea ecx, [ecx]
movzx ecx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_t]
mov byte [ecx + 0x1010ba30], al
inc eax
cmp eax, 0x40
jb 0x10022200
mov byte [0x1010ba6d], 0
mov byte [0x1010bb30], 1
lea ecx, [esp + 0x18]
call fcn.100226d0
mov ecx, dword [esp + 8]
mov eax, esi
pop esi
mov dword fs:[0], ecx
add esp, 0x10
ret 4
Function at 0x1002aa70
Capabilities:
Access peb ldr_data
Get ntdll base address

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x100ba8d6
push eax
mov dword fs:[0], esp
sub esp, 0x14
push esi
mov esi, dword [esp + 0x30]
cmp dword [esi + 0x14], 0x10
mov dword [esi + 0x10], 0
jb 0x1002aa9e
mov eax, dword [esi]
jmp 0x1002aaa0
mov eax, esi
lea ecx, [esp + 0x30]
mov byte [eax], 0
call fcn.1002db90
push 2
lea ecx, [esp + 8]
mov dword [esp + 0x24], 0
call fcn.1002df80
push 0x3f
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0xc]
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x2c], 1
call fcn.1002d570
mov eax, dword [esp + 0x2c]
push esi
add eax, eax
push eax
push dword [esp + 0x30]
lea ecx, [esp + 0x18]
mov byte [esp + 0x2c], 2
call fcn.1002d800
lea ecx, [esp + 0xc]
mov byte [esp + 0x20], 1
call fcn.1002d590
lea ecx, [esp + 4]
mov byte [esp + 0x20], 0
call fcn.1002dfc0
lea ecx, [esp + 0x30]
mov dword [esp + 0x20], 0xffffffff
call fcn.1002dba0
mov ecx, dword [esp + 0x18]
pop esi
mov dword fs:[0], ecx
add esp, 0x20
ret

Function at 0x1002b440
Capabilities:
Query environment variable

Disassembly:
push 0xffffffffffffffff
push 0x100ba939
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
push ebx
mov dword [esp + 4], 0
push esi
xor eax, eax
push edi
mov dword [esp + 0x34], 7
mov dword [esp + 0x30], 0
mov word [esp + 0x20], ax
mov edi, dword [esp + 0x78]
lea eax, [esp + 0x20]
push eax
push edi
mov dword [esp + 0x74], 1
call fcn.1002a650
mov ebx, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
add esp, 8
cmp dword [esp + 0x34], 8
push 0
lea eax, [esp + 0x24]
cmovae eax, dword [esp + 0x24]
push 0
push eax
call ebx
mov esi, eax
test esi, esi
jne 0x1002b4cf
push eax
push edi
lea ecx, [esp + 0x40]
call fcn.100259c0
push 0x100f3730
lea eax, [esp + 0x3c]
push eax
call fcn.1003856a
xor edi, edi
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], edi
mov byte [esp + 0x1c], 1
test esi, esi
je 0x1002b505
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1001a154
mov edi, eax
add esp, 4
mov dword [esp + 0x18], edi
cmp dword [esp + 0x34], 8
push esi
lea ecx, [esp + 0x24]
cmovae ecx, dword [esp + 0x24]
push edi
push ecx
mov byte [esp + 0x78], 2
call ebx
mov ebx, dword [esp + 0x74]
mov dword [ebx + 0x14], 0xf
mov dword [ebx + 0x10], 0
mov byte [ebx], 0
push ebx
lea eax, [esi - 1]
push eax
push edi
mov dword [esp + 0x18], 1
call fcn.1002aa70
push edi
call fcn.10035d9e
add esp, 0x10
cmp dword [esp + 0x34], 8
jb 0x1002b561
push dword [esp + 0x20]
call fcn.10035dcd
add esp, 4
mov ecx, dword [esp + 0x64]
pop edi
pop esi
mov eax, ebx
pop ebx
mov dword fs:[0], ecx
add esp, 0x64
ret
Function at 0x1002b580
Capabilities:
Query environment variable

Disassembly:
push 0xffffffffffffffff
push 0x100ba94b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
xor eax, eax
push ebx
mov dword [esp + 0x18], 7
mov dword [esp + 0x14], 0
mov word [esp + 4], ax
mov dword [esp + 0x24], eax
lea eax, [esp + 4]
push eax
push dword [esp + 0x30]
call fcn.1002a650
add esp, 8
cmp dword [esp + 0x18], 8
push 0
lea eax, [esp + 8]
cmovae eax, dword [esp + 8]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
setne bl
cmp dword [esp + 0x18], 8
jb 0x1002b5f6
push dword [esp + 4]
call fcn.10035dcd
add esp, 4
mov ecx, dword [esp + 0x1c]
mov al, bl
pop ebx
mov dword fs:[0], ecx
add esp, 0x24
ret

Function at 0x1002f3e0
Capabilities:
Allocate thread local storage

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x100bae28
push eax
mov dword fs:[0], esp
sub esp, 0x44
push esi
mov esi, ecx
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [esi], eax
cmp eax, 0xffffffff
jne 0x1002f454
push 0x22
push str.cannot_allocate_thread_context_key
lea ecx, [esp + 0xc]
mov dword [esp + 0x20], 0xf
mov dword [esp + 0x1c], 0
mov byte [esp + 0xc], 0
call fcn.100016c0
push 0
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x24]
mov dword [esp + 0x58], 0
call fcn.10025e40
push 0x100ef348
lea eax, [esp + 0x20]
push eax
call fcn.1003856a
mov ecx, dword [esp + 0x48]
mov eax, esi
pop esi
mov dword fs:[0], ecx
add esp, 0x50
ret
Function at 0x10046e8f
Capabilities:
Link many functions at runtime
Print debug messages

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [0x100fb4f0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_EncodePointer]
push esi
push edi
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0xc]
xor edi, edi
push edi
mov dword [ebp - 0x20], eax
call ebx
mov esi, eax
mov dword [ebp - 0x18], esi
call fcn.1003aa0f
mov dword [ebp - 0x14], eax
cmp dword [0x1010ca34], edi
jne 0x10046f80
push 0x800
push edi
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov esi, eax
test esi, esi
jne 0x10046f0d
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x57
jne 0x10047060
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
je 0x10047060
push str.MessageBoxW
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x10047060
push eax
call ebx
push str.GetActiveWindow
push esi
mov dword [0x1010ca34], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
push str.GetLastActivePopup
push esi
mov dword [0x1010ca38], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
push str.GetUserObjectInformationW
push esi
mov dword [0x1010ca3c], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
mov dword [0x1010ca44], eax
test eax, eax
je 0x10046f7d
push str.GetProcessWindowStation
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
mov dword [0x1010ca40], eax
mov esi, dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
test eax, eax
je 0x10046fa5
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x10046f98
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
cmp dword [ebp - 0x14], edi
je 0x10046fba
push 4
pop eax
jmp 0x10047062
cmp dword [ebp - 0x14], edi
je 0x10046fba
push dword [0x1010ca34]
call dword [sym.imp.KERNEL32.dll_DecodePointer]
push 3
jmp 0x10046f9f
mov eax, dword [0x1010ca40]
mov ebx, dword [sym.imp.KERNEL32.dll_DecodePointer]
cmp eax, esi
je 0x10047018
cmp dword [0x1010ca44], esi
je 0x10047018
push eax
call ebx
push dword [0x1010ca44]
mov dword [ebp - 0x14], eax
call ebx
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
test ecx, ecx
je 0x10047018
test eax, eax
je 0x10047018
call ecx
test eax, eax
je 0x1004700d
lea ecx, [ebp - 0x24]
push ecx
push 0xc
lea ecx, [ebp - 0x10]
push ecx
push 1
push eax
call dword [ebp - 0x18]
test eax, eax
je 0x1004700d
test byte [ebp - 8], 1
jne 0x10047018
mov esi, dword [ebp + 0x10]
or esi, 0x200000
jmp 0x10047048
mov eax, dword [0x1010ca38]
cmp eax, esi
je 0x10047045
push eax
call ebx
test eax, eax
je 0x10047045
call eax
mov edi, eax
test edi, edi
je 0x10047045
mov eax, dword [0x1010ca3c]
cmp eax, esi
je 0x10047045
push eax
call ebx
test eax, eax
je 0x10047045
push edi
call eax
mov edi, eax
mov esi, dword [ebp + 0x10]
push dword [0x1010ca34]
call ebx
test eax, eax
je 0x10047060
push esi
push dword [ebp - 0x20]
push dword [ebp - 0x1c]
push edi
call eax
jmp 0x10047062
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1003855b
leave
ret
Function at 0x1004ee4f
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
push edi
call fcn.1003ed35
mov esi, dword [ebp + 8]
push 2
mov edi, eax
lea eax, [ebp - 4]
push eax
mov ecx, esi
and ecx, 0x3ff
push 0x20000001
or ecx, 0x400
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
jne 0x1004ee87
xor eax, eax
jmp 0x1004eeb3
cmp esi, dword [ebp - 4]
je 0x1004eeb0
cmp dword [ebp + 0xc], 0
je 0x1004eeb0
push dword [edi + 0x9c]
call fcn.1004ea5d
push dword [edi + 0x9c]
mov esi, eax
call fcn.1003acb7
pop ecx
pop ecx
cmp esi, eax
je 0x1004ee83
xor eax, eax
inc eax
pop edi
pop esi
leave
ret