joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10056430
Capabilities:
Write file on windows

Disassembly:
push esi
mov esi, ecx
mov ecx, 0x100e11d2
push edi
call fcn.10063695
mov ecx, dword [esi]
test ecx, ecx
je 0x10056476
mov eax, dword [esp + 0xc]
test eax, eax
je 0x10056476
mov ecx, dword [ecx]
cmp ecx, 0xffffffff
je 0x10056476
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
push 0
push esi
push edi
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x10056476
cmp edi, dword [esi]
jne 0x10056476
pop edi
mov al, 1
pop esi
ret 0xc
pop edi
xor al, al
pop esi
ret 0xc

Function at 0x100564f0
Capabilities:
Get file size

Disassembly:
sub esp, 8
mov eax, dword [0x100d9008]
xor eax, esp
mov dword [esp + 4], eax
push esi
mov esi, ecx
mov ecx, 0x100e11d2
push edi
mov edi, dword [esp + 0x14]
call fcn.10063695
mov eax, dword [esi]
test eax, eax
je 0x1005655f
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x1005655f
lea ecx, [esp + 8]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp esi, 0xffffffff
jne 0x1005653a
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1005655f
mov eax, dword [esp + 8]
xor ecx, ecx
add ecx, esi
mov dword [edi], ecx
adc eax, 0
mov dword [edi + 4], eax
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 4]
xor ecx, esp
call fcn.1006161e
add esp, 8
ret 4
mov ecx, dword [esp + 0xc]
xor al, al
pop edi
pop esi
xor ecx, esp
call fcn.1006161e
add esp, 8
ret 4

Function at 0x10056650
Capabilities:
Clear file content

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
push esi
mov esi, ecx
mov ecx, 0x100e11d2
push edi
call fcn.10063695
cmp dword [esi], 0
je 0x1005670a
lea eax, [esp + 0x18]
xorps xmm0, xmm0
push eax
push 1
push 0
push 0
mov ecx, esi
movlpd qword [esp + 0x28], xmm0
call fcn.10056580
test al, al
je 0x1005670a
mov edi, dword [ebp + 0xc]
lea eax, [esp + 0x10]
push eax
push 0
push edi
push dword [ebp + 8]
xorps xmm0, xmm0
mov ecx, esi
movlpd qword [esp + 0x20], xmm0
call fcn.10056580
test al, al
je 0x1005670a
mov eax, dword [ebp + 8]
xor bl, bl
cmp dword [esp + 0x10], eax
jne 0x100566e0
cmp dword [esp + 0x14], edi
jne 0x100566e0
mov eax, dword [esi]
test eax, eax
jne 0x100566cd
xor bl, bl
jmp 0x100566e0
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x100566c9
push eax
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
setne bl
lea eax, [esp + 0x10]
xorps xmm0, xmm0
push eax
push 0
push dword [esp + 0x24]
mov ecx, esi
movlpd qword [esp + 0x1c], xmm0
push dword [esp + 0x24]
call fcn.10056580
mov al, bl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x10056750
Capabilities:
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1008319f
mov eax, dword fs:[0]
push eax
sub esp, 0x24
mov eax, dword [0x100d9008]
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
mov esi, edx
mov edi, ecx
mov ecx, 0x100e11d2
call fcn.10063695
cmp esi, 0xffffffff
jne 0x10056792
xor al, al
jmp 0x10056809
and esi, 0xffffb1af
mov eax, edi
cmp dword [edi + 0x14], 8
jb 0x100567a2
mov eax, dword [edi]
mov ebx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push esi
push eax
call ebx
test eax, eax
je 0x100567b4
mov al, 1
jmp 0x10056809
lea ecx, [ebp - 0x28]
call fcn.10016820
mov dword [ebp - 4], 0
lea edx, [ebp - 0x28]
mov ecx, edi
call fcn.10056dd0
test al, al
je 0x100567e8
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
push esi
cmovae eax, dword [ebp - 0x28]
push eax
call ebx
test eax, eax
je 0x100567e8
mov bl, 1
jmp 0x100567ea
xor bl, bl
mov dword [ebp - 4], 5
lea ecx, [ebp - 0x28]
call fcn.1000f080
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 4], 0xffffffff
mov al, bl
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.1006161e
mov esp, ebp
pop ebp
ret

