joyce8/EMBER2024-capa huggingface dataset:
Function at 0x407858
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
push edi
call fcn.004052b1
xor ebx, ebx
cmp dword [0x410a0c], ebx
mov dword [ebp - 8], eax
mov dword [ebp - 4], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], ebx
jne 0x40792e
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, ebx
je 0x407a0e
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MessageBoxA
push edi
call esi
cmp eax, ebx
je 0x407a0e
push eax
call fcn.00405243
mov dword [esp], str.GetActiveWindow
push edi
mov dword [0x410a0c], eax
call esi
push eax
call fcn.00405243
mov dword [esp], str.GetLastActivePopup
push edi
mov dword [0x410a10], eax
call esi
push eax
call fcn.00405243
mov dword [0x410a14], eax
lea eax, [ebp - 0xc]
push eax
call fcn.00404174
test eax, eax
pop ecx
pop ecx
je 0x4078fc
push ebx
push ebx
push ebx
push ebx
push ebx
call fcn.004046f4
add esp, 0x14
cmp dword [ebp - 0xc], 2
jne 0x40792e
push str.GetUserObjectInformationA
push edi
call esi
push eax
call fcn.00405243
cmp eax, ebx
pop ecx
mov dword [0x410a1c], eax
je 0x40792e
push str.GetProcessWindowStation
push edi
call esi
push eax
call fcn.00405243
pop ecx
mov dword [0x410a18], eax
mov eax, dword [0x410a18]
mov ecx, dword [ebp - 8]
cmp eax, ecx
je 0x4079b3
cmp dword [0x410a1c], ecx
je 0x4079b3
push eax
call fcn.004052ba
push dword [0x410a1c]
mov esi, eax
call fcn.004052ba
cmp esi, ebx
pop ecx
pop ecx
mov edi, eax
je 0x4079b3
cmp edi, ebx
je 0x4079b3
call esi
cmp eax, ebx
je 0x407980
lea ecx, [ebp - 0x14]
push ecx
push 0xc
lea ecx, [ebp - 0x20]
push ecx
push 1
push eax
call edi
test eax, eax
je 0x407980
test byte [ebp - 0x18], 1
jne 0x4079b3
lea eax, [ebp - 0x10]
push eax
call fcn.004041ab
test eax, eax
pop ecx
je 0x40799b
push ebx
push ebx
push ebx
push ebx
push ebx
call fcn.004046f4
add esp, 0x14
cmp dword [ebp - 0x10], 4
jb 0x4079aa
or dword [ebp + 0x10], 0x200000
jmp 0x4079ee
or dword [ebp + 0x10], 0x40000
jmp 0x4079ee
mov eax, dword [0x410a10]
cmp eax, dword [ebp - 8]
je 0x4079ee
push eax
call fcn.004052ba
cmp eax, ebx
pop ecx
je 0x4079ee
call eax
cmp eax, ebx
mov dword [ebp - 4], eax
je 0x4079ee
mov eax, dword [0x410a14]
cmp eax, dword [ebp - 8]
je 0x4079ee
push eax
call fcn.004052ba
cmp eax, ebx
pop ecx
je 0x4079ee
push dword [ebp - 4]
call eax
mov dword [ebp - 4], eax
push dword [0x410a0c]
call fcn.004052ba
cmp eax, ebx
pop ecx
je 0x407a0e
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp - 4]
call eax
jmp 0x407a10
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret

Function at 0x408802
Capabilities:
Enumerate pe sections

Disassembly:
mov ecx, dword [esp + 8]
push esi
push edi
xor edi, edi
movzx eax, word [ecx + 0x14]
movzx esi, word [ecx + 6]
test esi, esi
lea eax, [eax + ecx + 0x18]
jbe 0x40883d
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x408824
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0xc]
cmp dword [esp + 0xc], edx
jb 0x408835
add edx, ecx
cmp dword [esp + 0xc], edx
jb 0x40883f
inc edi
add eax, 0x28
cmp edi, esi
jb 0x40881a
xor eax, eax
pop edi
pop esi
ret
Function at 0x408867
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
call fcn.004087a0
ret

Function at 0x408cc1
Capabilities:
Inspect section memory permissions

Disassembly:
les edx, [eax]
mov dword [ebp - 0xc0], eax
push 0x40
push 0x1000
push dword [ebp + 0xc]
Function at 0x40a961
Capabilities:
Resolve function by parsing pe exports

