Function at 0x40b360
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x4010
call fcn.0040c310
mov eax, dword [0x41398c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push str.Inside_ServiceMain...
push 0x55e
xor esi, esi
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
mov dword [ebp - 0x400c], esi
mov dword [0x415c24], 0x10
mov dword [0x415c28], 2
mov dword [0x415c2c], 4
mov dword [0x415c30], esi
mov dword [0x415c38], esi
mov dword [0x415c3c], esi
mov dword [0x415c34], esi
call fcn.00404a50
mov eax, dword [0x415c48]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
add esp, 0x18
cmp eax, esi
je 0x40b4cf
cmp word [eax], si
je 0x40b4cf
call fcn.00408e60
push str.Global_
mov dword [ebp - 0x4008], eax
lea eax, [ebp - 0x4004]
push 0x400
push eax
call fcn.00405640
mov ecx, dword [0x415c48]
push ecx
lea edx, [ebp - 0x4004]
push 0x400
push edx
call fcn.00405590
mov eax, dword [str.SIGNAL]
push eax
lea ecx, [ebp - 0x4004]
push 0x400
push ecx
call fcn.00405590
add esp, 0x24
lea edx, [ebp - 0x4004]
push edx
lea edi, [esi + 7]
call ebx
cmp eax, edi
jle 0x40b487
movzx eax, word [ebp + edi*2 - 0x4004]
cmp ax, 0x20
jne 0x40b467
mov eax, 0x5f
jmp 0x40b471
push eax
call dword [sym.imp.msvcrt.dll_towupper]
add esp, 4
lea ecx, [ebp - 0x4004]
mov word [ebp + edi*2 - 0x4004], ax
push ecx
inc edi
call ebx
cmp edi, eax
jl 0x40b452
mov edi, dword [ebp - 0x4008]
lea edx, [ebp - 0x4004]
push edx
push esi
push 1
push edi
call dword [sym.imp.KERNEL32.dll_CreateEventW]
push edi
mov dword [0x415c8c], eax
call fcn.00408ee0
add esp, 4
cmp dword [0x415c8c], esi
je 0x40b4cf
lea eax, [ebp - 0x4010]
push eax
push esi
push esi
push 0x408f00
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [0x415c90], eax
mov eax, dword [0x413878]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
cmp eax, esi
je 0x40b545
cmp word [eax], si
je 0x40b545
mov ecx, dword [0x413510]
push ecx
push eax
call ebx
test eax, eax
jne 0x40b5aa
mov eax, dword [0x413830]
mov dword [0x415c54], 1
cmp eax, esi
je 0x40b527
cmp word [eax], si
je 0x40b527
push eax
call fcn.00408880
push 0x2f
push 0x2e
push eax
mov dword [0x415c80], eax
call fcn.00408bf0
add esp, 0x10
jmp 0x40b539
push str.Main
call fcn.00408880
add esp, 4
mov dword [0x415c80], eax
mov edx, dword [0x413848]
mov dword [0x415c70], edx
mov eax, dword [0x4137d0]
cmp eax, esi
je 0x40b6e8
cmp word [eax], si
je 0x40b6e8
mov ecx, dword [0x413510]
push ecx
push eax
call ebx
test eax, eax
jne 0x40ba95
mov eax, dword [0x413788]
mov dword [0x415c58], 1
cmp eax, esi
je 0x40b6ca
cmp word [eax], si
je 0x40b6ca
push eax
call fcn.00408880
push 0x2f
push 0x2e
push eax
mov dword [0x415c84], eax
call fcn.00408bf0
add esp, 0x10
jmp 0x40b6dc
mov eax, dword [str.java]
mov ecx, dword [0x413878]
push eax
push ecx
call ebx
test eax, eax
jne 0x40b545
mov edi, dword [0x4136b0]
cmp edi, esi
jne 0x40b5d1
mov edx, dword [0x415c40]
push esi
push edx
jmp 0x40b5fe
mov eax, dword [0x413514]
push eax
push edi
call ebx
test eax, eax
jne 0x40b5e8
mov ecx, dword [0x415c40]
push esi
push ecx
jmp 0x40b5fe
mov edx, dword [0x413518]
push edx
push edi
call ebx
test eax, eax
jne 0x40b608
mov eax, dword [0x415c40]
push 1
push eax
call fcn.004067b0
add esp, 8
mov edi, eax
cmp edi, esi
je 0x40b6a9
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edx, dword [0x415c40]
lea ecx, [eax + eax + 0x20]
push ecx
push edx
call fcn.00401ac0
add esp, 8
mov ebx, eax
push edi
push ebx
mov dword [ebp - 0x4008], ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov eax, dword [str._binjava.exe]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
cmp dword [0x413818], esi
jne 0x40b68e
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edx, dword [0x415c40]
lea ecx, [eax + eax + 0x10]
push ecx
push edx
call fcn.00401ac0
add esp, 8
mov ebx, eax
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov eax, dword [str._bin]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov dword [0x413818], ebx
mov ebx, dword [ebp - 0x4008]
mov dword [0x413800], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
mov dword [0x415c5c], 1
jmp 0x40b545
push str.Unable_to_find_Java_Runtime_Environment.
push 0x59d
push str......_appsprunsrvprunsrv.c
push 1
push 3
push esi
call fcn.00404a50
add esp, 0x18
jmp 0x40bcbd
push str.Main
call fcn.00408880
add esp, 4
mov dword [0x415c84], eax
mov edx, dword [0x4137a0]
mov dword [0x415c74], edx
cmp dword [0x415c58], esi
jne 0x40b6fc
cmp dword [0x415c54], esi
je 0x40b78f
mov eax, dword [0x4136c8]
cmp eax, esi
je 0x40b728
cmp word [eax], si
je 0x40b728
mov ecx, dword [str.auto]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x40b728
mov edx, dword [0x4136c8]
mov dword [0x415c64], edx
mov eax, dword [0x4136f8]
cmp eax, esi
je 0x40b744
cmp word [eax], si
je 0x40b744
push eax
call fcn.00408880
add esp, 4
mov dword [0x415c6c], eax
mov eax, dword [0x413860]
cmp eax, esi
je 0x40b760
cmp word [eax], si
je 0x40b760
push eax
call fcn.00408880
add esp, 4
mov dword [0x415c78], eax
mov eax, dword [0x4137b8]
cmp eax, esi
je 0x40b77c
cmp word [eax], si
je 0x40b77c
push eax
call fcn.00408880
add esp, 4
mov dword [0x415c7c], eax
mov eax, dword [0x4136e0]
push eax
call fcn.004088e0
add esp, 4
mov dword [0x415c68], eax
cmp dword [0x415c50], esi
je 0x40b7ee
mov ecx, dword [0x415c48]
push 0x40b140
push ecx
call dword [sym.imp.ADVAPI32.dll_RegisterServiceCtrlHandlerW]
mov dword [0x415c4c], eax
cmp eax, esi
je 0x40bba1
cmp eax, 0xffffffff
je 0x40bba1
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_AttachConsole]
test eax, eax
jne 0x40b7ee
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 6
jne 0x40b7ee
call dword [sym.imp.KERNEL32.dll_AllocConsole]
call dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
cmp eax, esi
je 0x40b7ee
push esi
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
push 0xbb8
push esi
push 2
push str.reportServiceStatusE:__d___d___d___d
push 0x34c
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
add esp, 0x28
cmp dword [0x415c50], esi
je 0x40b886
mov ecx, dword [0x415c4c]
cmp ecx, esi
je 0x40b886
mov eax, dword [0x41395c]
mov dword [0x415c38], eax
push 0x415c24
inc eax
push ecx
mov dword [0x415c2c], esi
mov dword [0x415c28], 2
mov dword [0x415c30], esi
mov dword [0x415c3c], 0xbb8
mov dword [0x415c34], esi
mov dword [0x41395c], eax
call dword [sym.imp.ADVAPI32.dll_SetServiceStatus]
test eax, eax
jne 0x40b886
push str.Failed_to_set_service_status
push 0x362
push str......_appsprunsrvprunsrv.c
push 1
push 3
push esi
call fcn.00404a50
add esp, 0x18
call fcn.0040ab30
mov dword [ebp - 0x400c], eax
cmp eax, esi
jne 0x40bca0
xor edi, edi
push esi
xor ebx, ebx
lea eax, [edi + 4]
call fcn.0040a120
push str.Waiting_for_worker_to_finish...
push 0x5f8
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
add esp, 0x1c
push 1
push 0x40b270
call dword [sym.imp.KERNEL32.dll_SetConsoleCtrlHandler]
mov eax, dword [0x415c20]
push esi
push 0xffffffffffffffff
push eax
call fcn.00402060
push str.Worker_finished.
push 0x5fd
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
add esp, 0x24
cmp dword [0x415c88], esi
je 0x40bbb7
push str.Waiting_for_ShutdownEvent
push 0x606
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
push esi
mov ebx, 0xea60
push ebx
push esi
mov edi, 3
push edi
push str.reportServiceStatusE:__d___d___d___d
push 0x34c
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
add esp, 0x40
cmp dword [0x415c50], esi
je 0x40b9af
mov ecx, dword [0x415c4c]
cmp ecx, esi
je 0x40b9af
mov eax, dword [0x41395c]
mov dword [0x415c38], eax
push 0x415c24
inc eax
push ecx
mov dword [0x415c2c], esi
mov dword [0x415c28], edi
mov dword [0x415c30], esi
mov dword [0x415c3c], ebx
mov dword [0x415c34], esi
mov dword [0x41395c], eax
call dword [sym.imp.ADVAPI32.dll_SetServiceStatus]
test eax, eax
jne 0x40b9af
push str.Failed_to_set_service_status
push 0x362
push str......_appsprunsrvprunsrv.c
push 1
push edi
push esi
call fcn.00404a50
add esp, 0x18
mov ecx, dword [0x415c88]
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push str.ShutdownEvent_signaled
push 0x609
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
mov edx, dword [0x415c88]
add esp, 0x18
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push str.Waiting_1_minute_for_all_threads_to_exit
push 0x60e
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
push esi
push ebx
push esi
push edi
push str.reportServiceStatusE:__d___d___d___d
push 0x34c
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
add esp, 0x40
cmp dword [0x415c50], esi
je 0x40ba87
mov ecx, dword [0x415c4c]
cmp ecx, esi
je 0x40ba87
mov eax, dword [0x41395c]
mov dword [0x415c38], eax
push 0x415c24
inc eax
push ecx
mov dword [0x415c2c], esi
mov dword [0x415c28], edi
mov dword [0x415c30], esi
mov dword [0x415c3c], ebx
mov dword [0x415c34], esi
mov dword [0x41395c], eax
call dword [sym.imp.ADVAPI32.dll_SetServiceStatus]
test eax, eax
jne 0x40ba87
push str.Failed_to_set_service_status
push 0x362
push str......_appsprunsrvprunsrv.c
push 1
push edi
push esi
call fcn.00404a50
add esp, 0x18
push ebx
call fcn.00402b60
add esp, 4
jmp 0x40bc66
mov eax, dword [str.java]
mov ecx, dword [0x4137d0]
push eax
push ecx
call ebx
test eax, eax
jne 0x40b6e8
mov edi, dword [0x4136b0]
cmp edi, esi
jne 0x40bac0
mov edx, dword [0x415c40]
push esi
push edx
jmp 0x40baed
mov eax, dword [0x413514]
push eax
push edi
call ebx
test eax, eax
jne 0x40bad7
mov ecx, dword [0x415c40]
push esi
push ecx
jmp 0x40baed
mov edx, dword [0x413518]
push edx
push edi
call ebx
test eax, eax
jne 0x40baf7
mov eax, dword [0x415c40]
push 1
push eax
call fcn.004067b0
add esp, 8
mov edi, eax
cmp edi, esi
je 0x40bb92
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edx, dword [0x415c40]
lea ecx, [eax + eax + 0x20]
push ecx
push edx
call fcn.00401ac0
add esp, 8
mov ebx, eax
push edi
push ebx
mov dword [ebp - 0x4008], ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov eax, dword [str._binjava.exe]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
cmp dword [0x413770], esi
jne 0x40bb7d
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edx, dword [0x415c40]
lea ecx, [eax + eax + 0x10]
push ecx
push edx
call fcn.00401ac0
add esp, 8
mov ebx, eax
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov eax, dword [str._bin]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov dword [0x413770], ebx
mov ebx, dword [ebp - 0x4008]
mov dword [0x415c60], 1
mov dword [0x413758], ebx
jmp 0x40b6e8
push str.Unable_to_find_Java_Runtime_Environment.
push 0x5cc
jmp 0x40b6b3
mov edx, dword [0x415c48]
push edx
push str.Failed_to_register_Service_Control_for__S
push 0x5e7
jmp 0x40bcab
push str.Waiting_for_all_threads_to_exit
push 0x617
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
push 0xffffffffffffffff
call fcn.00402b60
push esi
push esi
push esi
push 3
push str.reportServiceStatusE:__d___d___d___d
push 0x34c
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
add esp, 0x44
cmp dword [0x415c50], esi
je 0x40bc66
mov ecx, dword [0x415c4c]
cmp ecx, esi
je 0x40bc66
mov eax, dword [0x41395c]
mov dword [0x415c38], eax
push 0x415c24
inc eax
push ecx
mov dword [0x415c2c], esi
mov dword [0x415c28], 3
mov dword [0x415c30], esi
mov dword [0x415c3c], esi
mov dword [0x415c34], esi
mov dword [0x41395c], eax
call dword [sym.imp.ADVAPI32.dll_SetServiceStatus]
test eax, eax
jne 0x40bc66
push str.Failed_to_set_service_status
push 0x362
push str......_appsprunsrvprunsrv.c
push 1
push 3
push esi
call fcn.00404a50
add esp, 0x18
push str.JVM_destroyed.
push 0x61b
push str......_appsprunsrvprunsrv.c
push 1
push esi
push esi
call fcn.00404a50
add esp, 0x18
call fcn.00404290
mov ebx, eax
call fcn.0040a200
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040c2f4
mov esp, ebp
pop ebp
ret 8
push eax
push str.ServiceStart_returned__d
push 0x600
push str......_appsprunsrvprunsrv.c
push 1
push 3
push esi
call fcn.00404a50
add esp, 0x1c
mov ebx, dword [ebp - 0x400c]
call fcn.0040a200
mov ecx, dword [ebp - 4]
pop edi
pop esi
mov dword [0x415bd0], ebx
xor ecx, ebp
pop ebx
call fcn.0040c2f4
mov esp, ebp
pop ebp
ret 8