Function at 0x10056830
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10083206
mov eax, dword fs:[0]
push eax
sub esp, 0x20
mov eax, dword [0x100d9008]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ecx, 0x100e11d2
call fcn.10063695
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x10056870
mov eax, dword [edi]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x100568f4
mov dword [ebp - 4], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 4], 3
xor eax, eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
mov dword [ebp - 4], 4
lea edx, [ebp - 0x28]
mov ecx, edi
call fcn.10056dd0
test al, al
je 0x100568d7
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, eax
mov dword [ebp - 4], 5
lea ecx, [ebp - 0x28]
call fcn.1000f080
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 4], 0xffffffff
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1006161e
mov esp, ebp
pop ebp
ret
Function at 0x10056a40
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1008330c
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
mov eax, dword [0x100d9008]
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
mov esi, ecx
mov ecx, 0x100e11d2
call fcn.10063695
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10056a81
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push eax
call edi
test eax, eax
je 0x10056a95
mov al, 1
jmp 0x10056bcf
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10056a9f
mov eax, dword [esi]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000ee00
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x28]
call fcn.10056830
mov ebx, eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x28]
call fcn.1000f080
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
cmp ebx, 0xffffffff
jne 0x10056ae8
xor al, al
jmp 0x10056bcf
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10056af2
mov eax, dword [esi]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000ee00
mov dword [ebp - 4], 5
xor edx, edx
lea ecx, [ebp - 0x28]
call fcn.10056750
mov bl, al
mov dword [ebp - 4], 6
lea ecx, [ebp - 0x28]
call fcn.1000f080
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
test bl, bl
je 0x10056ae1
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10056b3c
mov eax, dword [esi]
push eax
call edi
test eax, eax
jne 0x10056a8e
lea ecx, [ebp - 0x28]
call fcn.10016820
mov dword [ebp - 4], 0xa
lea edx, [ebp - 0x28]
mov ecx, esi
call fcn.10056dd0
test al, al
je 0x10056b7a
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
call edi
test eax, eax
je 0x10056b7a
mov bl, 1
jmp 0x10056bb0
cmp dword [esi + 0x14], 8
jb 0x10056b82
mov esi, dword [esi]
push esi
lea ecx, [ebp - 0x48]
call fcn.1000ee00
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x48]
mov edx, dword [ebp - 0x30]
call fcn.10056750
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x48]
call fcn.1000f080
mov byte [ebp - 4], 0xa
mov byte [ebp - 4], 0xa
xor bl, bl
mov dword [ebp - 4], 0x14
lea ecx, [ebp - 0x28]
call fcn.1000f080
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 4], 0xffffffff
mov al, bl
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.1006161e
mov esp, ebp
pop ebp
ret
Function at 0x1005b7a0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0xc
mov eax, dword [0x100d9008]
xor eax, esp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
push ebx
push ebp
push esi
mov ebp, ecx
mov dword [esp + 0xc], eax
push edi
mov edi, dword [esp + 0x20]
mov ecx, 0x100e11d2
call fcn.10063695
mov esi, dword [esp + 0x24]
xor ebx, ebx
cmp dword [ebp + 0x10], 0xffffffff
je 0x1005b822
mov ecx, 0x100000
nop dword [eax + eax]
cmp esi, 0x100000
mov dword [esp + 0x14], 0
push 0
mov eax, esi
cmova eax, ecx
lea ecx, [esp + 0x18]
push ecx
push eax
push edi
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ecx, dword [esp + 0x14]
add ebx, ecx
test eax, eax
je 0x1005b822
test ecx, ecx
je 0x1005b81e
add edi, ecx
sub esi, ecx
mov ecx, 0x100000
jne 0x1005b7e0
xor eax, eax
jmp 0x1005b827
mov eax, 1
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x1005b831
mov dword [ecx], ebx
mov ecx, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1006161e
add esp, 0xc
ret 0xc

Function at 0x1005eee0
Capabilities:
Get file size

Disassembly:
sub esp, 8
mov eax, dword [0x100d9008]
xor eax, esp
mov dword [esp + 4], eax
push esi
mov esi, ecx
mov ecx, 0x100e11d2
push edi
mov edi, dword [esp + 0x14]
call fcn.10063695
mov eax, dword [esi]
cmp eax, 0xffffffff
je 0x1005ef51
lea ecx, [esp + 8]
mov dword [esp + 8], 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp esi, 0xffffffff
jne 0x1005ef2c
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1005ef51
mov eax, dword [esp + 8]
xor ecx, ecx
add ecx, esi
mov dword [edi], ecx
adc eax, 0
mov dword [edi + 4], eax
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 4]
xor ecx, esp
call fcn.1006161e
add esp, 8
ret 4
mov ecx, dword [esp + 0xc]
xor al, al
pop edi
pop esi
xor ecx, esp
call fcn.1006161e
add esp, 8
ret 4
Function at 0x10060f00
Capabilities:
Get file size
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100856b8
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
mov eax, dword [0x100d9008]
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
mov edi, ecx
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 0x24], ecx
mov ecx, 0x100e11d2
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x2c], ebx
call fcn.10063695
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x10060f56
mov dword [eax], 0
mov dword [ebx], 0
cmp dword [edi], 0xffffffff
je 0x100610ab
mov eax, dword [ebp + 0xc]
mov ecx, 0x100000
nop dword [eax]
push 0
mov ebx, eax
mov dword [ebp - 0x1c], 0
cmp eax, 0x100000
lea eax, [ebp - 0x1c]
push eax
cmova ebx, ecx
push ebx
push esi
push dword [edi]
call dword [sym.imp.KERNEL32.dll_WriteFile]
neg eax
sbb eax, eax
and eax, 0x7fffbffb
add eax, 0x80004005
cmp dword [edi + 0x1c], 0
je 0x10061076
test eax, eax
je 0x10061076
mov edx, dword [ebp - 0x1c]
cmp edx, ebx
jae 0x10061079
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [edi]
mov dword [ebp - 0x28], eax
cmp ecx, 0xffffffff
je 0x10060ffb
lea eax, [ebp - 0x14]
mov dword [ebp - 0x14], 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp esi, 0xffffffff
jne 0x10060fef
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x10060ffb
mov eax, dword [ebp - 0x14]
xor ecx, ecx
add ecx, esi
adc eax, 0
jmp 0x10061009
xorps xmm0, xmm0
movlpd qword [ebp - 0x38], xmm0
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x38]
push 0
push dword [ebp - 0x28]
push eax
push ecx
sub esp, 0x18
lea eax, [edi + 4]
mov ecx, esp
mov dword [ebp - 0x28], esp
push eax
call fcn.10010ef0
mov dword [ebp - 4], 0
mov ecx, dword [edi + 0x1c]
mov eax, dword [ecx]
mov dword [ebp - 4], 0xffffffff
call dword [eax + 0x18]
mov esi, dword [ebp - 0x20]
test eax, eax
jne 0x10061076
push eax
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x1c]
push ebx
add eax, esi
push eax
push dword [edi]
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, eax
xor edx, edx
test ecx, ecx
mov eax, 0x80004005
cmovne eax, edx
mov edx, dword [ebp - 0x1c]
add edx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
test ecx, ecx
je 0x10060fb4
jmp 0x10061079
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x2c]
add dword [ecx], edx
test eax, eax
jne 0x100610a2
test edx, edx
je 0x1006109e
mov eax, dword [ebp + 0xc]
add esi, edx
sub eax, edx
mov dword [ebp - 0x20], esi
mov dword [ebp + 0xc], eax
mov ecx, 0x100000
jne 0x10060f70
mov al, 1
jmp 0x100610ad
mov ecx, dword [ebp - 0x24]
test ecx, ecx
je 0x100610ab
mov dword [ecx], eax
xor al, al
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.1006161e
mov esp, ebp
pop ebp
ret 0x10
Function at 0x40f197
Capabilities:
Link many functions at runtime
Print debug messages

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [0x419794]
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
xor esi, esi
mov eax, dword [ebp + 0xc]
push esi
mov dword [ebp - 0x20], eax
call ebx
mov edi, eax
mov dword [ebp - 0x18], edi
call fcn.0040a16b
mov dword [ebp - 0x14], eax
cmp dword [0x4ad81c], esi
jne 0x40f28a
push 0x800
push esi
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
test edi, edi
jne 0x40f217
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x57
jne 0x40f36a
push esi
push esi
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
test edi, edi
je 0x40f36a
push str.MessageBoxW
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x40f36a
push eax
call ebx
push str.GetActiveWindow
push edi
mov dword [0x4ad81c], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
push str.GetLastActivePopup
push edi
mov dword [0x4ad820], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
push str.GetUserObjectInformationW
push edi
mov dword [0x4ad824], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
mov dword [0x4ad82c], eax
test eax, eax
je 0x40f287
push str.GetProcessWindowStation
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
mov dword [0x4ad828], eax
mov edi, dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
test eax, eax
je 0x40f2af
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x40f2a2
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
cmp dword [ebp - 0x14], esi
je 0x40f2c4
push 4
pop eax
jmp 0x40f36c
cmp dword [ebp - 0x14], esi
je 0x40f2c4
push dword [0x4ad81c]
call dword [sym.imp.KERNEL32.dll_DecodePointer]
push 3
jmp 0x40f2a9
mov eax, dword [0x4ad828]
mov ebx, dword [sym.imp.KERNEL32.dll_DecodePointer]
cmp eax, edi
je 0x40f322
cmp dword [0x4ad82c], edi
je 0x40f322
push eax
call ebx
push dword [0x4ad82c]
mov dword [ebp - 0x14], eax
call ebx
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
test ecx, ecx
je 0x40f322
test eax, eax
je 0x40f322
call ecx
test eax, eax
je 0x40f317
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 0x40f317
test byte [ebp - 8], 1
jne 0x40f322
mov edi, dword [ebp + 0x10]
or edi, 0x200000
jmp 0x40f352
mov eax, dword [0x4ad820]
cmp eax, edi
je 0x40f34f
push eax
call ebx
test eax, eax
je 0x40f34f
call eax
mov esi, eax
test esi, esi
je 0x40f34f
mov eax, dword [0x4ad824]
cmp eax, edi
je 0x40f34f
push eax
call ebx
test eax, eax
je 0x40f34f
push esi
call eax
mov esi, eax
mov edi, dword [ebp + 0x10]
push dword [0x4ad81c]
call ebx
test eax, eax
je 0x40f36a
push edi
push dword [ebp - 0x20]
push dword [ebp - 0x1c]
push esi
call eax
jmp 0x40f36c
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040482b
mov esp, ebp
pop ebp
ret
Function at 0x401200
Capabilities:
Print debug messages