Disassembly:
pushal
mov ebp, esp
add ebp, 0x24
push esp
call fcn.004087c2
aaa
dec ebx
pushal
xor esp, dword [ecx + 0x30]
add byte [eax], al
add byte [ebx + 0x708b0c40], cl
sbb al, 0xad
cmp byte [eax + 0x1c], 0x18
je 0x40a986
xchg esi, eax
lodsd eax, dword [esi]
mov eax, dword [eax + 8]
push eax
call fcn.004087c2
cmpsb byte [esi], byte es:[edi]
ror byte [edi], cl
push edi
mov edi, eax
mov eax, dword [edi + 0x3c]
mov edx, dword [edi + eax + 0x78]
add edx, edi
mov ecx, dword [edx + 0x18]
mov ebx, dword [edx + 0x20]
add ebx, edi
call fcn.004087c2
mov dword [eax - 0x74b68057], edx
xor al, 0x8b
dec ecx
mov esi, dword [ebx + ecx*4]
add esi, edi
mov eax, 0x50746547
cmp dword [esi], eax
jne 0x40a9af
mov eax, 0x41636f72
cmp dword [esi + 4], eax
jne 0x40a9af
call fcn.004087c2
out 0x52, al
push ecx
push ecx
mov ebx, dword [edx + 0x24]
add ebx, edi
mov cx, word [ebx + ecx*2]
mov ebx, dword [edx + 0x1c]
add ebx, edi
mov eax, dword [ebx + ecx*4]
add eax, edi
push eax
call fcn.004087c2
jecxz 0x40aa0f
cmp bh, byte [ebx - 1]
jne 0x40a9f9
push dword [ebp + 4]
push dword [ebp]
call fcn.00408fc2
mov bh, bh
call [ecx - 0x3d]
in eax, 0xff
dec dword [eax - 0x3ca60001]
add eax, 0xc08d0c8b
and al, byte [ecx]
Function at 0x414b30
Capabilities:
Packed with generic packer

