Function at 0x10031ce1
Capabilities:
Start service

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10063ecf
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xd0
and dword [esp + 0x20], 0
push ebx
push esi
push edi
push 2
mov edi, ecx
mov dword [esp + 0x10], 0xfffffff8
pop ebx
mov esi, edx
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 0x10], 0x445acee6
lea ecx, [esp + 0x84]
push ebx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], edi
call fcn.10004f00
and dword [esp + 0xe4], 0
mov dword [esp + 0xc], 0
jmp 0x10031d63
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x84]
and dword [eax + ecx*4], 0
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x10031d50
mov dword [esp + 0xc], 0x10
jmp 0x10031e00
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], 0xfffffffe
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x18]
je 0x10031d9c
cmp dword [esp + 0x18], 0
je 0x10031d9c
xor edx, edx
inc edx
jmp 0x10031d9e
xor edx, edx
mov eax, dword [esp + 0xc]
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
cmp ecx, 1
sbb eax, eax
neg eax
sub edx, eax
jne 0x10031dbe
cmp dword [esp + 0x1c], edx
jne 0x10031dbe
inc edx
jmp 0x10031dc0
xor edx, edx
mov eax, dword [esp + 0x1c]
xor ecx, ecx
cmp edx, eax
sete cl
xor eax, eax
imul ecx, dword [esp + 0x1c]
cmp ecx, 0xfffffff7
setge al
xor ecx, ecx
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x10]
imul edx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp edx, eax
setne cl
mov dword [esp + 0x10], ecx
mov dword [esp + 0x10], 0xc299e885
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 0x1a
je 0x10031d76
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 1
jg 0x10031ec3
mov byte [esp + 0x17], 0
mov dword [esp + 0x24], 0x2eb6
cmp dword [esp + 0x24], 0x3017
jle 0x10031e7d
xor esi, esi
mov edi, esi
mov ebx, 0x7ac0
mov eax, edi
lea ecx, [esp + 0x90]
cdq
push edx
push eax
call fcn.10001a65
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10031e59
mov eax, dword [eax]
push eax
call fcn.1004a373
pop ecx
push 0
push 1
lea ecx, [esp + 0x98]
call fcn.10005270
dec edi
dec ebx
jne 0x10031e3e
inc esi
cmp esi, 0x240
jl 0x10031e37
cmp byte [esp + 0x17], 0
je 0x10031e8c
push 0
call dword [sym.imp.COMDLG32.dll_GetOpenFileNameW]
cmp dword [esp + 0x24], 0x2b3e
jge 0x10031ea1
push str.oxsq_bhz_ookgflpwv_pba_lhozsli_nrhn_deywolgtf_iatb_cwyz_mabql_tdlx_hcpopl_pzrleeqd
call fcn.1004a373
pop ecx
and dword [esp + 0xe4], 0
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 1
jle 0x10031e1e
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
push 2
pop ebx
or dword [esp + 0xe4], 0xffffffff
lea ecx, [esp + 0x84]
call fcn.10004f62
call fcn.1002e82b
push ecx
push eax
lea ecx, [esp + 0x54]
call fcn.100323d3
mov dword [esp + 0xe4], 3
lea ecx, [esp + 0x6c]
mov dword [esp + 0x18], 0xbf8f0aa6
mov dword [esp + 0x10], 0x65720b96
push 1
call fcn.10004f00
xor edx, edx
mov dword [esp + 0xc], edx
jmp 0x10031f28
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x6c]
mov dword [eax + ecx*4], 0xd5befa1e
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 1
jl 0x10031f15
mov byte [esp + 0x17], dl
cmp byte [esp + 0x17], dl
je 0x10031f4c
push edx
push 0x5c0
push 0x2c
push 0x1ddd
call dword [sym.imp.GDI32.dll_GetCharABCWidthsFloatA]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
neg edx
sbb edx, edx
xor ecx, ecx
add edx, 0x3a266d22
cmp edx, eax
setl cl
mov dword [esp + 0x10], ecx
xor ecx, ecx
mov eax, dword [esp + 0x10]
cmp eax, 0x7d7c118
setl cl
sub ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp eax, ecx
setle dl
xor ecx, ecx
imul edx, dword [esp + 0x18]
imul edx, dword [esp + 0x18]
cmp edx, 0xf0a9b27f
setne cl
xor eax, eax
cmp ecx, 0xffffffff
setg al
cmp eax, 1
mov eax, dword [esp + 0x6c]
sbb ecx, ecx
inc ecx
mov dword [eax], ecx
lea ecx, [esp + 0x6c]
call fcn.10004f62
mov edx, dword [esp + 0x4c]
add esi, 0xffffd020
mov ecx, edx
mov eax, dword [edx + 4]
cmp byte [eax + 0xd], 0
jne 0x10031ff9
cmp dword [eax + 0x10], esi
jge 0x10031fdc
mov eax, dword [eax + 8]
jmp 0x10031fe0
mov ecx, eax
mov eax, dword [eax]
cmp byte [eax + 0xd], 0
je 0x10031fd2
cmp ecx, edx
je 0x10031ff9
cmp esi, dword [ecx + 0x10]
jl 0x10031ff9
mov dword [esp + 0x48], ecx
lea esi, [esp + 0x48]
jmp 0x10032001
mov dword [esp + 0x40], edx
lea esi, [esp + 0x40]
mov esi, dword [esi]
lea ecx, [esp + 0x54]
mov dword [esp + 0xc], 0x81c
mov dword [esp + 0x1c], 0xfffffff7
push ebx
call fcn.10004f00
push 1
lea ecx, [esp + 0x64]
mov byte [esp + 0xe8], 4
call fcn.10004f00
xor edx, edx
mov dword [esp + 0x20], 0xfffffff8
mov dword [esp + 0x30], edx
mov dword [esp + 0x10], edx
jmp 0x10032057
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x54]
mov dword [eax + ecx*4], 9
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x10032044
mov dword [esp + 0x10], edx
jmp 0x10032072
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x60]
mov dword [eax + ecx*4], edx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 1
jl 0x10032063
cmp dword [esp + 0xc], edx
je 0x1003211b
mov eax, dword [esp + 0xc]
mov ecx, 0xffff
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, dword [esp + 0xc]
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
setle cl
mov dword [esp + 0x1c], ecx
xor ecx, ecx
mov eax, dword [esp + 0x1c]
cmp eax, 7
setge cl
xor edx, edx
cmp ecx, 0x4dbf0cf
setl dl
xor eax, eax
cmp edx, 0x162f6306
setne al
cmp eax, dword [esp + 0xc]
je 0x100320e5
cmp dword [esp + 0x1c], 0
je 0x100320e5
xor ecx, ecx
inc ecx
jmp 0x100320e7
xor ecx, ecx
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x54]
mov dword [eax], ecx
xor ecx, ecx
mov eax, dword [esp + 0xc]
test eax, eax
mov eax, dword [esp + 0xc]
setle cl
xor edx, edx
dec ecx
cmp ecx, eax
mov eax, dword [esp + 0x60]
setle dl
mov dword [eax], edx
test edx, edx
je 0x10032119
xor eax, eax
inc eax
xor edx, edx
jmp 0x1003211d
xor edx, edx
mov eax, edx
mov dword [esp + 0x20], eax
mov byte [esp + 0x17], dl
cmp byte [esp + 0x17], 0
je 0x10032139
push edx
push 0x2680
push edx
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
lea ecx, [esp + 0x60]
call fcn.10004f62
lea ecx, [esp + 0x54]
mov byte [esp + 0xe4], 3
call fcn.10004f62
mov eax, dword [0x100e2544]
test al, 1
jne 0x10032188
and dword [0x100e253c], 0
or eax, 1
mov dword [0x100e2544], eax
xor eax, eax
push 0x1006466b
mov dword [0x100e2540], 7
mov word [0x100e252c], ax
call fcn.1004a349
pop ecx
mov dword [esp + 0x10], 0xffffffff
xor ecx, ecx
mov dword [esp + 0x18], 5
xor edx, edx
mov dword [esp + 0x1c], 0x8951
inc edx
mov dword [esp + 0x30], 0xfffffff7
mov dword [esp + 0xc], ecx
jmp 0x100321bf
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x34], ecx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edx
jl 0x100321b3
mov dword [esp + 0xc], ecx
jmp 0x100321db
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x38], 0xd37ad43
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x100321cb
mov dword [esp + 0x10], 7
jmp 0x100322bb
mov dword [esp + 0xc], 9
mov dword [esp + 0x24], edx
mov dword [esp + 0x44], 0xfffffffc
mov dword [esp + 0x20], 0xfffffff9
mov dword [esp + 0x20], 0xfffffff9
mov dword [esp + 0x28], 0xa2b441a6
mov dword [esp + 0x20], ecx
mov dword [esp + 0xc], ecx
jmp 0x10032230
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x78], edx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x10032224
mov eax, dword [esp + 0x34]
xor edx, edx
mov dword [esp + 0x38], eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0x1c]
inc dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
cmp eax, ecx
setne dl
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x38]
sub ecx, 0xfffd
neg ecx
sbb ecx, ecx
inc ecx
add eax, ecx
jne 0x10032295
mov eax, dword [esp + 0x38]
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
push 0
pop ecx
push 1
mov dword [esp + 0x7c], 0xd46d2320
inc dword [esp + 0x14]
pop edx
cmp dword [esp + 0x10], 0x15
jle 0x100321ee
cmp esi, dword [esp + 0x4c]
je 0x100322ec
push dword [esi + 0x18]
mov edx, dword [esi + 0x14]
lea ecx, [esp + 0xc4]
call fcn.100299c0
pop ecx
xor ebx, ebx
mov byte [esp + 0xe4], 5
inc ebx
jmp 0x10032308
push 0x100e252c
lea ecx, [esp + 0xac]
call fcn.10004d63
mov dword [esp + 0xe4], 6
push eax
mov ecx, edi
mov dword [esp + 0x30], ebx
call fcn.10004d63
or ebx, 4
test bl, 2
je 0x1003232f
push 0
push 1
lea ecx, [esp + 0xb0]
and ebx, 0xfffffffd
call fcn.100053e2
test bl, 1
je 0x10032344
push 0
push 1
lea ecx, [esp + 0xc8]
call fcn.100053e2
lea ecx, [esp + 0x4c]
call fcn.100323a1
mov ecx, dword [esp + 0xdc]
mov eax, edi
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret