Function at 0x40ab30
Capabilities:
Check if file exists
Delete file
Get file attributes
Set current directory
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x41398c]
xor eax, ebp
mov dword [ebp - 4], eax
push str.Starting_service...
push 0x467
push str......_appsprunsrvprunsrv.c
push 1
push 1
push 0
call fcn.00404a50
mov eax, dword [0x415c20]
add esp, 0x18
test eax, eax
je 0x40ab9b
cmp eax, 0xffffffff
je 0x40ab9b
push str.Worker_is_not_defined
push 0x46a
push str......_appsprunsrvprunsrv.c
push 1
push 1
push 0
call fcn.00404a50
add esp, 0x18
mov eax, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040c2f4
mov esp, ebp
pop ebp
ret
mov eax, dword [0x413920]
test eax, eax
je 0x40ac1e
cmp word [eax], 0
je 0x40ac1e
mov ecx, dword [0x415c40]
push 0
push 0
push 0
push eax
mov eax, dword [0x413890]
push eax
push ecx
call fcn.00404820
add esp, 0x18
push eax
mov dword [0x415c98], eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40ac1e
mov edx, dword [0x415c98]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x40ac1e
mov eax, dword [0x415c98]
push eax
push str.Pid_file__S_exists
push 0x473
push str......_appsprunsrvprunsrv.c
push 1
push 3
push 0
call fcn.00404a50
add esp, 0x1c
mov eax, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040c2f4
mov esp, ebp
pop ebp
ret
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
push edi
lea ecx, [ebp - 0x34]
push ecx
call esi
cmp dword [0x415c54], 0
je 0x40ae20
mov eax, dword [0x413818]
test eax, eax
je 0x40ac48
cmp word [eax], 0
jne 0x40ac52
mov eax, dword [0x415c44]
mov dword [0x413818], eax
test eax, eax
je 0x40ac63
cmp word [eax], 0
je 0x40ac63
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov eax, dword [0x413698]
test eax, eax
je 0x40ac82
cmp word [eax], 0
je 0x40ac82
mov edx, dword [0x415c40]
push eax
push edx
call fcn.004087a0
add esp, 8
call fcn.00409360
mov eax, dword [0x415c64]
mov ecx, dword [0x415c40]
push eax
push ecx
call fcn.00402a10
add esp, 8
mov dword [0x415c20], eax
test eax, eax
je 0x40adf8
cmp eax, 0xffffffff
je 0x40adf8
mov edx, dword [0x415c6c]
mov ecx, dword [0x413714]
mov dword [0x415be8], eax
mov eax, dword [0x415c68]
mov dword [0x415bec], edx
mov edx, dword [0x41372c]
mov dword [0x415bf0], eax
mov eax, dword [0x413744]
mov dword [0x415bf4], ecx
mov ecx, dword [0x41390c]
mov dword [0x415bf8], edx
mov edx, dword [0x415c80]
mov dword [0x415bfc], eax
mov eax, dword [0x415c78]
mov dword [0x415c00], ecx
mov ecx, dword [0x415c70]
mov dword [0x415c04], edx
mov edx, dword [0x415bdc]
mov dword [0x415c08], eax
mov eax, dword [0x415bd8]
mov dword [0x415c0c], ecx
mov ecx, dword [0x413698]
push 0x40a370
mov dword [0x415c14], edx
mov dword [0x415c18], eax
mov dword [0x415c1c], ecx
call fcn.0040c375
push 0x415be8
call fcn.00404560
add esp, 8
test eax, eax
jne 0x40ad6c
push str.Failed_to_start_Java
lea esi, [eax + 4]
push 0x49f
jmp 0x40afc7
mov edx, dword [0x415c80]
push edx
push str.Java_started__s
push 0x4a2
push str......_appsprunsrvprunsrv.c
push 1
push 0
push 0
call fcn.00404a50
add esp, 0x1c
mov eax, dword [0x415c98]
test eax, eax
je 0x40b061
push 0
push 0x4000080
push 1
push 0
push 1
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [0x415c94], eax
cmp eax, 0xffffffff
je 0x40b061
cmp dword [0x415c54], 0
mov dword [ebp - 0x2c], 0
je 0x40b00d
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push str._d_r_n
lea edx, [ebp - 0x24]
push 0x20
push edx
call dword [sym.imp.msvcrt.dll__snprintf]
add esp, 0x10
jmp 0x40b02d
mov eax, dword [0x415c64]
push eax
push str.Failed_creating_java__S
push 0x48a
push str......_appsprunsrvprunsrv.c
push 1
push 3
push 0
call fcn.00404a50
add esp, 0x1c
jmp 0x40b11c
mov eax, dword [0x413800]
test eax, eax
je 0x40b0d4
cmp word [eax], 0
je 0x40b0d4
mov eax, dword [0x413698]
test eax, eax
je 0x40ae56
cmp word [eax], 0
je 0x40ae56
mov ecx, dword [0x415c40]
push eax
push ecx
call fcn.004087a0
add esp, 8
call fcn.00409360
mov edx, dword [0x413680]
mov eax, dword [0x413668]
mov ecx, dword [0x415c40]
push 0
push edx
push eax
push 0x40a2e0
push 0
push ecx
call fcn.004074f0
add esp, 0x18
mov dword [0x415c20], eax
test eax, eax
je 0x40b0b5
cmp eax, 0xffffffff
je 0x40b0b5
mov edx, dword [0x413800]
push edx
push eax
call fcn.004078f0
add esp, 8
test eax, eax
jne 0x40aed7
mov eax, dword [0x413800]
push eax
push str.Failed_setting_process_executable__S
push 0x4be
push str......_appsprunsrvprunsrv.c
push 1
push 3
push 0
call fcn.00404a50
add esp, 0x1c
mov esi, 2
jmp 0x40afda
cmp dword [0x415c5c], 0
mov edx, dword [0x413848]
lea ecx, [ebp - 0x28]
push ecx
push edx
je 0x40af23
mov eax, dword [0x413744]
mov ecx, dword [0x41372c]
mov edx, dword [0x413714]
push eax
mov eax, dword [0x4136e0]
push ecx
mov ecx, dword [0x413830]
push edx
mov edx, dword [0x4136f8]
push eax
mov eax, dword [0x415c40]
push ecx
push edx
push eax
call fcn.00403500
add esp, 0x24
jmp 0x40af31
mov eax, dword [0x415c40]
push eax
call fcn.00408ae0
add esp, 0xc
mov ecx, dword [ebp - 0x28]
mov edx, dword [0x413800]
push ecx
mov edi, eax
mov eax, dword [0x415c20]
push edi
push edx
push eax
call fcn.00407aa0
add esp, 0x10
test eax, eax
jne 0x40af74
push edi
push str.Failed_setting_process_arguments__argc_d_
lea esi, [eax + 3]
push 0x4d1
push str......_appsprunsrvprunsrv.c
push 1
push 3
push 0
call fcn.00404a50
add esp, 0x1c
jmp 0x40afda
mov ecx, dword [0x413818]
mov edx, dword [0x415c20]
push ecx
push edx
call fcn.00407940
add esp, 8
test eax, eax
jne 0x40afa3
lea esi, [eax + 4]
mov eax, dword [0x413818]
push eax
push str.Failed_setting_process_working_path_to__S
push 0x4d8
jmp 0x40af5f
mov ecx, dword [0x415c20]
push ecx
call fcn.004076a0
add esp, 4
test eax, eax
jne 0x40ad90
push str.Failed_to_execute_process
lea esi, [eax + 5]
push 0x4e0
push str......_appsprunsrvprunsrv.c
push 1
push 3
push 0
call fcn.00404a50
add esp, 0x18
mov eax, dword [0x415c20]
test eax, eax
je 0x40aff1
cmp eax, 0xffffffff
je 0x40aff1
push eax
call fcn.00401df0
add esp, 4
pop edi
mov eax, esi
mov dword [0x415c20], 0
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040c2f4
mov esp, ebp
pop ebp
ret
mov eax, dword [0x415c20]
push eax
call fcn.004079f0
push eax
push str._d_r_n
lea ecx, [ebp - 0x24]
push 0x20
push ecx
call dword [sym.imp.msvcrt.dll__snprintf]
add esp, 0x14
lea eax, [ebp - 0x24]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40b033
mov ecx, dword [0x415c94]
sub eax, edx
push 0
lea edx, [ebp - 0x2c]
push edx
push eax
lea eax, [ebp - 0x24]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov edx, dword [0x415c98]
push edx
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
lea eax, [ebp - 0x3c]
push eax
call esi
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
push 0
sub eax, edx
push 0x2710
sbb ecx, esi
push ecx
push eax
call fcn.0040c400
push eax
push str.Service_started_in__d_ms.
push 0x504
push str......_appsprunsrvprunsrv.c
push 1
push 1
push 0
call fcn.00404a50
add esp, 0x1c
pop edi
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040c2f4
mov esp, ebp
pop ebp
ret
push str.Failed_to_create_process
push 0x4ba
push str......_appsprunsrvprunsrv.c
push 1
push 3
push 0
call fcn.00404a50
add esp, 0x18
jmp 0x40b11c
push str.Missing_service_ImageFile
push 0x4a6
push str......_appsprunsrvprunsrv.c
push 1
push 3
push 0
call fcn.00404a50
add esp, 0x18
cmp dword [0x415c50], 0
jne 0x40b11c
mov eax, dword [0x415c48]
test eax, eax
jne 0x40b108
mov eax, str.unknown
push eax
push str.Service__S_is_missing_the_ImageFile
push 0
push 0
push 0
call fcn.00404f20
add esp, 0x14
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
mov eax, 1
pop esi
call fcn.0040c2f4
mov esp, ebp
pop ebp
ret