Disassembly:
pushal
mov esi, section.UPX1
lea edi, [esi - 0xe000]
push edi
or ebp, 0xffffffff
jmp 0x414b52
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x414b59
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x414b48
mov eax, 1
add ebx, ebx
jne 0x414b6b
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x414b60
jne 0x414b7c
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x414b60
xor ecx, ecx
sub eax, 3
jb 0x414b90
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x414c02
mov ebp, eax
add ebx, ebx
jne 0x414b9b
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jne 0x414ba8
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jne 0x414bcc
inc ecx
add ebx, ebx
jne 0x414bb8
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x414bad
jne 0x414bc9
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x414bad
add ecx, 2
cmp ebp, 0xfffff300
adc ecx, 1
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x414bec
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x414bdd
jmp 0x414b4e
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x414bec
add edi, ecx
jmp 0x414b4e
pop esi
mov edi, esi
mov ecx, 0x43b
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x414c0a
cmp byte [edi], 0
jne 0x414c0a
mov eax, dword [edi]
mov bl, byte [edi + 4]
shr ax, 8
rol eax, 0x10
xchg ah, al
sub eax, edi
sub bl, 0xe8
add eax, esi
mov dword [edi], eax
add edi, 5
mov al, bl
loop 0x414c0f
lea edi, [esi + 0x12000]
mov eax, dword [edi]
or eax, eax
je 0x414c7e
mov ebx, dword [edi + 4]
lea eax, [eax + esi + 0x15bbc]
add ebx, esi
push eax
add edi, 8
call dword [esi + 0x15c44]
xchg ebp, eax
mov al, byte [edi]
inc edi
or al, al
je 0x414c3c
mov ecx, edi
push edi
dec eax
repne scasb al, byte es:[edi]
push ebp
call dword [esi + 0x15c4c]
or eax, eax
je 0x414c78
pop es
mov dword [ebx], eax
add ebx, 4
jmp 0x414c59
call dword [esi + 0x15c48]
mov ebp, dword [esi + 0x15c50]
lea edi, [esi - 0x1000]
mov ebx, 0x1000
push eax
push esp
push 4
push ebx
push edi
call ebp
lea eax, [edi + 0x21f]
and byte [eax], 0x7f
and byte [eax + 0x28], 0x7f
pop eax
push eax
push esp
push eax
push ebx
push edi
call ebp
pop eax
popal
lea eax, [esp - 0x80]
push 0
cmp esp, eax
jne 0x414cb2
sub esp, 0xffffff80
jmp 0x409820
Function at 0x29a04ef9
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
pushal
call 0x29a04f08
pop dword [ebp - 0x50]
mov eax, 0x29a04f08
sub dword [ebp - 0x50], eax
mov dword [ebp - 0x60], 0xac38a5f8
add dword [ebp - 0x60], 0xa2199f53
mov dword [ebp - 0x5c], 0xa1a6070f
sub dword [ebp - 0x5c], 0x6f72baca
mov dword [ebp - 0x58], 0xe89a7138
add dword [ebp - 0x58], 0x63b1d2f6
mov dword [ebp - 0x54], 0x3abade62
sub dword [ebp - 0x54], 0x3abade62
lea eax, [ebp - 0x60]
push eax
mov eax, 0x49ba17e3
sub eax, 0x2018d757
add eax, dword [ebp - 0x50]
call dword [eax]
mov dword [ebp - 0x60], 0x60aec4b8
add dword [ebp - 0x60], 0x13c3a49e
mov dword [ebp - 0x5c], 0xee13beec
add dword [ebp - 0x5c], 0x5358a289
mov dword [ebp - 0x58], 0xa9c50378
add dword [ebp - 0x58], 0xb9aa68f4
mov dword [ebp - 0x54], 0x698ace0f
add dword [ebp - 0x54], 0x967531f1
lea ebx, [ebp - 0x60]
push ebx
push eax
mov eax, sym.imp.kernel32.dll_GetProcAddress
add eax, dword [ebp - 0x50]
call dword [eax]
push 0x40
push 0x1000
push 0x3bafd
push 0
call eax
mov ecx, 0x453c3cc2
sub ecx, 0x453beed7
xor edx, edx
add edx, eax
mov ebx, 0x39a26593
add ebx, 0xefffca6d
add ebx, dword [ebp - 0x50]
mov edi, 0x472a5695
add edi, 0x88aeea1d
mov esi, dword [ebx]
sub dword [ebp - 0x10], ebx
xor esi, edi
add dword [ebp - 0x44], esi
mov dword [edx], esi
sub dword [ebp - 8], 0x82770dd6
add edx, 0x59985721
sub edx, 0x5998571d
add ebx, 0x67825455
add ebx, 0x987dabaf
loop 0x29a05022
add eax, 0x12a7f
mov ebx, eax
add eax, 0x1e25eeda
add eax, 0xe1da112b
mov ecx, 0x2cece40b
sub ecx, 0x34ce40b
add ecx, dword [ebp - 0x50]
call ebx
leave
ret
Function at 0x3de3e10
Capabilities:
Packed with generic packer

