Function at 0x423040
Capabilities:
Copy file
Create a process with modified i/o handles and window
Create directory
Create pipe
Create process on windows
Delete file
Read file on windows
Read pipe
Resume thread
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x37b8
call fcn.0043b580
mov eax, dword [0x47c554]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push str.Initializing_files...
mov byte [ebp - 0x3739], 1
call fcn.00439820
push str.C:BuildDLL
lea eax, [ebp - 0x10c]
push 0x105
push eax
call fcn.0043f2f3
add esp, 0x10
lea eax, [ebp - 0x10c]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push 0x104
lea eax, [ebp - 0x10c]
push eax
push eax
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
lea eax, [ebp - 0x10c]
push 0
push eax
call fcn.00414c90
lea eax, [ebp - 0x10c]
push eax
push str._sIsiPlc.DEF
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.004038d0
push 0x45a2c4
lea eax, [ebp - 0xf34]
push eax
lea eax, [ebp - 0x3740]
push eax
call fcn.0043f4a5
push dword [0x46f7e4]
push dword [ebp - 0x3740]
call fcn.00424b10
push dword [ebp - 0x3740]
call fcn.0043f6f8
cmp byte [esi + 5], 0
mov ecx, str._sMnemoniques.h
push 0x47ced4
mov eax, str._sTmpMnemo.h
cmove eax, ecx
push eax
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.004038d0
add esp, 0x40
lea eax, [ebp - 0x10c]
push eax
push str._sMnemoniques.h
lea eax, [ebp - 0xa1c]
push 0x105
push eax
call fcn.004038d0
add esp, 0x10
lea eax, [ebp - 0xa1c]
push 0
push eax
lea eax, [ebp - 0xf34]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x10c]
push eax
call fcn.00425400
lea eax, [ebp - 0x3738]
push eax
call fcn.00423d50
push eax
lea eax, [ebp - 0x10c]
push eax
call fcn.00428bc0
add esp, 0x10
mov dword [esi + 8], 0
push 0x42680
push 8
push dword [0x47ceb4]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
xor edi, edi
mov dword [esi + 0xc], eax
mov dword [ebp - 0x3748], edi
nop word [eax + eax]
cmp dword [esi + 8], 0x3e8
jge 0x423cdd
mov eax, dword [esi]
xor ebx, ebx
mov dword [ebp - 0x3744], ebx
cmp eax, 0xffffffff
jne 0x4231f7
cmp byte [esi + 5], 1
je 0x4231ff
imul eax, edi, 0x8c
cmp byte [eax + 0x484bb1], 1
jne 0x423cca
jmp 0x4231ff
mov edi, eax
mov dword [ebp - 0x3748], edi
cmp byte [esi + 5], bl
jne 0x42324f
push edi
push 0x47ced4
push str._sBlocDllBLOC_04u.DLL
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.004038d0
add esp, 0x14
lea eax, [ebp - 0xf34]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp byte [esi + 5], bl
jne 0x42324f
push edi
push str.Bloc__04u
push 0x100
push 0x518000
call fcn.004038d0
add esp, 0x10
jmp 0x423266
push str.Mnemonic_control
push 0x100
push 0x518000
call fcn.0043f2f3
add esp, 0xc
push 0x518000
call fcn.00439820
mov ecx, 0x518000
add esp, 4
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x423280
sub ecx, edx
mov eax, 0x100
push 0x46ab94
sub eax, ecx
push eax
push 0x518000
call fcn.0043f34d
push edi
lea eax, [ebp - 0x10c]
push eax
push str._sIsiPlc.cpp
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.004038d0
push 0x45a2c4
lea eax, [ebp - 0xf34]
push eax
lea eax, [ebp - 0x3740]
push eax
call fcn.0043f4a5
add esp, 0x2c
test eax, eax
jne 0x4233e3
push 4
push eax
push 0xa
push 1
push dword [0x46f7e0]
push dword [ebp - 0x3740]
call fcn.00424b10
add esp, 0x18
cmp byte [esi + 5], bl
jne 0x4233ad
push edi
push 0x47ced4
push str._sBlocCodeBLOC_04u.TXT
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.004038d0
push 0x40
lea eax, [ebp - 0xf34]
push 0x45a580
push eax
call fcn.0043f49a
mov edi, eax
add esp, 0x20
test edi, edi
je 0x423394
push edi
call fcn.00448048
add esp, 4
test eax, eax
jne 0x42338b
nop word [eax + eax]
push edi
lea eax, [ebp - 0x510]
push 0x400
push eax
call fcn.00448146
add esp, 0xc
test eax, eax
je 0x42337e
push dword [ebp - 0x3740]
lea eax, [ebp - 0x510]
push eax
call fcn.0044bf10
add esp, 8
push edi
call fcn.00448048
add esp, 4
test eax, eax
je 0x423350
push edi
call fcn.0043f6f8
add esp, 4
push dword [ebp - 0x3740]
mov edi, dword [ebp - 0x3748]
call fcn.0043f6f8
add esp, 4
jmp 0x423469
push dword [ebp - 0x3740]
push str.BEGIN_GRAFCET_n
call fcn.0044bf10
push dword [ebp - 0x3740]
push str.END_GRAFCET_n
call fcn.0044bf10
add esp, 0x10
push dword [ebp - 0x3740]
call fcn.0043f6f8
add esp, 4
jmp 0x423469
imul eax, dword [esi + 8], 0x110
push 0x110
push 0
add eax, dword [esi + 0xc]
push eax
call fcn.0043d400
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax], edi
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 8], ebx
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov byte [ecx + eax + 0xc], 1
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 4], ebx
lea eax, [ebp - 0xf34]
imul ecx, dword [esi + 8], 0x110
push eax
mov eax, dword [esi + 0xc]
push str.Unable_to_create_file___s___
push 0x100
add ecx, 0xd
add eax, ecx
push eax
call fcn.004038d0
mov ebx, 1
add esp, 0x1c
inc dword [esi + 8]
mov dword [ebp - 0x3744], ebx
cmp byte [esi + 5], 0
jne 0x423489
push edi
push str.Start_compiling_process_for_bloc__04u
push 0x100
push 0x518000
call fcn.004038d0
add esp, 0x10
jmp 0x4234a0
push str.Start_mnemonics_check
push 0x100
push 0x518000
call fcn.004038d0
add esp, 0xc
push 0x518000
call fcn.00439820
add esp, 4
mov dword [ebp - 0x3774], 0xc
lea eax, [ebp - 0x3774]
mov dword [ebp - 0x3770], 0
mov dword [ebp - 0x376c], 1
push 0x9c4000
push eax
lea eax, [ebp - 0x3750]
push eax
lea eax, [ebp - 0x3754]
push eax
call dword [sym.imp.KERNEL32.dll_CreatePipe]
xor eax, eax
mov dword [ebp - 0x3786], 0
xorps xmm0, xmm0
mov word [ebp - 0x3782], ax
mov eax, dword [ebp - 0x3750]
mov dword [ebp - 0x377c], eax
xor eax, eax
push 0xfffffffffffffff6
movlpd qword [ebp - 0x37b4], xmm0
movlpd qword [ebp - 0x37ac], xmm0
movlpd qword [ebp - 0x37a4], xmm0
movlpd qword [ebp - 0x379c], xmm0
movlpd qword [ebp - 0x3794], xmm0
mov dword [ebp - 0x37b8], 0x44
mov dword [ebp - 0x378c], 0x101
mov word [ebp - 0x3788], ax
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov dword [ebp - 0x3780], eax
mov eax, dword [ebp - 0x3750]
mov dword [ebp - 0x3778], eax
lea eax, [ebp - 0x10c]
push eax
push eax
push eax
push 0x4afd4c
push str.__s___O2__GA__LD__MT__Fe__sIsiPlc_.DLL__TP___sIsiPlc.cpp___nologo__link_def:_sIsiPlc.DEF
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.004038d0
add esp, 0x1c
lea eax, [ebp - 0x3768]
push eax
lea eax, [ebp - 0x37b8]
push eax
lea eax, [ebp - 0x10c]
push eax
push dword [0x517ff8]
lea eax, [ebp - 0xf34]
push 0x14
push 1
push 0
push 0
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
cmp dword [ebp - 0x3768], 0
je 0x423bd1
push dword [ebp - 0x3750]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0x3764]
call dword [sym.imp.KERNEL32.dll_ResumeThread]
push 0x7530
push dword [ebp - 0x3768]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x423694
push 0xffffffffffffffff
push dword [ebp - 0x3768]
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
imul eax, dword [esi + 8], 0x110
push 0x110
push 0
add eax, dword [esi + 0xc]
push eax
call fcn.0043d400
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
push str.Compilation_timeout_compilation_reached____Check_setting
push 0x100
mov dword [ecx + eax], edi
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 8], 0
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov byte [ecx + eax + 0xc], 1
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 4], 0
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
add ecx, 0xd
add eax, ecx
push eax
call fcn.0043f2f3
inc dword [esi + 8]
add esp, 0x18
inc ebx
mov dword [ebp - 0x3744], ebx
push str.Preparing_build_log...
call fcn.00439820
xor ebx, ebx
mov ecx, str.Mnemoniques.h_
cmp byte [esi + 5], bl
mov eax, str.IsiPlc.cpp_
cmovne eax, ecx
push eax
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.0043f2f3
add esp, 0x10
push 0
lea eax, [ebp - 0x374c]
push eax
mov eax, 0x400
sub eax, ebx
push eax
lea eax, [ebp - 0x510]
add eax, ebx
push eax
push dword [ebp - 0x3754]
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp eax, 1
jne 0x4236f6
add ebx, dword [ebp - 0x374c]
test ebx, ebx
je 0x423abe
xor eax, eax
test ebx, ebx
jle 0x423a87
nop dword [eax + eax]
cmp byte [ebp + eax - 0x510], 0xd
je 0x423724
inc eax
cmp eax, ebx
jl 0x423710
jmp 0x423a87
cmp eax, ebx
jge 0x423a87
cmp eax, 0x401
jae 0x423d0f
mov byte [ebp + eax - 0x510], 0
lea eax, [ebp - 0xf34]
push eax
lea eax, [ebp - 0x510]
push eax
call fcn.0043cc10
add esp, 8
test eax, eax
je 0x423987
imul eax, dword [esi + 8], 0x110
push 0x110
push 0
add eax, dword [esi + 0xc]
push eax
call fcn.0043d400
mov eax, dword [esi + 0xc]
add esp, 0xc
imul ecx, dword [esi + 8], 0x110
mov dword [ecx + eax], edi
lea edi, [ebp - 0xf34]
lea ecx, [edi + 1]
nop dword [eax]
mov al, byte [edi]
inc edi
test al, al
jne 0x423790
lea eax, [ebp - 0xf34]
sub edi, ecx
push eax
lea eax, [ebp - 0x510]
push eax
call fcn.0043cc10
add eax, edi
push eax
lea eax, [ebp - 0x914]
push 0x401
push eax
call fcn.0043f2f3
xor eax, eax
add esp, 0x14
cmp byte [ebp - 0x914], al
je 0x4237f0
nop dword [eax]
cmp byte [ebp + eax - 0x914], 0x29
je 0x4237e5
inc eax
cmp byte [ebp + eax - 0x914], 0
jne 0x4237d0
cmp eax, 0x401
jae 0x423d0f
mov byte [ebp + eax - 0x914], 0
lea eax, [ebp - 0x914]
push eax
call fcn.0044b487
imul edx, dword [esi + 8], 0x110
mov ecx, dword [esi + 0xc]
push str.error_C
mov dword [edx + ecx + 4], eax
lea eax, [ebp - 0x510]
push eax
call fcn.0043cc10
add esp, 0xc
test eax, eax
je 0x4238da
lea eax, [ebp - 0x510]
push str.error_C
push eax
call fcn.0043cc10
add eax, 7
push eax
lea eax, [ebp - 0x914]
push 0x401
push eax
call fcn.0043f2f3
add esp, 0x14
xor edi, edi
cmp byte [ebp - 0x914], 0
je 0x423883
cmp byte [ebp + edi - 0x914], 0x3a
je 0x423877
inc edi
cmp byte [ebp + edi - 0x914], 0
jne 0x423862
cmp edi, 0x401
jae 0x423d0f
lea eax, [ebp - 0x914]
mov byte [ebp + edi - 0x914], 0
push eax
call fcn.0044b487
imul edx, dword [esi + 8], 0x110
mov ecx, dword [esi + 0xc]
mov dword [edx + ecx + 8], eax
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov byte [ecx + eax + 0xc], 1
lea eax, [ebp - 0x912]
imul ecx, dword [esi + 8], 0x110
add eax, edi
push eax
mov eax, dword [esi + 0xc]
push 0x100
add ecx, 0xd
add eax, ecx
push eax
call fcn.0043f2f3
add esp, 0x10
lea eax, [ebp - 0x510]
push str.warning_C
push eax
call fcn.0043cc10
add esp, 8
test eax, eax
je 0x423965
xor edi, edi
cmp byte [ebp - 0x914], 0
je 0x423916
cmp byte [ebp + edi - 0x914], 0x3a
je 0x423916
inc edi
cmp byte [ebp + edi - 0x914], 0
jne 0x423901
lea eax, [ebp - 0x914]
push eax
call fcn.0044b487
imul edx, dword [esi + 8], 0x110
mov ecx, dword [esi + 0xc]
mov dword [edx + ecx + 8], eax
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov byte [ecx + eax + 0xc], 0
lea eax, [ebp - 0x912]
imul ecx, dword [esi + 8], 0x110
add eax, edi
push eax
mov eax, dword [esi + 0xc]
push 0x100
add ecx, 0xd
add eax, ecx
push eax
call fcn.0043f2f3
add esp, 0x10
mov edx, dword [esi + 8]
mov eax, dword [esi + 0xc]
imul ecx, edx, 0x110
cmp byte [ecx + eax + 0xd], 0
je 0x423a87
lea eax, [edx + 1]
mov dword [esi + 8], eax
jmp 0x423a81
lea eax, [ebp - 0x510]
push 0x4afd4c
push eax
call fcn.0043cc10
add esp, 8
test eax, eax
jne 0x423a03
lea eax, [ebp - 0x510]
push 0x4b046b
push eax
call fcn.0043cc10
add esp, 8
test eax, eax
jne 0x423a03
lea eax, [ebp - 0x510]
push 0x4b015e
push eax
call fcn.0043cc10
add esp, 8
test eax, eax
jne 0x423a03
lea eax, [ebp - 0x510]
push 0x4afe51
push eax
call fcn.0043cc10
add esp, 8
test eax, eax
jne 0x423a03
lea eax, [ebp - 0x510]
push str.error
push eax
call fcn.0043cc10
add esp, 8
test eax, eax
je 0x423a87
imul eax, dword [esi + 8], 0x110
push 0x110
push 0
add eax, dword [esi + 0xc]
push eax
call fcn.0043d400
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax], edi
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 8], 0
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov byte [ecx + eax + 0xc], 1
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 4], 0
lea eax, [ebp - 0x510]
imul ecx, dword [esi + 8], 0x110
push eax
mov eax, dword [esi + 0xc]
push 0x100
add ecx, 0xd
add eax, ecx
push eax
call fcn.0043f2f3
add esp, 0x18
inc dword [esi + 8]
inc dword [ebp - 0x3744]
lea ecx, [ebp - 0x510]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x423a90
sub ecx, edx
sub ebx, ecx
lea eax, [ebx - 2]
xor ebx, ebx
test eax, eax
cmovns ebx, eax
lea eax, [ebp - 0x50e]
add eax, ecx
push ebx
push eax
lea eax, [ebp - 0x510]
push eax
call fcn.0043ce80
add esp, 0xc
cmp dword [esi + 8], 0x3e6
jne 0x423b4d
mov eax, dword [esi + 0xc]
push 0x110
add eax, 0x42460
push 0
push eax
call fcn.0043d400
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov edi, dword [ebp - 0x3748]
push str.Maximum_number_of_errors_reached____Stop_logging
push 0x100
mov dword [ecx + eax], edi
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 8], 0
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov byte [ecx + eax + 0xc], 1
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 4], 0
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
add ecx, 0xd
add eax, ecx
push eax
call fcn.0043f2f3
add esp, 0x18
inc dword [esi + 8]
jmp 0x423b53
mov edi, dword [ebp - 0x3748]
push 0
lea eax, [ebp - 0x374c]
push eax
push 0
push 0
push 0
push dword [ebp - 0x3754]
call dword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
jne 0x423b7a
mov dword [ebp - 0x374c], eax
jmp 0x423b80
mov eax, dword [ebp - 0x374c]
test ebx, ebx
jne 0x423b88
test eax, eax
je 0x423b95
cmp dword [esi + 8], 0x3e8
jl 0x4236c5
push dword [ebp - 0x3754]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
call ebx
lea eax, [ebp - 0x3758]
push eax
push dword [ebp - 0x3768]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push dword [ebp - 0x3768]
call ebx
push dword [ebp - 0x3764]
call ebx
mov ebx, dword [ebp - 0x3744]
jmp 0x423c58
imul eax, dword [esi + 8], 0x110
push 0x110
push 0
mov dword [ebp - 0x3758], 0xffffffff
add eax, dword [esi + 0xc]
push eax
call fcn.0043d400
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
push str.Unable_to_start_compiler___
push 0x100
mov dword [ecx + eax], edi
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 8], 0
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov byte [ecx + eax + 0xc], 1
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
mov dword [ecx + eax + 4], 0
imul ecx, dword [esi + 8], 0x110
mov eax, dword [esi + 0xc]
add ecx, 0xd
add eax, ecx
push eax
call fcn.0043f2f3
inc dword [esi + 8]
add esp, 0x18
inc ebx
cmp dword [ebp - 0x3758], 0
jne 0x423cbe
test ebx, ebx
jne 0x423cbe
cmp byte [esi + 5], bl
jne 0x423cc5
push edi
lea eax, [ebp - 0x10c]
push eax
push str._sIsiPlc.dll
lea eax, [ebp - 0xf34]
push 0x105
push eax
call fcn.004038d0
push edi
push 0x47ced4
push str._sBlocDllBLOC_04u.DLL
lea eax, [ebp - 0xa1c]
push 0x105
push eax
call fcn.004038d0
add esp, 0x28
lea eax, [ebp - 0xa1c]
push ebx
push eax
lea eax, [ebp - 0xf34]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
jmp 0x423cc5
mov byte [ebp - 0x3739], 0
cmp dword [esi], 0xffffffff
jne 0x423cdd
inc edi
mov dword [ebp - 0x3748], edi
cmp edi, 0xdc
jl 0x4231c0
push str.Cleaning_working_directory...
call fcn.00439820
lea eax, [ebp - 0x10c]
push 1
push eax
call fcn.00414c90
mov ecx, dword [ebp - 4]
add esp, 0xc
mov al, byte [ebp - 0x3739]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.0043b572
mov esp, ebp
pop ebp
ret
call fcn.0043b497
int3