joyce8/EMBER2024-capa huggingface dataset:
Function at 0x507ce0
Capabilities:
Query or enumerate registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x593158
push eax
mov dword fs:[0], esp
sub esp, 0x78
push ebx
push esi
mov esi, ecx
push edi
xor edi, edi
cmp dword [esi + 4], edi
je 0x507d93
cmp dword [esi + 8], edi
je 0x507df2
mov eax, dword [esp + 0x94]
lea ecx, [esp + 0x10]
push eax
push ecx
mov ecx, esi
call fcn.00508770
mov eax, dword [eax]
add esi, 0x14
push eax
mov ecx, esi
mov dword [esp + 0x90], edi
call fcn.0049efd0
lea ecx, [esp + 0x10]
mov bl, al
mov dword [esp + 0x8c], 0xffffffff
call fcn.0056870c
test bl, bl
je 0x507df2
lea edx, [esp + 0xc]
mov ecx, esi
push edx
call fcn.00486660
mov eax, dword [esp + 0xc]
push eax
call fcn.005504ec
mov ecx, dword [esp + 0x9c]
add esp, 4
mov dword [ecx], eax
lea ecx, [esp + 0xc]
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], edi
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], edi
mov dword [esi + 0x1c], edi
call fcn.0056870c
jmp 0x507e05
mov ebx, dword [esp + 0x98]
mov ecx, dword [esi + 0x50]
mov eax, 4
lea edx, [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
push edx
mov edx, dword [esi + ecx*4 + 0x50]
lea eax, [esp + 0x1c]
push ebx
push eax
push edi
mov edi, dword [esp + 0xa4]
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x507e05
mov edx, dword [esi + 0x50]
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x20]
mov dword [esp + 0x1c], 0x64
push eax
mov eax, dword [esi + edx*4 + 0x50]
push ecx
push edi
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
test eax, eax
je 0x507df6
xor eax, eax
jmp 0x507e0a
lea ecx, [esp + 0x20]
push ecx
call fcn.005504ec
add esp, 4
mov dword [ebx], eax
mov eax, 1
mov ecx, dword [esp + 0x84]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x84
ret 8

Function at 0x507e30
Capabilities:
Set registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x593178
push eax
mov dword fs:[0], esp
push esi
mov esi, ecx
mov eax, dword [esi + 4]
test eax, eax
je 0x507eb1
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x14]
push eax
push ecx
mov ecx, esi
call fcn.00508770
mov eax, dword [eax]
add esi, 0x14
push 0
push 0
push eax
mov ecx, esi
mov dword [esp + 0x18], 0
call fcn.004a22d0
lea ecx, [esp + 0x14]
mov dword [esp + 0xc], 0xffffffff
call fcn.0056870c
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 0xc]
push edx
push eax
mov ecx, esi
call fcn.004a16c0
and eax, 0xff
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
pop esi
add esp, 0xc
ret 8
mov eax, dword [esi + 0x50]
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x18]
push 4
push ecx
mov ecx, dword [esi + eax*4 + 0x50]
push 4
push 0
push edx
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov ecx, dword [esp + 4]
pop esi
neg eax
sbb eax, eax
mov dword fs:[0], ecx
inc eax
add esp, 0xc
ret 8
Function at 0x507ef0
Capabilities:
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x5931a8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
push edi
cmp dword [esi + 4], ebp
je 0x507ff7
cmp dword [esi + 8], ebp
je 0x507ff3
cmp dword [esp + 0x30], ebp
je 0x507f69
lea eax, [esp + 0x24]
lea ecx, [esi + 0x14]
push eax
call fcn.00486660
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
push ecx
push edx
push eax
mov dword [esp + 0x28], ebp
call fcn.0043a0b0
add esp, 0xc
lea ecx, [esp + 0x24]
mov dword [esp + 0x1c], 0xffffffff
call fcn.0056870c
mov eax, 1
jmp 0x508047
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x24]
push ecx
push edx
mov ecx, esi
call fcn.00508770
mov eax, dword [eax]
add esi, 0x14
push eax
mov ecx, esi
mov dword [esp + 0x20], 1
call fcn.0049efd0
or edi, 0xffffffff
lea ecx, [esp + 0x24]
mov bl, al
mov dword [esp + 0x1c], edi
call fcn.0056870c
test bl, bl
je 0x507ff3
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.00486660
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
push ecx
push edx
push eax
mov dword [esp + 0x28], 2
call fcn.0043a0b0
add esp, 0xc
lea ecx, [esp + 0x30]
mov dword [esi + 0xc], ebp
mov dword [esi + 0x10], ebp
mov dword [esi + 0x20], ebp
mov dword [esi + 0x24], ebp
mov dword [esi + 0x1c], ebp
mov dword [esp + 0x1c], edi
call fcn.0056870c
mov eax, 1
jmp 0x508047
xor eax, eax
jmp 0x508047
mov edi, dword [esp + 0x28]
mov eax, dword [esi + 0x50]
mov ebx, dword [esp + 0x24]
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x14]
push edi
mov dword [esp + 0x18], 1
mov ecx, dword [esi + eax*4 + 0x50]
push edx
push ebp
push ebx
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x50802d
mov eax, 1
jmp 0x508047
mov eax, dword [esi + 0x50]
lea edx, [esp + 0x2c]
push edx
push edi
mov ecx, dword [esi + eax*4 + 0x50]
push ebx
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
neg eax
sbb eax, eax
inc eax
mov ecx, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x10
ret 0x10
Function at 0x508060
Capabilities:
Set registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5931c8
push eax
mov dword fs:[0], esp
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 4]
test eax, eax
je 0x508143
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x5080f1
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x18]
push eax
push ecx
mov ecx, esi
call fcn.00508770
mov eax, dword [eax]
add esi, 0x14
push 0
push 0
push eax
mov ecx, esi
mov dword [esp + 0x1c], 0
call fcn.004a22d0
lea ecx, [esp + 0x18]
mov dword [esp + 0x10], 0xffffffff
call fcn.0056870c
mov edx, dword [esp + 0x1c]
mov eax, dword [esi + 0xc]
push 0
push edx
push eax
mov ecx, esi
call fcn.004a1700
and eax, 0xff
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
pop edi
pop esi
add esp, 0xc
ret 0xc
add esi, 0x14
push 0
push 0
push str.Item
mov ecx, esi
call fcn.004a22d0
mov ecx, dword [esp + 0x18]
mov edx, dword [esi + 0xc]
push ecx
push 0x5f3674
push edx
mov ecx, esi
call fcn.004a1160
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0xc]
push 0
push eax
push ecx
mov ecx, esi
call fcn.004a1700
and eax, 0xff
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
pop edi
pop esi
add esp, 0xc
ret 0xc
mov edx, dword [esp + 0x1c]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push edx
mov edx, dword [esp + 0x20]
push 1
push eax
mov eax, dword [esi + 0x50]
push edx
mov ecx, dword [esi + eax*4 + 0x50]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov ecx, dword [esp + 8]
pop edi
neg eax
sbb eax, eax
mov dword fs:[0], ecx
inc eax
pop esi
add esp, 0xc
ret 0xc
Function at 0x508190
Capabilities:
Access peb ldr_data
Query or enumerate registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5931e8
push eax
mov dword fs:[0], esp
push ebx
push esi
mov esi, ecx
push edi
xor edi, edi
cmp dword [esi + 4], edi
je 0x50826d
cmp dword [esi + 8], edi
je 0x508257
cmp dword [esp + 0x28], edi
je 0x5081ea
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push eax
push ecx
lea ecx, [esi + 0x14]
call fcn.004a2ca0
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add esp, 0xc
ret 0x10
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x1c]
push edx
push eax
mov ecx, esi
call fcn.00508770
mov eax, dword [eax]
add esi, 0x14
push eax
mov ecx, esi
mov dword [esp + 0x18], edi
call fcn.0049efd0
lea ecx, [esp + 0x1c]
mov bl, al
mov dword [esp + 0x14], 0xffffffff
call fcn.0056870c
test bl, bl
je 0x508257
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
push ecx
push edx
mov ecx, esi
call fcn.004a2ca0
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], edi
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], edi
mov dword [esi + 0x1c], edi
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add esp, 0xc
ret 0x10
xor eax, eax
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add esp, 0xc
ret 0x10
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x20]
push ecx
mov ecx, dword [esi + 0x50]
lea edx, [esp + 0x30]
mov dword [esp + 0x30], 3
push edx
mov edx, dword [esi + ecx*4 + 0x50]
push edi
push eax
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ecx, dword [esp + 0xc]
pop edi
neg eax
sbb eax, eax
pop esi
inc eax
mov dword fs:[0], ecx
pop ebx
add esp, 0xc
ret 0x10
Function at 0x5082c0
Capabilities:
Set registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x593208
push eax
mov dword fs:[0], esp
push esi
mov esi, ecx
mov eax, dword [esi + 4]
test eax, eax
je 0x50839e
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x50834e
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x14]
push eax
push ecx
mov ecx, esi
call fcn.00508770
mov eax, dword [eax]
add esi, 0x14
push 0
push 0
push eax
mov ecx, esi
mov dword [esp + 0x18], 0
call fcn.004a22d0
lea ecx, [esp + 0x14]
mov dword [esp + 0xc], 0xffffffff
call fcn.0056870c
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push edx
push eax
mov ecx, esi
call fcn.004a2e60
and eax, 0xff
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
pop esi
add esp, 0xc
ret 0x10
add esi, 0x14
push 0
push 0
push str.Item
mov ecx, esi
call fcn.004a22d0
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 0xc]
push ecx
push 0x5f3674
push edx
mov ecx, esi
call fcn.004a1160
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push eax
push ecx
mov ecx, esi
call fcn.004a2e60
and eax, 0xff
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
pop esi
add esp, 0xc
ret 0x10
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esi + 0x50]
push eax
push 3
push 0
mov eax, dword [esi + edx*4 + 0x50]
push ecx
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov ecx, dword [esp + 4]
pop esi
neg eax
sbb eax, eax
mov dword fs:[0], ecx
inc eax
add esp, 0xc
ret 0x10