Disassembly:
pushal
mov esi, section.UPX1
lea edi, [esi - 0x2d000]
push edi
jmp 0x3de3e2a
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x3de3e31
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x3de3e20
mov eax, 1
add ebx, ebx
jne 0x3de3e43
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x3de3e54
jne 0x3de3e73
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x3de3e73
dec eax
add ebx, ebx
jne 0x3de3e60
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
jmp 0x3de3e38
add ebx, ebx
jne 0x3de3e6f
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jmp 0x3de3ec5
xor ecx, ecx
sub eax, 3
jb 0x3de3e8b
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x3de3efa
sar eax, 1
mov ebp, eax
jmp 0x3de3e96
add ebx, ebx
jne 0x3de3e96
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x3de3e64
inc ecx
add ebx, ebx
jne 0x3de3ea4
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x3de3e64
add ebx, ebx
jne 0x3de3eb1
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x3de3ea6
jne 0x3de3ec2
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x3de3ea6
add ecx, 2
cmp ebp, 0xfffffb00
adc ecx, 2
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x3de3ee4
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x3de3ed6
jmp 0x3de3e26
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x3de3ee4
add edi, ecx
jmp 0x3de3e26
pop esi
mov edi, esi
mov ecx, 0x16d
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x3de3f02
cmp byte [edi], 0xb0
jne 0x3de3f02
mov eax, dword [edi]
mov bl, byte [edi + 4]
shr ax, 8
rol eax, 0x10
xchg ah, al
sub eax, edi
sub bl, 0xe8
add eax, esi
mov dword [edi], eax
add edi, 5
mov al, bl
loop 0x3de3f07
mov ebp, dword [esi + 0x63034]
lea edi, [esi - 0x1000]
mov ebx, 0x1000
push eax
push esp
push 4
push ebx
push edi
call ebp
lea eax, [edi + 0x1cf]
and byte [eax], 0x7f
and byte [eax + 0x28], 0x7f
pop eax
push eax
push esp
push eax
push ebx
push edi
call ebp
pop eax
popal
lea eax, [esp - 0x80]
push 0
cmp esp, eax
jne 0x3de3f62
sub esp, 0xffffff80
jmp 0x3d817a6
Function at 0x413fa8
Capabilities:
Enumerate files on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeac
push ebx
push esi
xor ecx, ecx
mov dword [ebp - 0x150], ecx
mov dword [ebp - 0x154], ecx
mov dword [ebp - 0x14c], ecx
mov dword [ebp - 8], ecx
mov esi, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.004038a4
xor eax, eax
push ebp
push 0x414122
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x40ec68]
call fcn.00402af4
mov ebx, eax
lea eax, [ebp - 8]
mov edx, dword [ebp - 4]
call fcn.0040352c
lea eax, [ebp - 0x14c]
push eax
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.0040ecbc
mov eax, dword [ebp - 0x14c]
mov edx, 0x414138
call fcn.00403800
je 0x414052
push dword [ebp - 4]
push 0x414138
push 0x414144
lea eax, [ebp - 4]
mov edx, 3
call fcn.004037b0
lea eax, [ebp - 8]
mov ecx, 0x414138
mov edx, dword [ebp - 4]
call fcn.0040373c
jmp 0x41405f
lea eax, [ebp - 4]
mov edx, 0x414144
call fcn.004036f8
lea eax, [ebp - 0x148]
push eax
mov eax, dword [ebp - 4]
call fcn.004038b4
push eax
call sub.KERNEL32.DLL_FindFirstFileA
mov ebx, eax
cmp ebx, 0xffffffff
je 0x4140f7
mov eax, dword [ebp - 0x148]
add eax, 0xfffffff0
sub eax, 8
jb 0x414091
add eax, 0xffffffe8
sub eax, 8
jae 0x4140e0
lea eax, [ebp - 0x11c]
cmp eax, 0x2e
je 0x4140e0
lea eax, [ebp - 0x11c]
cmp eax, 0x414148
je 0x4140e0
lea eax, [ebp - 0x154]
lea edx, [ebp - 0x11c]
mov ecx, 0x104
call fcn.004036c4
mov ecx, dword [ebp - 0x154]
lea eax, [ebp - 0x150]
mov edx, dword [ebp - 8]
call fcn.0040373c
mov edx, dword [ebp - 0x150]
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x34]
lea eax, [ebp - 0x148]
push eax
push ebx
call sub.KERNEL32.DLL_FindNextFileA
neg eax
sbb eax, eax
neg eax
test al, al
jne 0x41407b
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x414129
lea eax, [ebp - 0x154]
mov edx, 3
call fcn.004034b8
lea eax, [ebp - 8]
mov edx, 2
call fcn.004034b8
ret

Function at 0x115473c
Capabilities:
Encode data using xor