Disassembly:
sub esp, 8
push ebx
push ebp
mov ebp, ecx
xor ebx, ebx
mov cl, byte [ebp + 0x194]
push esi
lea eax, [ebp + 0x194]
cmp cl, bl
mov dword [esp + 0xc], ebx
jne 0x401230
push str.CHighscores::Save____no_filename_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
pop esi
pop ebp
pop ebx
add esp, 8
ret
push 0x469080
push eax
call fcn.0042674e
mov esi, eax
add esp, 8
cmp esi, ebx
je 0x4012d2
push edi
lea edi, [ebp + 4]
push esi
push 1
lea eax, [edi + 8]
push 0x10
push eax
call fcn.00426624
push esi
push 1
push 4
push edi
call fcn.00426624
push esi
push 1
lea ecx, [edi + 4]
push 4
push ecx
call fcn.00426624
push esi
push 1
lea edx, [edi + 0x18]
push 0x10
push edx
call fcn.00426624
add esp, 0x40
mov ecx, ebp
push ebx
call fcn.00401190
mov dword [esp + 0x14], eax
push esi
push 1
lea eax, [esp + 0x1c]
push 4
push eax
call fcn.00426624
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
add esp, 0x10
sub eax, ecx
inc ebx
add edi, 0x28
cmp ebx, 0xa
mov dword [esp + 0x10], eax
jl 0x40124c
push esi
push 1
lea edx, [esp + 0x18]
push 4
push edx
call fcn.00426624
push esi
call fcn.004265ce
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret

Function at 0x4012e0
Capabilities:
Print debug messages

Disassembly:
sub esp, 0xc
push ebx
push esi
push edi
mov edi, ecx
mov dword [esp + 0x14], edi
xor ebx, ebx
mov byte [esp + 0xf], 1
call fcn.00401020
mov cl, byte [edi + 0x194]
lea eax, [edi + 0x194]
test cl, cl
jne 0x40131a
push str.CHighscores::Load____no_filename_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
pop edi
pop esi
pop ebx
add esp, 0xc
ret
push 0x4690c0
push eax
call fcn.0042674e
mov esi, eax
add esp, 8
test esi, esi
je 0x4013f5
push ebp
xor ebp, ebp
add edi, 4
push esi
push 1
lea eax, [edi + 8]
push 0x10
push eax
call fcn.00426761
push esi
push 1
push 4
push edi
call fcn.00426761
push esi
push 1
lea ecx, [edi + 4]
push 4
push ecx
call fcn.00426761
push esi
push 1
lea edx, [edi + 0x18]
push 0x10
push edx
call fcn.00426761
add esp, 0x40
lea eax, [esp + 0x14]
push esi
push 1
push 4
push eax
call fcn.00426761
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
add esp, 0x10
sub ebx, eax
push ebp
call fcn.00401190
cmp eax, dword [esp + 0x14]
je 0x4013a8
push str.HS_checksum_failure_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov byte [esp + 0x13], 0
inc ebp
add edi, 0x28
cmp ebp, 0xa
jl 0x401338
push esi
push 1
lea ecx, [esp + 0x1c]
push 4
push ecx
call fcn.00426761
mov eax, dword [esp + 0x24]
add esp, 0x10
cmp ebx, eax
pop ebp
je 0x4013db
push str.HS_checksum_failure_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
xor bl, bl
jmp 0x4013df
mov bl, byte [esp + 0xf]
push esi
call fcn.004265ce
add esp, 4
test bl, bl
jne 0x4013f5
mov ecx, dword [esp + 0x14]
call fcn.00401020
pop edi
pop esi
pop ebx
add esp, 0xc
ret
Function at 0x401400
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x64
push ebx
push ebp
push esi
push edi
mov ecx, 0x10
mov esi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
lea edi, [esp + 0x30]
push 0
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
call fcn.00426849
sar eax, 8
push 0
mov byte [esp + 0x18], al
call fcn.00426849
mov byte [esp + 0x19], al
mov eax, dword [esp + 0x84]
mov ecx, eax
mov byte [esp + 0x1b], al
mov eax, dword [esp + 0x88]
add esp, 8
sar ecx, 8
test eax, eax
mov byte [esp + 0x12], cl
mov esi, 4
jle 0x40149a
mov ebp, dword [esp + 0x84]
mov edx, dword [esp + 0x88]
sub edx, ebp
mov dword [esp + 0x7c], eax
mov eax, dword [edx + ebp]
test eax, eax
jle 0x40148c
mov edi, dword [ebp]
lea ecx, [eax*8 - 8]
mov ebx, edi
sar ebx, cl
inc esi
sub ecx, 8
dec eax
mov byte [esp + esi + 0xf], bl
jne 0x40147d
mov eax, dword [esp + 0x7c]
add ebp, 4
dec eax
mov dword [esp + 0x7c], eax
jne 0x40146c
xor ebx, ebx
xor ecx, ecx
test esi, esi
mov dl, 0x69
jle 0x4014bf
mov al, byte [esp + ecx + 0x10]
mov edi, eax
xor al, dl
and edi, 0xff
mov byte [esp + ecx + 0x10], al
add ebx, edi
inc ecx
cmp ecx, esi
mov dl, al
jl 0x4014a4
mov byte [esp + esi + 0x10], bl
inc esi
mov eax, esi
mov ecx, 3
cdq
idiv ecx
xor ebx, ebx
test edx, edx
je 0x4014d8
mov ebx, ecx
sub ebx, edx
test ebx, ebx
jle 0x4014f4
mov ecx, ebx
lea edi, [esp + esi + 0x10]
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
add esi, ebx
rep stosb byte es:[edi], al
mov eax, 0x55555556
xor edi, edi
imul esi
mov esi, dword [esp + 0x78]
mov eax, edx
shr eax, 0x1f
add edx, eax
test edx, edx
jle 0x401558
lea ebp, [esp + 0x11]
mov dword [esp + 0x7c], edx
xor eax, eax
xor ecx, ecx
mov al, byte [ebp - 1]
mov cl, byte [ebp]
shl eax, 8
add eax, ecx
xor edx, edx
mov dl, byte [ebp + 1]
mov ecx, 0x12
shl eax, 8
add eax, edx
mov edx, eax
sar edx, cl
sub ecx, 6
and edx, 0x3f
inc edi
cmp ecx, 0xfffffffa
mov dl, byte [esp + edx + 0x30]
mov byte [edi + esi - 1], dl
jg 0x401532
mov eax, dword [esp + 0x7c]
add ebp, 3
dec eax
mov dword [esp + 0x7c], eax
jne 0x401514
sub edi, ebx
mov byte [edi + esi], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret 0x14