Function at 0x508440
Capabilities:
Query or enumerate registry key

Disassembly:
push 0xffffffffffffffff
push 0x593230
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, dword [ecx + 4]
test eax, eax
je 0x508515
mov eax, dword [ecx + 8]
test eax, eax
je 0x508502
push esi
lea esi, [ecx + 0x14]
push edi
push str.Item
mov ecx, esi
call fcn.0049efd0
and eax, 0xff
mov edi, eax
je 0x5084ed
mov eax, dword [0x5f9f88]
mov dword [esp + 0x1c], eax
lea ecx, [esp + 8]
push 0x5f3674
push ecx
mov ecx, esi
mov dword [esp + 0x1c], 0
call fcn.0044fea0
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x18], 1
call fcn.00568845
lea ecx, [esp + 8]
mov byte [esp + 0x14], 0
call fcn.0056870c
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
push edx
push eax
push ecx
call fcn.0043a0b0
add esp, 0xc
lea ecx, [esp + 0x1c]
mov dword [esp + 0x14], 0xffffffff
call fcn.0056870c
mov eax, edi
pop edi
pop esi
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
add esp, 0x10
ret 0xc
xor eax, eax
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
add esp, 0x10
ret 0xc
mov eax, dword [esp + 0x18]
push 0
push 0
push 0
lea edx, [esp + 0x28]
push 0
push edx
mov edx, dword [esp + 0x28]
push eax
mov eax, dword [ecx + 0x50]
push edx
mov ecx, dword [ecx + eax*4 + 0x50]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
mov ecx, dword [esp + 4]
neg eax
sbb eax, eax
mov dword fs:[0], ecx
inc eax
add esp, 0x10
ret 0xc
Function at 0x508550
Capabilities:
Query or enumerate registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x593250
push eax
mov dword fs:[0], esp
mov eax, dword [ecx + 4]
push esi
push edi
test eax, eax
je 0x508626
mov eax, dword [ecx + 8]
test eax, eax
je 0x508611
lea esi, [ecx + 0x14]
push str.Item
mov ecx, esi
call fcn.0049efd0
and eax, 0xff
mov edi, eax
je 0x5085fc
mov eax, dword [0x5f9f88]
mov dword [esp + 0x24], eax
lea ecx, [esp + 0x18]
push 0x5f3674
push ecx
mov ecx, esi
mov dword [esp + 0x18], 0
call fcn.0044fea0
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x14], 1
call fcn.00568845
lea ecx, [esp + 0x18]
mov byte [esp + 0x10], 0
call fcn.0056870c
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call fcn.0043a0b0
add esp, 0xc
lea ecx, [esp + 0x24]
mov dword [esp + 0x10], 0xffffffff
call fcn.0056870c
mov eax, edi
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
pop edi
pop esi
add esp, 0xc
ret 0x10
xor eax, eax
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
pop edi
pop esi
add esp, 0xc
ret 0x10
mov edx, dword [esp + 0x24]
push 0
push 0
push edx
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x2c]
push 0
push eax
mov eax, dword [esp + 0x2c]
push edx
mov edx, dword [ecx + 0x50]
push eax
mov eax, dword [ecx + edx*4 + 0x50]
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
mov ecx, dword [esp + 8]
pop edi
neg eax
sbb eax, eax
mov dword fs:[0], ecx
inc eax
pop esi
add esp, 0xc
ret 0x10
Function at 0x514240
Capabilities:
Get file size
Read file via mapping

Disassembly:
push ecx
push ebx
mov eax, dword [esp + 0xc]
push ebp
push esi
push edi
push 0
push 0x80
push 3
push 0
push 3
mov edi, ecx
push SysReAllocStringLen
push eax
mov dword [esp + 0x2c], edi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, dword [esp + 0x1c]
cmp eax, 0xffffffff
mov dword [esi + 0x44], eax
je 0x514347
lea ecx, [esp + 0x18]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ecx, dword [esp + 0x18]
xor edx, edx
mov ebx, ecx
xor ebp, ebp
or edx, eax
or ebx, ebp
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], ebx
mov edx, dword [esi + 0x20]
or edx, ebx
jne 0x5142ac
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
pop ecx
ret 8
push 0
push eax
mov eax, dword [esi + 0x44]
push ecx
push 2
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov ebx, eax
mov ebp, dword [esi + 0x24]
mov dword [esi + 0x48], ebx
mov edi, dword [edi + 0x74]
mov ecx, dword [esi + 0x20]
mov eax, dword [edi + 0x5340]
cdq
cmp ebp, edx
jl 0x5142e3
jg 0x5142dd
cmp ecx, eax
jbe 0x5142e3
mov dword [esp + 0x1c], eax
jmp 0x5142e7
mov dword [esp + 0x1c], ecx
mov ecx, dword [esi + 0x2c]
mov ebp, dword [esi + 0x28]
mov dword [esp + 0x18], ecx
mov edi, dword [edi + 0x5340]
mov edx, ecx
mov eax, edi
sar edx, 0x1f
cdq
push edx
push eax
push ecx
push ebp
call fcn.00550f70
imul eax, edi
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push ecx
push eax
push edx
push 4
push ebx
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
test eax, eax
mov dword [esi + 0x40], eax
je 0x514347
push 1
push eax
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
je 0x514347
mov ecx, dword [esp + 0x10]
push esi
call fcn.00514360
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 8
mov ecx, dword [esi + 0x40]
xor eax, eax
pop edi
pop esi
test ecx, ecx
pop ebp
pop ebx
setne al
pop ecx
ret 8
Function at 0x5147c0
Capabilities:
Check for time delay via gettickcount
Read and send data from client to server
Read file via mapping
Send data
Send data on socket

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1c]
mov edx, ecx
push edi
test esi, esi
mov dword [esp + 0x10], edx
je 0x51486e
cmp dword [esi + 0x44], 0xffffffff
je 0x51486e
mov ecx, dword [esi + 0x28]
mov ebp, dword [esi + 0x20]
mov eax, dword [esi + 0x2c]
mov ebx, dword [esi + 0x24]
sub ebp, ecx
mov dword [esp + 0x20], 0
sbb ebx, eax
mov eax, dword [edx + 0x74]
mov edi, dword [eax + 0x5344]
mov eax, edi
cdq
push edx
push eax
mov eax, dword [esi + 0x2c]
push eax
push ecx
call fcn.00551240
sub edi, eax
test ebx, ebx
jl 0x51487a
jg 0x51481f
test ebp, ebp
jbe 0x51487a
mov eax, edi
cdq
cmp ebx, edx
jl 0x514834
jg 0x51482c
cmp ebp, eax
jbe 0x514834
mov ebp, eax
mov dword [esp + 0x18], edx
jmp 0x514838
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x10]
push 0
push ebp
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0x5340]
cdq
push edx
push eax
mov eax, dword [esi + 0x2c]
push eax
mov eax, dword [esi + 0x28]
push eax
call fcn.00551240
mov ebp, dword [esi + 0x40]
mov ecx, dword [esi + 8]
add eax, ebp
mov edx, dword [ecx + 8]
push eax
push edx
call sub.WSOCK32.dll_send
test eax, eax
jge 0x51487e
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xc
ret 4
mov eax, dword [esp + 0x20]
mov edi, dword [esi + 0x28]
cdq
add edi, eax
mov eax, dword [esi + 0x20]
mov dword [esi + 0x28], edi
mov ecx, dword [esi + 0x2c]
adc ecx, edx
mov dword [esi + 0x2c], ecx
mov ecx, dword [esi + 0x28]
mov edi, dword [esi + 0x2c]
cmp ecx, eax
jne 0x5148b8
cmp edi, dword [esi + 0x24]
jne 0x5148b8
mov edx, dword [esi + 0x18]
mov ebp, dword [esp + 0x10]
xor eax, eax
cmp edx, 0x62
setne al
add eax, 7
mov dword [esi + 0x58], eax
jmp 0x514927
mov ebp, dword [esp + 0x10]
mov edx, dword [ebp + 0x74]
mov eax, dword [edx + 0x5340]
cdq
push edx
push eax
push edi
push ecx
call fcn.00551240
or eax, edx
jne 0x514927
mov eax, dword [esi + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov eax, dword [esi + 0x28]
mov edi, dword [esi + 0x20]
mov edx, dword [ebp + 0x74]
mov ebx, dword [esi + 0x2c]
mov ecx, dword [esi + 0x24]
sub edi, eax
mov eax, dword [edx + 0x5340]
cdq
sbb ecx, ebx
cmp ecx, edx
jl 0x514907
jg 0x514901
cmp edi, eax
jbe 0x514907
mov dword [esp + 0x18], edx
jmp 0x51490d
mov eax, edi
mov dword [esp + 0x18], ecx
mov edx, dword [esi + 0x48]
push eax
mov eax, dword [esi + 0x28]
mov ecx, ebx
push eax
push ebx
push 4
push edx
sar ecx, 0x1f
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov dword [esi + 0x40], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esi + 8]
mov edx, eax
sub edx, dword [ecx + 0x20]
cmp edx, 0x3e8
jb 0x514952
mov dword [ecx + 0x20], eax
mov eax, dword [ebp + 0x1c]
push 0
push esi
push 0x471
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xc
ret 4
Function at 0x52bcd0
Capabilities:
Capture microphone audio

Disassembly:
sub esp, 0x14
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0x28]
test eax, eax
je 0x52bce6
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret
mov di, word [esi + 0xc]
mov cx, word [esi + 4]
mov eax, edi
mov word [esp + 0xa], cx
and eax, 0xffff
and ecx, 0xffff
imul eax, ecx
mov edx, dword [esi + 8]
mov ecx, eax
imul ecx, edx
mov dword [esp + 0xc], edx
push 1
cdq
and edx, 7
push 0
add eax, edx
lea edx, [esp + 0x10]
push 0
push edx
shr ecx, 3
sar eax, 3
mov word [esp + 0x26], di
mov edi, dword [sym.imp.WINMM.dll_waveInOpen]
push 0xffffffffffffffff
push 0
mov word [esp + 0x20], 1
mov dword [esp + 0x28], ecx
mov word [esp + 0x2c], ax
mov word [esp + 0x30], 0
call edi
test eax, eax
mov dword [esi + 0x14], eax
je 0x52bd5d
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret
mov eax, dword [0x5ff268]
mov ecx, dword [esi + 0x18]
push 0x20000
push eax
lea edx, [esp + 0x10]
push ecx
push edx
lea eax, [esi + 0x10]
push 0xffffffffffffffff
push eax
call edi
test eax, eax
mov dword [esi + 0x14], eax
je 0x52bd88
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret
mov dword [esi + 0x28], 1
pop edi
mov eax, 1
pop esi
add esp, 0x14
ret

Function at 0x52bda0
Capabilities:
Create thread

Disassembly:
push esi
mov esi, ecx
mov eax, dword [esi + 0x24]
test eax, eax
je 0x52bdba
call fcn.0052bdf0
mov eax, dword [esi + 0x24]
test eax, eax
je 0x52bdba
xor eax, eax
pop esi
ret
lea eax, [esi + 0x18]
push eax
push 0
push esi
push 0x52bb40
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
mov dword [esi + 0x1c], eax
jne 0x52bdd9
pop esi
ret
mov eax, 1
mov dword [esi + 0x24], eax
pop esi
ret

Function at 0x52bdf0
Capabilities:
Terminate thread

Disassembly:
push ecx
push esi
mov esi, ecx
mov eax, dword [esi + 0x24]
test eax, eax
jne 0x52be00
xor eax, eax
pop esi
pop ecx
ret
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x52be5d
mov eax, dword [esi + 0x18]
push ebx
push ebp
push edi
push 0
push 0
push 0x12
push eax
mov edi, 0x32
call dword [sym.imp.USER32.dll_PostThreadMessageA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
mov edx, dword [esi + 0x1c]
lea ecx, [esp + 0x10]
push ecx
push edx
call ebx
cmp dword [esp + 0x10], 0x103
jne 0x52be53
push 0xa
call ebp
dec edi
jne 0x52be2b
mov eax, dword [esi + 0x1c]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
pop edi
pop ebp
mov dword [esi + 0x1c], 0
pop ebx
mov dword [esi + 0x24], 0
mov eax, 1
pop esi
pop ecx
ret
Function at 0x52bf10
Capabilities:
Capture microphone audio

Disassembly:
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x52bf24
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
mov eax, dword [esi + 0x10]
push eax
call dword [sym.imp.WINMM.dll_waveInReset]
test eax, eax
mov dword [esi + 0x14], eax
je 0x52bf3c
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
push 0x140
call fcn.00567b03
mov ebp, dword [sym.imp.WINMM.dll_waveInPrepareHeader]
add esp, 4
mov dword [esi + 0x20], eax
xor ebx, ebx
mov edi, dword [esi + 0x20]
mov ecx, 8
xor eax, eax
add edi, ebx
rep stosd dword es:[edi], eax
push 0x3c0
call fcn.00567b03
mov ecx, dword [esi + 0x20]
add esp, 4
mov dword [ecx + ebx], eax
mov edx, dword [esi + 0x20]
push 0x20
mov dword [edx + ebx + 4], 0x3c0
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x10]
add eax, ebx
push eax
push ecx
call ebp
test eax, eax
mov dword [esi + 0x14], eax
jne 0x52bf35
mov edx, dword [esi + 0x20]
mov eax, dword [esi + 0x10]
add edx, ebx
push 0x20
push edx
push eax
call dword [sym.imp.WINMM.dll_waveInAddBuffer]
test eax, eax
mov dword [esi + 0x14], eax
jne 0x52bf35
add ebx, 0x20
cmp ebx, 0x140
jb 0x52bf54
mov eax, 1
pop edi
mov dword [esi + 0x2c], eax
pop esi
pop ebp
pop ebx
ret

