Function at 0x449820
Capabilities:
Create service
Delete service
Query service status
Start service
Stop service

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa2c
mov eax, dword [0x48e4f0]
xor eax, esp
mov dword [esp + 0xa28], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
mov al, byte [edi]
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], esi
cmp al, 0x2f
je 0x44985e
cmp al, 0x2d
jne 0x4498f2
inc edi
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x449864
sub eax, edx
cmp eax, 6
jb 0x4498b4
push 6
push str.compat
push edi
call fcn.0045ad0d
add esp, 0xc
test eax, eax
jne 0x4498b4
add edi, 6
cmp byte [edi], 0x20
jne 0x449896
mov edi, edi
inc edi
cmp byte [edi], 0x20
je 0x449890
mov ecx, edi
call fcn.0044a550
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
mov ecx, str.install
mov eax, edi
jmp 0x4498c0
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4498e0
test dl, dl
je 0x4498dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4498e0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4498c0
xor eax, eax
jmp 0x4498e5
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x44992a
mov esi, 1
mov dword [esp + 0xc], esi
call fcn.00449370
cmp esi, 6
jne 0x449b35
add edi, 0xa
push edi
call fcn.0045ade3
add esp, 4
mov ecx, eax
call fcn.0044a3c0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
mov ecx, str.uninstall
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x449951
test dl, dl
je 0x44994d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x449951
add eax, 2
add ecx, 2
test dl, dl
jne 0x449931
xor eax, eax
jmp 0x449956
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x449961
mov esi, 2
jmp 0x4498ee
mov ecx, str.start
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x449988
test dl, dl
je 0x449984
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x449988
add eax, 2
add ecx, 2
test dl, dl
jne 0x449968
xor eax, eax
jmp 0x44998d
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x44999b
mov esi, 3
jmp 0x4498ee
mov ecx, str.stop
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4499c2
test dl, dl
je 0x4499be
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4499c2
add eax, 2
add ecx, 2
test dl, dl
jne 0x4499a2
xor eax, eax
jmp 0x4499c7
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4499d5
mov esi, 4
jmp 0x4498ee
mov ecx, str.install_auto
mov eax, edi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x449a00
test dl, dl
je 0x4499fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x449a00
add eax, 2
add ecx, 2
test dl, dl
jne 0x4499e0
xor eax, eax
jmp 0x449a05
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x449a13
mov esi, 5
jmp 0x4498ee
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x449a18
sub eax, edx
cmp eax, 0xa
jb 0x449a42
push 0xa
push str.adminport
push edi
call fcn.0045ad0d
add esp, 0xc
test eax, eax
jne 0x449a42
lea esi, [eax + 6]
jmp 0x4498ee
mov ecx, str.reload_config
mov eax, edi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x449a70
test dl, dl
je 0x449a6c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x449a70
add eax, 2
add ecx, 2
test dl, dl
jne 0x449a50
xor eax, eax
jmp 0x449a75
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x449a83
mov esi, 7
jmp 0x4498ee
push 0xc
push str.servicename
push edi
call fcn.0045ad0d
add esp, 0xc
test eax, eax
jne 0x449ada
add edi, 0xc
push edi
lea eax, [esp + 0x1c]
push eax
call fcn.00420c00
cmp dword [eax + 0x14], 8
jb 0x449aad
mov eax, dword [eax]
push eax
call fcn.004494e0
add esp, 4
lea ecx, [esp + 0x18]
mov esi, eax
call fcn.004044f0
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
push 0x13
push str.servicedisplayname
push edi
call fcn.0045ad0d
add esp, 0xc
test eax, eax
jne 0x4498f2
add edi, 0x13
push edi
lea ecx, [esp + 0x1c]
push ecx
call fcn.00420c00
cmp dword [eax + 0x14], 8
jb 0x449b08
mov eax, dword [eax]
push eax
call fcn.00449680
add esp, 4
lea ecx, [esp + 0x18]
mov esi, eax
call fcn.004044f0
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
cmp esi, 7
jne 0x449b56
call fcn.0044a4d0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
push 1
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov esi, eax
cmp esi, ebx
mov ebx, dword [sym.imp.USER32.dll_MessageBoxW]
je 0x449cf1
push accept
push str.FileZilla_Server
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
je 0x449c22
lea edx, [esp + 0x34]
push edx
push edi
mov dword [esp + 0x18], 1
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
je 0x449c1b
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], eax
cmp eax, 2
jne 0x449c1b
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call edi
push esi
call edi
lea eax, [esp + 0x18]
xor esi, esi
push eax
mov dword [esp + 0x1c], str.FileZilla_Server
mov dword [esp + 0x20], 0x449f20
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
call dword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherW]
test eax, eax
jne 0x449ef8
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [esp + 0x264]
push str.StartServiceCtrlDispatcher_failed_with_error__d
push ecx
call fcn.0045a4b8
add esp, 0xc
push esi
push 0x484f90
lea edx, [esp + 0x268]
push edx
push esi
call ebx
jmp 0x449ef8
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
cmp dword [esp + 0x10], 0
jne 0x449d8d
mov eax, dword [esp + 0xc]
cmp eax, 1
je 0x449c62
cmp eax, 5
je 0x449c62
test eax, eax
jne 0x449ef8
push 0x24
push 0x484fcc
push 0x484fe0
push eax
call ebx
cmp eax, 6
jne 0x449ef8
push 2
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov esi, eax
test esi, esi
je 0x449cd5
mov eax, dword [esp + 0xc]
xor ecx, ecx
cmp eax, 5
setne cl
lea edi, [ecx + 2]
test eax, eax
jne 0x449c9e
push 0x24
push 0x484fcc
push str.R_T
push eax
call ebx
cmp eax, 6
jne 0x449c9e
lea edi, [eax - 4]
push 0x104
lea eax, [esp + 0x56]
push eax
mov edx, 0x22
push 0
mov word [esp + 0x5c], dx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x449d1f
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push 0x10
push 0x48502c
push str.Failed_to_get_own_executable_path
push 0
call ebx
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x78
jne 0x449c34
lea ecx, [edi - 1]
call fcn.0044a550
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
xor edx, edx
push edx
push edx
push edx
push edx
push edx
mov ecx, 0x22
mov word [esp + eax*2 + 0x66], cx
mov word [esp + eax*2 + 0x68], dx
lea eax, [esp + 0x64]
push eax
push 1
push edi
push 0x110
push 0xf01ff
push 0x48fc28
push str.FileZilla_Server
push esi
call dword [sym.imp.ADVAPI32.dll_CreateServiceW]
test eax, eax
jne 0x449d7f
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push eax
call edi
push esi
call edi
jmp 0x449d98
cmp dword [esp + 0x14], 1
jne 0x449e85
mov eax, dword [esp + 0xc]
cmp eax, 3
je 0x449db9
test eax, eax
jne 0x449e1c
push 0x24
push 0x484fcc
push 0x4850a4
push eax
call ebx
cmp eax, 6
jne 0x449e26
push 0xf003f
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov edi, eax
test edi, edi
je 0x449cd5
push 0xf01ff
push str.FileZilla_Server
push edi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov esi, eax
test esi, esi
jne 0x449e0c
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa28]
xor ecx, esp
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10
push 0
push 0
push esi
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
jmp 0x449eec
cmp eax, 2
je 0x449e3f
jmp 0x449ef8
push 0x24
push 0x484fcc
push 0x4850c0
push 0
call ebx
cmp eax, 6
jne 0x449ef8
push 2
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov esi, eax
test esi, esi
je 0x449cd5
push 0xf01ff
push str.FileZilla_Server
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
je 0x449d5c
push edi
call dword [sym.imp.ADVAPI32.dll_DeleteService]
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call edi
push esi
call edi
jmp 0x449ef8
mov eax, dword [esp + 0xc]
cmp eax, 4
je 0x449eaa
test eax, eax
jne 0x449ef8
push 0x24
push 0x484fcc
push str.Pbk_rg
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
jne 0x449ef8
push 0xf003f
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov edi, eax
test edi, edi
je 0x449cd5
push 0xf01ff
push str.FileZilla_Server
push edi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov esi, eax
test esi, esi
je 0x449de9
lea ecx, [esp + 0x34]
push ecx
push 1
push esi
call dword [sym.imp.ADVAPI32.dll_ControlService]
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call esi
push edi
call esi
mov ecx, dword [esp + 0xa34]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.004593ed
mov esp, ebp
pop ebp
ret 0x10