Disassembly:
jmp 0x1154746
pushal
call 0x115474c
pop ebp
sub ebp, 0x10
sub ebp, 0xd5473c
jmp 0x1154762
mov eax, 0xd5473c
add eax, ebp
add eax, 0x4c
mov ecx, 0x5c1
mov edx, 0x1b97f233
xor byte [eax], dl
inc eax
dec ecx
jne 0x1154779
jmp 0x115478c
mov eax, 0xfbab8fe
xor esi, dword [ebx]
xor esi, dword [edx + 0x3333cbf2]
xor esi, dword [eax]
dec byte [ebx + 0x33333334]
mov dword [ebx], ebx
xor esi, dword [ebx]
xor eax, esp
sal dword [eax], 1
sti
mov eax, 0x33333fb2
xor esi, dword [eax]
mul byte [ebx - 0x42]
push edi
pop ss
iretd
Function at 0x10003270
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1003d228
mov eax, dword fs:[0]
push eax
push esi
push edi
mov eax, dword [0x100512d4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
xorps xmm0, xmm0
mov esi, dword [ebp + 0xc]
lea eax, [edi + 4]
push eax
mov dword [edi], vtable.std::exception.0
movq qword [eax], xmm0
lea eax, [esi + 4]
push eax
call sub.VCRUNTIME140.dll___std_exception_copy
add esp, 8
mov dword [edi], vtable.boost::system::system_error.0
lea ecx, [edi + 0x14]
mov eax, dword [esi + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0x10], eax
lea eax, [esi + 0x14]
push eax
mov dword [ebp - 4], 0
call fcn.100077a0
mov dword [edi + 0x2c], vtable.boost::exception.0
mov eax, edi
mov dword [edi + 0x30], 0
mov dword [edi + 0x34], 0
mov dword [edi + 0x38], 0
mov dword [edi + 0x3c], 0xffffffff
mov dword [edi], vtable.boost::exception_detail::error_info_injector_class_boost::thread_resource_error_.0
mov dword [edi + 0x2c], vtable.boost::exception_detail::error_info_injector_class_boost::thread_resource_error_.1.0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret

Function at 0x100077a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
pushal
call 0x100077af
pop dword [ebp - 0x24]
mov eax, 0x100077af
sub dword [ebp - 0x24], eax
mov dword [ebp - 0x34], 0x1473d8b4
add dword [ebp - 0x34], 0x39de6c97
mov dword [ebp - 0x30], 0x14fbd56f
sub dword [ebp - 0x30], 0xe2c8892a
mov dword [ebp - 0x2c], 0x94360244
add dword [ebp - 0x2c], 0xb81641ea
invalid
test eax, ebx
invalid
Function at 0x100346a0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [0x100512d4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
cmp ebx, 0xffffffff
jne 0x100346d0
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003af70
mov esp, ebp
pop ebp
ret 4
mov eax, dword [esi + 0x20]
mov eax, dword [eax]
test eax, eax
je 0x10034700
mov edx, dword [esi + 0x30]
mov edx, dword [edx]
add edx, eax
cmp eax, edx
jae 0x10034700
call dword [sym.imp.MSVCP140.dll_protected:_char____thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::_Pninc_void_]
pop esi
mov byte [eax], bl
mov eax, ebx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003af70
mov esp, ebp
pop ebp
ret 4
cmp dword [esi + 0x4c], 0
push edi
je 0x100347fa
mov edi, dword [esi + 0xc]
lea eax, [esi + 0x3c]
cmp dword [edi], eax
jne 0x10034729
mov edx, dword [esi + 0x54]
mov ecx, dword [esi + 0x50]
sub edx, ecx
mov dword [edi], ecx
mov eax, dword [esi + 0x1c]
mov dword [eax], ecx
mov eax, dword [esi + 0x2c]
mov dword [eax], edx
mov ecx, dword [esi + 0x38]
test ecx, ecx
jne 0x1003475d
push dword [esi + 0x4c]
movsx eax, bl
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fputc]
add esp, 8
or ecx, 0xffffffff
cmp eax, ecx
cmovne ecx, ebx
pop edi
pop esi
mov eax, ecx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003af70
mov esp, ebp
pop ebp
ret 4
lea eax, [ebp - 0x2c]
mov byte [ebp - 0x28], bl
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x27]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [esi + 0x40]
push eax
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::codecvt_char__char__struct__Mbstatet_::out_struct__Mbstatet___char_const___char_const___char_const____char___char___char___const]
test eax, eax
js 0x100347fa
cmp eax, 1
jle 0x100347bb
cmp eax, 3
jne 0x100347fa
push dword [esi + 0x4c]
push dword [ebp - 0x28]
call fcn.100077a0
add esp, 8
or ecx, 0xffffffff
test al, al
cmovne ecx, ebx
pop edi
pop esi
mov eax, ecx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003af70
mov esp, ebp
pop ebp
ret 4
mov edi, dword [ebp - 0x2c]
lea eax, [ebp - 0x24]
sub edi, eax
je 0x100347d9
push dword [esi + 0x4c]
push edi
push 1
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
add esp, 0x10
cmp edi, eax
jne 0x100347fa
lea eax, [ebp - 0x28]
mov byte [esi + 0x3d], 1
cmp dword [ebp - 0x30], eax
je 0x100347fa
pop edi
pop esi
mov eax, ebx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003af70
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1003af70
mov esp, ebp
pop ebp
ret 4
Function at 0x100396b0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100412f8
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
push edi
mov eax, dword [0x100512d4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [0x1005128c]
cmp eax, 0xffffffff
jne 0x100396e6
xor ebx, ebx
jmp 0x100396ef
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
mov dword [ebp - 0x10], ebx
mov dword [ebp - 4], 0
test ebx, ebx
je 0x1003972f
mov eax, dword [ebx + 0x18]
mov esi, dword [ebx + 0xc]
test eax, eax
jne 0x1003976e
test esi, esi
jne 0x10039772
push 0x10038230
push 0x10052ad8
call fcn.100077a0
mov eax, dword [0x1005128c]
add esp, 8
cmp eax, 0xffffffff
je 0x1003972f
push esi
push eax
call dword [sym.imp.kernel32.dll_TlsSetValue]
mov dword [ebp - 4], 1
test ebx, ebx
je 0x1003975c
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x1003975c
mov eax, dword [ebx]
mov ecx, ebx
push 0
call dword [eax]
push ebx
push 0
call dword [sym.imp.kernel32.dll_GetProcessHeap]
push eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test esi, esi
je 0x100397b4
mov eax, dword [esi + 4]
mov dword [ebx + 0xc], eax
mov ecx, dword [esi]
test ecx, ecx
je 0x1003979d
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [esi]
mov ecx, edi
push 0
mov eax, dword [edi]
call dword [eax]
push edi
push 0
call dword [sym.imp.kernel32.dll_GetProcessHeap]
push eax
call dword [sym.imp.kernel32.dll_HeapFree]
push esi
push 0
call dword [sym.imp.kernel32.dll_GetProcessHeap]
push eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov esi, dword [ebx + 0xc]
test esi, esi
jne 0x10039772
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x10039700
nop
mov esi, dword [ebx + 0x14]
mov esi, dword [esi]
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x100397d9
mov edx, dword [esi + 0x1c]
test edx, edx
je 0x100397d9
mov eax, dword [ecx]
push edx
call dword [eax + 4]
push esi
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebx + 0x14]
call fcn.100077a0
mov eax, dword [ebx + 0x18]
test eax, eax
jne 0x100397c0
jmp 0x10039700
Function at 0x41eaba
Capabilities:
Parse pe header

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