Function at 0x52c2e0
Capabilities:
Create thread

Disassembly:
push esi
mov esi, ecx
mov eax, dword [esi + 0x44]
test eax, eax
je 0x52c2fa
call fcn.0052c330
mov eax, dword [esi + 0x44]
test eax, eax
je 0x52c2fa
xor eax, eax
pop esi
ret
lea eax, [esi + 0x1c]
push eax
push 0
push esi
push 0x52c190
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
mov dword [esi + 0x18], eax
jne 0x52c319
pop esi
ret
mov eax, 1
mov dword [esi + 0x44], eax
pop esi
ret

Function at 0x52c330
Capabilities:
Terminate thread

Disassembly:
push ecx
push esi
mov esi, ecx
mov eax, dword [esi + 0x44]
test eax, eax
jne 0x52c340
xor eax, eax
pop esi
pop ecx
ret
mov eax, dword [esi + 0x18]
test eax, eax
je 0x52c39d
mov eax, dword [esi + 0x1c]
push ebx
push ebp
push edi
push 0
push 0
push 0x12
push eax
mov edi, 0x32
call dword [sym.imp.USER32.dll_PostThreadMessageA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
mov edx, dword [esi + 0x18]
lea ecx, [esp + 0x10]
push ecx
push edx
call ebx
cmp dword [esp + 0x10], 0x103
jne 0x52c393
push 0xa
call ebp
dec edi
jne 0x52c36b
mov eax, dword [esi + 0x18]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
pop edi
pop ebp
mov dword [esi + 0x18], 0
pop ebx
mov dword [esi + 0x44], 0
mov eax, 1
pop esi
pop ecx
ret
Function at 0x5307d0
Capabilities:
Check for software breakpoints

Disassembly:
push esi
mov esi, dword [esp + 8]
cmp dword [esi + 0x10], 0xca
jne 0x530803
push esi
call fcn.00534ae0
mov eax, dword [esi + 0x40]
add esp, 4
test eax, eax
je 0x5307fc
mov dword [esi + 0x10], 0xcf
mov eax, 1
pop esi
ret
mov dword [esi + 0x10], 0xcb
mov eax, dword [esi + 0x10]
cmp eax, 0xcb
jne 0x530889
mov eax, dword [esi + 0x1b0]
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x530872
mov eax, dword [esi + 8]
test eax, eax
je 0x530827
push esi
call dword [eax]
add esp, 4
mov ecx, dword [esi + 0x1b0]
push esi
call dword [ecx]
add esp, 4
test eax, eax
je 0x53086e
cmp eax, 2
je 0x530872
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x53081a
cmp eax, 3
je 0x53084d
cmp eax, 1
jne 0x53081a
mov eax, dword [ecx + 4]
inc eax
mov dword [ecx + 4], eax
mov eax, dword [esi + 8]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
cmp edx, ecx
jl 0x53081a
mov edx, dword [esi + 0x13c]
add edx, ecx
mov dword [eax + 8], edx
jmp 0x53081a
xor eax, eax
pop esi
ret
mov eax, dword [esi + 0x90]
push esi
mov dword [esi + 0x98], eax
call fcn.005308c0
add esp, 4
pop esi
ret
cmp eax, 0xcc
je 0x5308a9
mov ecx, dword [esi]
push esi
mov dword [ecx + 0x14], 0x12
mov edx, dword [esi]
mov eax, dword [esi + 0x10]
mov dword [edx + 0x18], eax
mov ecx, dword [esi]
call dword [ecx]
add esp, 4
push esi
call fcn.005308c0
add esp, 4
pop esi
ret