Function at 0x401570
Capabilities:
Connect to http server
Create http request

Disassembly:
push esi
xor esi, esi
push esi
push esi
push esi
push 1
push str.InetURL_1.0
mov dword [ecx], 0xffffffff
call dword [sym.imp.WININET.dll_InternetOpenA]
test eax, eax
mov dword [0x474de4], eax
je 0x4015b5
push esi
push esi
push 3
push esi
push esi
push esi
push 0x46912c
push eax
call dword [sym.imp.WININET.dll_InternetConnectA]
test eax, eax
mov dword [0x474de0], eax
jne 0x4015bc
mov eax, 2
pop esi
ret
mov eax, 1
pop esi
ret
mov eax, esi
pop esi
ret
Function at 0x401750
Capabilities:
Read data from internet
Receive data
Send data
Send http request

Disassembly:
sub esp, 0x9f4
lea eax, [esp + 8]
push ebx
push esi
mov esi, ecx
push edi
mov ecx, dword [esp + 0xa08]
push eax
push ecx
mov ecx, esi
xor ebx, ebx
call fcn.00401600
mov eax, dword [esp + 0xa04]
lea edx, [esp + 0x114]
push edx
push eax
mov ecx, esi
call fcn.00401600
lea ecx, [esp + 0x14]
lea edx, [esp + 0x114]
push ecx
push edx
lea eax, [esp + 0x620]
push str._highscore.php_yourname_scode_spositiononly
push eax
mov dword [esi], 0xffffffff
call fcn.00426959
add esp, 0x10
mov edx, dword [0x474de0]
lea ecx, [esp + 0x618]
push ebx
push 0x400000
push ebx
push ebx
push ebx
push ecx
push 0x469168
push edx
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
mov edi, eax
cmp edi, ebx
je 0x4018a4
push ebx
push ebx
push ebx
push ebx
push edi
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x4017fd
pop edi
pop esi
mov eax, 4
pop ebx
add esp, 0x9f4
ret 8
push ebp
mov ebp, dword [sym.imp.WININET.dll_InternetReadFile]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x218]
push eax
push 0x400
push ecx
push edi
mov dword [esp + 0x24], ebx
call ebp
mov edx, dword [esp + 0x14]
mov dword [esp + 0x10], 0xffffffff
mov byte [esp + edx + 0x218], bl
mov al, byte [esp + 0x218]
cmp al, bl
je 0x40188b
lea eax, [esp + 0x218]
mov ecx, esi
push eax
call fcn.004016b0
test al, al
je 0x40186a
lea ecx, [esp + 0x10]
lea edx, [esp + 0x218]
push ecx
push 0x469164
push edx
call fcn.00426925
add esp, 0xc
jmp 0x401885
lea eax, [esp + 0x218]
mov ecx, esi
push eax
call fcn.004016f0
test al, al
je 0x401885
mov dword [esp + 0x10], 0xf423f
mov ecx, dword [esp + 0x10]
mov dword [esi], ecx
cmp dword [esp + 0x14], ebx
jne 0x401804
pop ebp
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x9f4
ret 8
pop edi
pop esi
mov eax, 3
pop ebx
add esp, 0x9f4
ret 8