Function at 0x424aaf
Capabilities:
Allocate thread local storage

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x4dc098
push 0x4dc090
push str.FlsAlloc
push 0x1f
call fcn.0042496e
mov esi, eax
add esp, 0x10
test esi, esi
je 0x424ae3
push dword [ebp + 8]
mov ecx, esi
call dword [0x42d144]
call esi
jmp 0x424ae9
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
pop esi
pop ebp
ret 4

Function at 0x424b2d
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x4dc0a8
push 0x4dc0a0
push str.FlsGetValue
push 0x21
call fcn.0042496e
mov esi, eax
add esp, 0x10
test esi, esi
je 0x424b64
push dword [ebp + 8]
mov ecx, esi
call dword [0x42d144]
call esi
pop esi
pop ebp
ret 4
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsGetValue]

Function at 0x424b6c
Capabilities:
Set thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x4dc0b0
push 0x4dc0a8
push str.FlsSetValue
push 0x22
call fcn.0042496e
mov esi, eax
add esp, 0x10
test esi, esi
je 0x424ba6
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [0x42d144]
call esi
pop esi
pop ebp
ret 8
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsSetValue]
Function at 0x426361
Capabilities:
Query environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
mov esi, eax
test esi, esi
je 0x4263fe
push ebx
push esi
call fcn.0042632a
xor ebx, ebx
sub eax, esi
push ebx
push ebx
push ebx
push ebx
sar eax, 1
push eax
push esi
push ebx
push ebx
mov dword [ebp - 8], eax
call fcn.004262be
add esp, 0x24
mov dword [ebp - 4], eax
test eax, eax
jne 0x4263ab
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
xor eax, eax
jmp 0x4263fd
push edi
push eax
call fcn.00424d71
mov edi, eax
pop ecx
push ebx
test edi, edi
jne 0x4263cb
call fcn.00424dbf
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
xor eax, eax
jmp 0x4263fc
push ebx
push dword [ebp - 4]
push edi
push dword [ebp - 8]
push esi
push ebx
push ebx
call fcn.004262be
add esp, 0x20
test eax, eax
jne 0x4263ea
push edi
call fcn.00424dbf
jmp 0x4263f2
push ebx
call fcn.00424dbf
mov ebx, edi
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
mov eax, ebx
pop edi
pop ebx
pop esi
leave
ret
Function at 0x42c640
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x42c66d
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x42c66d
mov edx, 0x10b
xor eax, eax
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
xor eax, eax
pop ebp
ret