Function at 0x40eb50
Capabilities:
Copy file
Create process on windows
Set current directory
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x8938
call fcn.004668d0
mov ecx, dword [0x4a9a04]
push ebx
push ebp
push esi
xor ebp, ebp
push edi
test ecx, ecx
je 0x40eb7e
movsx eax, byte [ecx]
neg eax
sbb eax, eax
and eax, ecx
mov dword [0x4a9a04], eax
mov ecx, dword [0x4b0e00]
test ecx, ecx
je 0x40eb96
movsx eax, byte [ecx]
neg eax
sbb eax, eax
and eax, ecx
mov dword [0x4b0e00], eax
cmp byte [0x486cd3], 0
je 0x40ebbf
push str.PROGRESS_tASSEMBLING_n
call fcn.0040abc0
add esp, 4
push 1
call fcn.0044ed5d
add esp, 4
push eax
call fcn.0044f0f1
add esp, 4
push 0x4b1580
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
cmp byte [0x492184], 0
je 0x40ebf0
push str.purebasic.c
mov edx, 0x4922c0
lea ecx, [esp + 0x234]
call fcn.00446ec0
add esp, 4
mov ecx, eax
jmp 0x40ebf5
mov ecx, str.purebasic.c
cmp dword [0x49b0c8], ebp
je 0x40ec04
mov eax, str._O2__fno_tree_vrp__freorder_blocks_algorithmsimple__fno_schedule_insns__fno_schedule_insns2__fno_strict_aliasing
jmp 0x40ec16
mov eax, str._O0__g
cmp dword [0x49b074], ebp
jne 0x40ec16
mov eax, 0x46fcec
push ecx
push eax
push str.gcc__s__fsigned_char__Wno_discarded_qualifiers__Wno_incompatible_pointer_types__Wno_overflow__Wno_int_conversion__c__o_PureBasic.obj___s_
push 0x49b320
call fcn.00401560
add esp, 0xc
mov dword [0x4a9ec4], 0xffffffff
lea edx, [esp + 0x20]
mov ecx, 0x49b320
call fcn.004475d0
add esp, 4
mov ebx, 0x4b0e40
test eax, eax
jne 0x40ed41
mov edi, dword [esp + 0x1c]
mov esi, edi
test esi, esi
jne 0x40ec63
mov esi, str.Unknown_error_n
jmp 0x40ec9c
push str.error:
push edi
call fcn.004497c0
mov edx, eax
add esp, 8
test edx, edx
je 0x40ec9c
mov ecx, edx
mov esi, edx
lea ebx, [ecx + 1]
mov edi, edi
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ec80
sub ecx, ebx
mov ebx, 0x4b0e40
cmp ecx, 0x100
jbe 0x40ec9c
mov byte [edx + 0x100], al
cmp dword [0x4a98f0], ebp
je 0x40ecda
push str.ERROR_tASSEMBLER_n
call fcn.0040abc0
add esp, 4
mov ecx, esi
call fcn.0040bbc0
push str.OUTPUT_tCOMPLETE_n
call fcn.0040abc0
add esp, 4
push 1
call fcn.0044ed5d
add esp, 4
push eax
call fcn.0044f0f1
add esp, 4
jmp 0x40ece8
push esi
push str.Error:_Assembler_n_s
call fcn.0040abc0
add esp, 8
cmp dword [0x4afc48], ebp
jne 0x40ed24
cmp byte [0x4b03d0], 0
jne 0x40ed24
mov eax, dword [0x4a98e0]
mov edx, ebx
mov ecx, dword [0x485b04]
sub edx, ecx
mov dword [0x4afc48], 0x21
mov dword [0x4b04a0], eax
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x40ed17
mov dword [0x4a9a0c], 2
test edi, edi
je 0x40ed41
push edi
push 0
push dword [0x491954]
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp dword [0x4afc48], ebp
jne 0x40fd89
cmp dword [0x4b021c], ebp
je 0x40ee14
mov eax, dword [0x4a9ba8]
test eax, eax
jne 0x40ed6c
mov eax, str.PureBasic.dll
mov dword [0x4a9ba8], eax
push eax
push str.Creating_DLL___s__n
call fcn.00412ad0
push dword [0x4a9ba8]
mov edx, 0x4922c0
lea ecx, [esp + 0x2c]
call fcn.00446ec0
add esp, 0xc
cmp byte [0x492184], 0
jne 0x40edc4
cmp dword [0x4aa234], ebp
je 0x40eded
push str.PureBasic.def
mov edx, 0x4922c0
mov ecx, 0x49b320
call fcn.00446ec0
add esp, 4
push 0
push 0x49b320
push str.PureBasic.def
jmp 0x40ede7
push str.PureBasic.def
mov edx, 0x4922c0
mov ecx, 0x49b320
call fcn.00446ec0
add esp, 4
push 0
push str.PureBasic.def
push 0x49b320
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [esp + 0x20]
push eax
push 0x49ac20
push str.__spolink.exe___FORCE:MULTIPLE__DLL__DEF:PureBasic.def__OUT:__s_
push 0x4923e0
call fcn.00401560
mov ax, word [0x46ea84]
add esp, 0x10
jmp 0x40f06f
push 0x49ac20
push str._svclink.exe
push 0x49b320
call fcn.00401560
mov ecx, 0x49b320
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ee33
sub ecx, edx
mov dword [esp + 0x14], 0x208
lea eax, [esp + 0x18]
mov dword [esp + 0x18], ecx
push eax
push 0x49b320
lea edx, [esp + 0x1c]
mov ecx, 0x488df0
call fcn.004317d0
add esp, 8
test eax, eax
jne 0x40ee7e
mov eax, dword [esp + 0x14]
shr eax, 1
xor ecx, ecx
mov word [eax*2 + 0x488df0], cx
mov eax, 0x488df0
jmp 0x40ee83
mov eax, 0x479868
lea ecx, [esp + 0x338]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
je 0x40eeb4
mov esi, dword [esp + 0x338]
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
test esi, 0x10
jne 0x40eeb4
mov eax, str.__svclink.exe___NOLOGO__FORCE:MULTIPLE__OUT:_
jmp 0x40eebe
mov ebp, 1
mov eax, str.__spolink___NOLOGO__FORCE:MULTIPLE__OUT:_
push 0x49ac20
push eax
push 0x4923e0
call fcn.00401560
mov eax, dword [0x4a9ba8]
lea ecx, [esp + 0x134]
add esp, 0xc
mov edx, 0x4922c0
test eax, eax
je 0x40ef35
push eax
call fcn.00446ec0
lea edx, [esp + 0x12c]
add esp, 4
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x40eef8
mov edi, 0x4923e0
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40ef07
push dword [0x4a9ba8]
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push str.Creating_executable___s_._n
call fcn.00412ad0
add esp, 8
jmp 0x40efc6
push str.PureBasic.exe
mov dword [0x4a9ba8], 0x46fe7c
call fcn.00446ec0
add esp, 4
xor ecx, ecx
mov edi, edi
mov al, byte [esp + ecx + 0x128]
lea ecx, [ecx + 1]
mov byte [ecx + 0x4a9a9f], al
test al, al
jne 0x40ef50
push str.Creating_and_launching_executable._n
call fcn.00412ad0
mov edx, 0x4a9aa0
add esp, 4
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x40ef78
mov edi, 0x4923e0
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40ef87
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x4a9cc0]
test ecx, ecx
je 0x40efbf
mov edx, 0x4921a0
sub edx, ecx
mov edi, edi
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x40efb0
jmp 0x40efc6
mov byte [0x4921a0], 0
mov edi, 0x4923e0
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x40efd0
mov ax, word [0x46ea84]
mov edx, 0x4923e0
mov word [edi], ax
dec edx
lea esp, [esp]
mov cl, byte [edx + 1]
lea edx, [edx + 1]
test cl, cl
jne 0x40eff0
mov ecx, dword [str.__SUBSYSTEM:]
mov dword [edx], ecx
mov ecx, dword [0x46feb4]
mov dword [edx + 4], ecx
mov ecx, dword [0x46feb8]
mov dword [edx + 8], ecx
mov cl, byte [0x46febc]
mov byte [edx + 0xc], cl
mov edx, dword [0x4b10c4]
mov esi, edx
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x40f025
mov edi, 0x4923e0
sub edx, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f034
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
test ebp, ebp
je 0x40f06f
mov edx, 0x4923e0
dec edx
mov cl, byte [edx + 1]
lea edx, [edx + 1]
test cl, cl
jne 0x40f054
mov ecx, dword [str._5.0]
mov dword [edx], ecx
mov cl, byte [0x46fec4]
mov byte [edx + 4], cl
mov edx, 0x4923e0
dec edx
mov cl, byte [edx + 1]
lea edx, [edx + 1]
test cl, cl
jne 0x40f075
mov ecx, dword [str.__LIBPATH:_]
mov dword [edx], ecx
mov ecx, dword [0x46fecc]
mov dword [edx + 4], ecx
mov ecx, dword [0x46fed0]
mov dword [edx + 8], ecx
mov edx, 0x49a800
mov esi, edx
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x40f0a0
mov edi, 0x4923e0
sub edx, esi
dec edi
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f0b0
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4923e0
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f0d0
mov ecx, 8
mov esi, str.PureLibrariesWindowsLibraries_
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov edi, 0x4923e0
dec edi
jmp 0x40f0f0
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f0f0
mov ecx, 6
mov esi, str.__NODEFAULTLIB__LIBPATH:_
rep movsd dword es:[edi], dword [esi]
mov edx, 0x49ac20
movsw word es:[edi], word [esi]
mov esi, edx
lea ecx, [ecx]
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x40f110
mov edi, 0x4923e0
sub edx, esi
dec edi
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f120
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, 0x4923e0
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea esi, [edx + 1]
mov edi, edi
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x40f140
sub edx, esi
mov edi, 0x4923e0
dec edi
mov byte [edx + 0x4923df], cl
mov cl, byte [edi + 1]
lea edi, [edi + 1]
test cl, cl
jne 0x40f155
mov word [edi], ax
mov edi, 0x4923e0
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f168
mov ecx, 0x34
mov esi, str._PureBasic.obj_SystemBase.lib_StringUtility.lib_UnicodeFunctions.lib_libcmt.lib_libcpmt.lib_libucrt.lib_libvcruntime.lib_KERNEL32.lib_USER32.lib_GDI32.lib_COMDLG32.lib_ADVAPI32.lib_COMCTL32.lib_OLEAUT32.lib
rep movsd dword es:[edi], dword [esi]
mov edi, 0x4923e0
dec edi
mov cl, byte [edi + 1]
lea edi, [edi + 1]
test cl, cl
jne 0x40f182
mov edx, 0x49a800
mov word [edi], ax
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x40f196
mov edi, 0x4923e0
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f1a5
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4923e0
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f1c1
mov ecx, 6
lea edx, [esp + 0x948]
mov esi, str.Compilersgcclibgcc.a_
mov eax, 0x20
rep movsd dword es:[edi], dword [esi]
mov word [esp + 0x948], ax
movsb byte es:[edi], byte [esi]
call fcn.0040e040
cmp dword [0x4a9a00], 0
mov edx, 0x46df45
mov ebx, edx
je 0x40f204
mov edx, str.thread
cmp byte [0x49210c], 0
je 0x40f212
mov ebx, str.purifier
xor ecx, ecx
jmp 0x40f220
mov al, byte [ecx + 0x49a800]
lea ecx, [ecx + 1]
mov byte [ecx + 0x49b31f], al
test al, al
jne 0x40f220
mov edi, 0x49b320
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f240
mov ecx, 6
mov esi, str.compilers_stringmanagerc
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x40f257
mov edi, 0x49b320
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f266
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, ebx
mov edi, edi
mov al, byte [ebx]
inc ebx
test al, al
jne 0x40f280
mov edi, 0x49b320
sub ebx, esi
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f290
mov ecx, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x49b320
dec ecx
lea esp, [esp]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f2b0
mov eax, dword [str..lib]
mov dword [ecx], eax
mov al, byte [0x46eab8]
mov byte [ecx + 4], al
mov ecx, 0x4923e0
dec ecx
nop
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f2d0
mov ax, word [0x46ea5c]
mov edx, 0x49b320
mov word [ecx], ax
mov esi, edx
mov al, byte [0x46ea5e]
mov byte [ecx + 2], al
mov al, byte [edx]
inc edx
test al, al
jne 0x40f2f2
mov edi, 0x4923e0
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f301
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x4923e0
dec ecx
lea ecx, [ecx]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f320
cmp dword [0x49b074], 0
mov ax, word [0x46eaf8]
mov word [ecx], ax
mov al, byte [0x46eafa]
mov byte [ecx + 2], al
je 0x40f383
mov ecx, 0x4923e0
dec ecx
lea ebx, [ebx]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f350
mov eax, dword [str._Debugger.lib]
mov dword [ecx], eax
mov eax, dword [0x470008]
mov dword [ecx + 4], eax
mov eax, dword [0x47000c]
mov dword [ecx + 8], eax
mov ax, word [0x470010]
mov word [ecx + 0xc], ax
mov al, byte [0x470012]
mov byte [ecx + 0xe], al
mov esi, dword [0x49216c]
xor edi, edi
mov dword [esi], edi
lea ecx, [ecx]
mov eax, dword [esi]
test eax, eax
je 0x40f3a4
mov eax, dword [eax]
test eax, eax
je 0x40f3a0
mov dword [esi], eax
jmp 0x40f3ad
xor eax, eax
jmp 0x40f3a9
mov eax, dword [esi + 4]
mov dword [esi], eax
test eax, eax
je 0x40f3e9
cmp byte [eax + 0xc], 0
je 0x40f390
mov edx, dword [eax + 8]
mov ecx, edx
lea ebx, [ecx + 1]
jmp 0x40f3c0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40f3c0
sub ecx, ebx
inc edi
add edi, ecx
cmp edi, 0x7d00
jae 0x40f390
push 0
push 1
lea ecx, [esp + 0x950]
call fcn.0040d250
add esp, 8
jmp 0x40f390
mov edx, dword [0x492170]
mov dword [edx], 0
mov eax, dword [edx]
test eax, eax
je 0x40f409
mov eax, dword [eax]
test eax, eax
je 0x40f405
mov dword [edx], eax
jmp 0x40f412
xor eax, eax
jmp 0x40f40e
mov eax, dword [edx + 4]
mov dword [edx], eax
test eax, eax
je 0x40f474
mov esi, dword [eax + 8]
mov bl, byte [esi]
test bl, bl
je 0x40f3f5
mov ecx, esi
lea ebp, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40f420
sub ecx, ebp
add edi, 3
add edi, ecx
cmp edi, 0x7d00
jae 0x40f3f5
mov eax, 0x46df10
cmp bl, 0x2d
je 0x40f445
mov eax, 0x46e608
push esi
push eax
push 0x49b320
call fcn.00401560
add esp, 0xc
lea ecx, [esp + 0x948]
mov edx, 0x49b320
push 0
push 1
call fcn.0040d250
mov edx, dword [0x492170]
add esp, 8
jmp 0x40f3f5
cmp edi, 0x7d00
jb 0x40f486
mov ecx, 0x10e
call fcn.00412bb0
lea edx, [esp + 0x948]
mov esi, edx
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x40f490
mov edi, 0x4923e0
sub edx, esi
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f4a0
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
cmp dword [0x4b021c], 0
rep movsb byte es:[edi], byte [esi]
je 0x40f4da
xor eax, eax
mov dword [0x4a9a04], 0
xor ecx, ecx
mov dword [0x4b0e04], eax
mov dword [0x4b1990], ecx
jmp 0x40f4ee
cmp dword [0x4a9a04], 0
jne 0x40f515
mov eax, dword [0x4b0e04]
mov ecx, dword [0x4b1990]
cmp dword [0x4afc44], 0
jne 0x40f515
cmp dword [0x4aa228], 0
jne 0x40f515
cmp dword [0x4b0e00], 0
jne 0x40f515
test eax, eax
jne 0x40f515
test ecx, ecx
je 0x40f9c2
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 0xc
push eax
push str.PureBasic.rc
lea edx, [esp + 0x1c]
mov dword [esp + 0x1c], 0x208
mov ecx, 0x488df0
call fcn.004317d0
add esp, 8
test eax, eax
jne 0x40f55b
mov eax, dword [esp + 0x14]
shr eax, 1
xor ecx, ecx
mov word [eax*2 + 0x488df0], cx
mov eax, 0x488df0
jmp 0x40f560
mov eax, 0x479868
mov ebp, dword [sym.imp.KERNEL32.dll_CreateFileW]
push 0
push 0x80
push 2
push 0
push 1
push 0x40000000
push eax
call ebp
mov edi, eax
cmp edi, 0xffffffff
je 0x40f9c2
test edi, edi
je 0x40f9c2
mov ebx, dword [sym.imp.KERNEL32.dll_WriteFile]
lea eax, [esp + 0x18]
push 0
push eax
push 3
push 0x470024
push edi
call ebx
mov eax, dword [0x4b0e00]
test eax, eax
je 0x40f612
push eax
push str.include___s_
push 0x49b320
call fcn.00401560
mov edx, 0x49b320
add esp, 0xc
lea ecx, [edx + 1]
lea esp, [esp]
mov al, byte [edx]
inc edx
test al, al
jne 0x40f5d0
sub edx, ecx
xor ecx, ecx
jmp 0x40f5e0
mov al, byte [ecx + 0x49b320]
lea ecx, [ecx + 1]
mov byte [esp + ecx + 0x337], al
test al, al
jne 0x40f5e0
push 0
lea eax, [esp + 0x18]
mov byte [esp + edx + 0x33c], 0xa
push eax
lea eax, [edx + 1]
push eax
lea eax, [esp + 0x344]
push eax
push edi
call ebx
mov esi, dword [0x4a9a04]
test esi, esi
je 0x40f6a9
cmp byte [esi + 1], 0x3a
je 0x40f647
cmp byte [esi], 0x5c
je 0x40f647
push esi
mov edx, 0x4922c0
lea ecx, [esp + 0x73c]
call fcn.00446ec0
add esp, 4
lea esi, [esp + 0x738]
mov ecx, esi
call fcn.004473a0
test eax, eax
je 0x40f69f
mov al, byte [esi]
lea ecx, [esp + 0x840]
test al, al
je 0x40f674
nop
cmp al, 0x5c
jne 0x40f667
mov byte [ecx], al
inc ecx
movzx eax, byte [esi]
inc esi
mov byte [ecx], al
inc ecx
mov al, byte [esi]
test al, al
jne 0x40f660
lea eax, [esp + 0x840]
mov byte [ecx], 0
push eax
push str.1_ICON___s_
push 0x49b320
call fcn.00401560
add esp, 0xc
mov edx, 0x49b320
mov ecx, edi
call fcn.00447340
jmp 0x40f6a9
mov ecx, 0x68
call fcn.00412bb0
cmp dword [0x4afc44], 0
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
jne 0x40f6e0
cmp dword [0x4aa228], 0
jne 0x40f6e0
cmp dword [0x4b0e04], 0
jne 0x40f6e0
cmp dword [0x4b1990], 0
jne 0x40f6e0
cmp dword [0x4b03d8], 0
je 0x40f870
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 8
push eax
push str.Manifest
lea edx, [esp + 0x1c]
mov dword [esp + 0x1c], 0x208
mov ecx, 0x488df0
call fcn.004317d0
add esp, 8
test eax, eax
jne 0x40f726
mov eax, dword [esp + 0x14]
shr eax, 1
xor ecx, ecx
mov word [eax*2 + 0x488df0], cx
mov eax, 0x488df0
jmp 0x40f72b
mov eax, 0x479868
push 0
push 0x80
push 2
push 0
push 1
push 0x40000000
push eax
call ebp
mov esi, eax
cmp esi, 0xffffffff
je 0x40f82d
test esi, esi
je 0x40f82d
cmp dword [0x4aa228], 0
mov ebx, 0x46df45
mov ebp, ebx
mov dword [esp + 0x14], ebx
je 0x40f76f
mov dword [esp + 0x14], str._file_name_WINMMBASE.dll__loadFrom__SystemRoot__system32WINMMBASE.dll____n___file_name_FONTSUB.dll__loadFrom__SystemRoot__system32FONTSUB.dll____n___file_name_USP10.dll__loadFrom__SystemRoot__system32USP10.dll____n___file_name_PROPSYS.dll__loadFrom__SystemRoot__system32PROPSYS.dll____n___file_name_IPHLPAPI.dll__loadFrom__SystemRoot__system32IPHLPAPI.dll____n___file_name_URLMON.dll__loadFrom__SystemRoot__system32URLMON.dll____n___file_name_MSISO.dll__loadFrom__SystemRoot__system32MSISO.dll____n___file_name_MLANG.dll__loadFrom__SystemRoot__system32MLANG.dll____n___file_name_WININET.dll__loadFrom__SystemRoot__system32WININET.dll____n___file_name_D3D10WARP.dll__loadFrom__SystemRoot__system32D3D10WARP.dll____n___file_name_WINMM.dll__loadFrom__SystemRoot__system32WINMM.dll____n___file_name_MSIMG32.dll__loadFrom__SystemRoot__system32MSIMG32.dll____n___file_name_CRYPTBASE.dll__loadFrom__SystemRoot__system32CRYPTBASE.dll____n___file_name_SSPICLI.dll__loadFrom__SystemRoot__system32SSPICLI.dll____n___file_name_WLDP.dll__loadFrom__SystemRoot__system32WLDP.dll____n___file_name_PROFAPI.dll__loadFrom__SystemRoot__system32PROFAPI.dll____n___file_name_MPR.dll__loadFrom__SystemRoot__system32MPR.dll____n___file_name_VERSION.dll__loadFrom__SystemRoot__system32VERSION.dll____n___file_name_NETAPI32.dll__loadFrom__SystemRoot__system32NETAPI32.dll____n___file_name_SRVCLI.dll__loadFrom__SystemRoot__system32SRVCLI.dll____n___file_name_TEXTSHAPING.dll__loadFrom__SystemRoot__system32TEXTSHAPING.dll____n___file_name_WINDOWSCODECS.dll__loadFrom__SystemRoot__system32WINDOWSCODECS.dll____n___file_name_CRYPTSP.dll__loadFrom__SystemRoot__system32CRYPTSP.dll____n___file_name_MSVCP110_WIN.dll__loadFrom__SystemRoot__system32MSVCP110_WIN.dll____n___file_name_WSOCK32.dll__loadFrom__SystemRoot__system32WSOCK32.dll____n___file_name_ATL.dll__loadFrom__SystemRoot__system32ATL.dll____n___file_name_IMAGERES.dll__loadFrom__SystemRoot__system32IMAGERES.dll____n___file_name_MSFTEDIT.dll__loadFrom__SystemRoot__system32MSFTEDIT.dll____n___file_name_RICHED20.dll__loadFrom__SystemRoot__system32RICHED20.dll____n___file_name_MSLS31.dll__loadFrom__SystemRoot__system32MSLS31.dll____n___file_name_GLU32.dll__loadFrom__SystemRoot__system32GLU32.dll____n___file_name_OPENGL32.dll__loadFrom__SystemRoot__system32OPENGL32.dll____n___file_name_SECUR32.dll__loadFrom__SystemRoot__system32SECUR32.dll____n___file_name_ODBC32.dll__loadFrom__SystemRoot__system32ODBC32.dll____n___file_name_DPAPI.dll__loadFrom__SystemRoot__system32DPAPI.dll____n
cmp dword [0x4b0e04], 0
jne 0x40f78b
cmp dword [0x4b1990], 0
jne 0x40f794
mov byte [esp + 0x338], 0
jmp 0x40f7b6
cmp dword [0x4b1990], 0
je 0x40f79b
mov eax, str.requireAdministrator
jmp 0x40f7a0
mov eax, str.asInvoker
push eax
lea eax, [esp + 0x33c]
push str._t_trustInfo_xmlns_urn:schemas_microsoft_com:asm.v2___n_____security__n_______requestedPrivileges__n_________requestedExecutionLevel_n__________level__s__n__________uiAccess_false____n__________requestedPrivileges__n_________security__n____trustInfo__n
push eax
call fcn.00401560
add esp, 0xc
cmp dword [0x4afc44], 0
je 0x40f7c4
mov ebx, str._n___dependency__n_____dependentAssembly__n_______assemblyIdentity_n________type_win32__n________name_Microsoft.Windows.Common_Controls__n________version_6.0.0.0__n________processorArchitecture_X86__n________publicKeyToken_6595b64144ccf1df__n________language______n______dependentAssembly__n____dependency__n
cmp dword [0x4b03d8], 0
je 0x40f7d2
mov ebp, str.___asmv3:application__xmlns:asmv3_urn:schemas_microsoft_com:asm.v3________asmv3:windowsSettings_xmlns_http:__schemas.microsoft.com_SMI_2005_WindowsSettings__________dpiAware_true__dpiAware________asmv3:windowsSettings______asmv3:application_
push ebp
lea eax, [esp + 0x33c]
push eax
push ebx
push dword [esp + 0x20]
lea eax, [esp + 0x958]
push str.__xml_version_1.0__encoding_UTF_8__standalone_yes____n_assembly_xmlns_urn:schemas_microsoft_com:asm.v1__manifestVersion_1.0___s_n___compatibility_xmlns_urn:schemas_microsoft_com:compatibility.v1___n_______application__n_________supportedOS_Id_e2011457_1546_43c5_a5fe_008deee3d3f0____n_________supportedOS_Id_35138b9a_5d96_4fbd_8e2d_a2440225f93a____n_________supportedOS_Id_4a2f28e3_53b9_4441_ba9c_d69d4a4a6e38____n_________supportedOS_Id_1f676c76_80e1_4239_95bb_83d0f6d0da78____n_________supportedOS_Id_8e0f7a12_bfb3_4fe8_b9a5_48fd50a15a9a____n________application__n____compatibility__n___assemblyIdentity_n____version_1.0.0.0__n____processorArchitecture_X86__n____name_CompanyName.ProductName.YourApp__n____type_win32_____n___description___description__s_s_s_n__assembly_
push eax
call fcn.00401560
lea ecx, [esp + 0x960]
add esp, 0x18
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40f800
mov ebp, dword [sym.imp.KERNEL32.dll_WriteFile]
lea eax, [esp + 0x18]
push 0
push eax
sub ecx, edx
lea eax, [esp + 0x950]
push ecx
push eax
push esi
call ebp
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call ebx
jmp 0x40f833
mov ebp, dword [sym.imp.KERNEL32.dll_WriteFile]
xor ecx, ecx
jmp 0x40f840
mov al, byte [ecx + str.1_MANIFEST__Manifest_]
lea ecx, [ecx + 1]
mov byte [esp + ecx + 0x337], al
test al, al
jne 0x40f840
push 0
lea eax, [esp + 0x1c]
mov byte [esp + 0x351], 0xa
push eax
push 0x16
lea eax, [esp + 0x344]
push eax
push edi
call ebp
push edi
call ebx
mov ebx, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0x4922c0
call ebx
push 0x4b1580
push 0x4b1580
push 0x49ac20
push str.__sporc.exe____sPureBasic.rc___Fo__sPureBasic.res_
push 0x49b320
call fcn.00401560
add esp, 0x10
lea edx, [esp + 0x20]
mov ecx, 0x49b320
call fcn.004475d0
add esp, 4
test eax, eax
jne 0x40f984
mov edi, dword [esp + 0x1c]
mov esi, edi
test esi, esi
jne 0x40f8c9
mov esi, str.Unknown_error_n
cmp dword [0x4a98f0], 0
je 0x40f908
push str.ERROR_tRESOURCE_n
call fcn.0040abc0
add esp, 4
mov ecx, esi
call fcn.0040bbc0
push str.OUTPUT_tCOMPLETE_n
call fcn.0040abc0
add esp, 4
push 1
call fcn.0044ed5d
add esp, 4
push eax
call fcn.0044f0f1
add esp, 4
jmp 0x40f916
push esi
push str.Error:_Resource_n_s
call fcn.0040abc0
add esp, 8
cmp dword [0x4afc48], 0
jne 0x40f95d
cmp byte [0x4b03d0], 0
jne 0x40f95d
mov eax, dword [0x4a98e0]
mov edx, 0x4b0e40
mov ecx, dword [str.Cant_create_the_PureBasic.exe_file__already_running__.]
sub edx, ecx
mov dword [0x4afc48], 0x5d
mov dword [0x4b04a0], eax
lea esp, [esp]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x40f950
mov dword [0x4a9a0c], 2
test edi, edi
je 0x40f97a
push edi
push 0
push dword [0x491954]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, 0xad
call fcn.00412bb0
push 0x4b1580
call ebx
mov ecx, 0x4923e0
dec ecx
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x40f991
mov eax, dword [str._PureBasic.res]
mov dword [ecx], eax
mov eax, dword [0x4700c4]
mov dword [ecx + 4], eax
mov eax, dword [0x4700c8]
mov dword [ecx + 8], eax
mov ax, word [0x4700cc]
mov word [ecx + 0xc], ax
mov al, byte [0x4700ce]
mov byte [ecx + 0xe], al
mov edx, dword [0x49a3e0]
test edx, edx
je 0x40fa23
mov edi, 0x4923e0
dec edi
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x40f9d2
mov eax, dword [0x4700d0]
mov esi, edx
mov dword [edi], eax
mov al, byte [edx]
inc edx
test al, al
jne 0x40f9e5
mov edi, 0x4923e0
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f9f4
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4923e0
dec edi
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x40fa10
mov ax, word [0x46ea84]
mov word [edi], ax
cmp dword [0x4afc48], 0
jne 0x40fd89
cmp byte [0x486cd3], 0
je 0x40fa59
push str.PROGRESS_tLINKING_n
call fcn.0040abc0
add esp, 4
push 1
call fcn.0044ed5d
add esp, 4
push eax
call fcn.0044f0f1
add esp, 4
push ecx
lea edx, [esp + 0x20]
mov ecx, 0x4923e0
call fcn.004475d0
add esp, 4
test eax, eax
jne 0x40fb44
mov edi, dword [esp + 0x1c]
mov esi, edi
test esi, esi
jne 0x40fa82
mov esi, str.Unknown_error_n
push str.error:
push esi
call fcn.004497c0
add esp, 8
test eax, eax
je 0x40fa96
mov esi, eax
cmp dword [0x4a98f0], 0
je 0x40fad5
push str.ERROR_tLINKER_n
call fcn.0040abc0
add esp, 4
mov ecx, esi
call fcn.0040bbc0
push str.OUTPUT_tCOMPLETE_n
call fcn.0040abc0
add esp, 4
push 1
call fcn.0044ed5d
add esp, 4
push eax
call fcn.0044f0f1
add esp, 4
jmp 0x40fae3
push esi
push str.Error:_Linker_n_s
call fcn.0040abc0
add esp, 8
cmp dword [0x4afc48], 0
jne 0x40fb23
cmp byte [0x4b03d0], 0
jne 0x40fb23
mov eax, dword [0x4a98e0]
mov edx, 0x4b0e40
mov ecx, dword [str.Cant_create_the_PureBasic.exe_file__already_running__.]
sub edx, ecx
mov dword [0x4afc48], 0x5d
mov dword [0x4b04a0], eax
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x40fb16
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [0x4a9a0c], 2
test edi, edi
je 0x40fb4a
push edi
push 0
push dword [0x491954]
call ebx
jmp 0x40fb4a
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
cmp dword [0x4afc48], 0
jne 0x40fd89
cmp dword [0x4b021c], 0
je 0x40fc11
lea ecx, [esp + 0x20]
lea edx, [ecx + 1]
jmp 0x40fb70
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40fb70
sub ecx, edx
lea esi, [esp + 0x20]
add esi, ecx
lea eax, [esp + 0x20]
cmp esi, eax
jbe 0x40fb95
cmp byte [esi], 0x2e
je 0x40fb9a
dec esi
lea eax, [esp + 0x20]
cmp esi, eax
ja 0x40fb87
cmp byte [esi], 0x2e
jne 0x40fbba
lea eax, [esp + 0x20]
sub esi, eax
push esi
push eax
lea eax, [esp + 0x238]
push eax
call fcn.0044f4e0
add esp, 0xc
mov byte [esp + esi + 0x230], 0
lea eax, [esp + 0x230]
push eax
push 0x49ac20
push str.__spolib.exe___MACHINE:X86__DEF:PureBasic.def__OUT:__s.lib_
push 0x4923e0
call fcn.00401560
add esp, 0xc
lea edx, [esp + 0x20]
mov ecx, 0x4923e0
call fcn.004475d0
add esp, 4
test eax, eax
jne 0x40fd89
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x40fd89
push eax
push 0
push dword [0x491954]
call ebx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [0x4922bc], 0
jne 0x40fd89
cmp dword [0x4a98f0], 0
jne 0x40fd89
xor esi, esi
cmp dword [0x49b074], esi
je 0x40fd6a
mov eax, dword [0x4b10c4]
mov ecx, str.Console
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40fc63
test dl, dl
je 0x40fc5f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40fc63
add eax, 2
add ecx, 2
test dl, dl
jne 0x40fc43
xor eax, eax
jmp 0x40fc68
sbb eax, eax
or eax, 1
test eax, eax
je 0x40fd6a
mov ecx, dword [0x492180]
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40fc80
sub ecx, edx
mov edx, 0x4a9aa0
lea edi, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x40fc91
sub edx, edi
lea eax, [edx + 0x10]
add eax, ecx
push eax
call fcn.004556ab
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x40fd3b
mov eax, 0x22
mov edx, 0x4a9aa0
mov word [ebx], ax
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x40fcc1
sub edx, esi
lea edi, [ebx - 1]
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40fcd0
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebx - 1]
lea esp, [esp]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40fcf0
mov ax, word [0x46eaf8]
mov edx, dword [0x492180]
mov esi, edx
mov word [ecx], ax
mov al, byte [0x46eafa]
mov byte [ecx + 2], al
mov al, byte [edx]
inc edx
test al, al
jne 0x40fd13
sub edx, esi
lea edi, [ebx - 1]
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40fd20
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, 1
push 1
push 0x49ac20
push ebx
push str.pbdebugger.exe
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
test esi, esi
je 0x40fd89
push ebx
call fcn.0044f604
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
push 1
push 0x49ac20
push dword [0x492180]
push 0x4a9aa0
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret