Function at 0x1003472
Capabilities:
Decode data using base64 via winapi
Modify service

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x258
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
and dword [ebp - 0x258], 0
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
and dword [ebp - 0x208], 0
push ebx
mov ebx, dword [ebp + 0x18]
push esi
push edi
mov dword [ebp - 0x24c], eax
xor eax, eax
push 3
lea edi, [ebp - 0x254]
stosd dword es:[edi], eax
push edx
push ecx
mov dword [ebp - 0x240], ebx
stosd dword es:[edi], eax
lea esi, [ebp - 0x258]
mov dword [ebp - 0x21c], 1
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov dword [ebx], eax
test eax, eax
jne 0x10034f6
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1001530
call fcn.010030bb
mov dword [ebp - 0x208], eax
jmp 0x1003b60
mov eax, dword [ebp - 0x24c]
push 0x10017a8
push dword [eax]
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
je 0x1003aaa
mov edi, dword [ebp + 0x14]
mov eax, edi
imul eax, eax, 0x14
add eax, 0xc
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov esi, eax
mov dword [ebp - 0x214], esi
test esi, esi
jne 0x100354f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1001548
mov dword [ebp - 0x208], eax
call fcn.010030bb
jmp 0x1003b60
and dword [ebp - 0x234], 0
lea eax, [esi + 0xc]
mov dword [esi], edi
mov dword [esi + 4], eax
test edi, edi
jbe 0x1003aaa
mov ebx, dword [sym.imp.msvcrt.dll__wcsnicmp]
xor edi, edi
and dword [ebp - 0x20c], 0
and dword [ebp - 0x228], 0
xor eax, eax
inc eax
mov dword [ebp - 0x218], eax
mov dword [ebp - 0x210], eax
mov eax, dword [ebp - 0x24c]
push 5
lea esi, [eax + edi*4]
push 0x100179c
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x10035aa
push 6
jmp 0x10035cc
push 4
push 0x1001790
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003adc
push 5
mov dword [ebp - 0x210], 2
pop eax
movzx eax, ax
add eax, eax
add dword [esi], eax
mov eax, dword [esi]
push 6
push 0x1001780
push eax
call ebx
add esp, 0xc
test eax, eax
jne 0x10035ee
push 7
jmp 0x100374e
push 6
push 0x1001770
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003611
push 7
mov dword [ebp - 0x218], 0x14
jmp 0x1003758
push 9
push 0x100175c
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003632
mov dword [ebp - 0x218], 0x14
jmp 0x100374c
push 9
push 0x1001748
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003664
mov eax, dword [ebp - 0x214]
imul edi, edi, 0x14
add eax, 0xc
add edi, eax
mov dword [edi], 2
mov dword [edi + 8], 0x10011bc
jmp 0x1003a7f
push 0xa
push 0x1001730
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003696
mov eax, dword [ebp - 0x214]
imul edi, edi, 0x14
add eax, 0xc
add edi, eax
mov dword [edi], 2
mov dword [edi + 8], 0x10011cc
jmp 0x1003a7f
push 0xa
push 0x1001718
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x10036c8
mov eax, dword [ebp - 0x214]
imul edi, edi, 0x14
add eax, 0xc
add edi, eax
mov dword [edi], 3
mov dword [edi + 8], 0x10011dc
jmp 0x1003a7f
push 0xb
push 0x1001700
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x10036fa
mov eax, dword [ebp - 0x214]
imul edi, edi, 0x14
add eax, 0xc
add edi, eax
mov dword [edi], 3
mov dword [edi + 8], 0x10011ec
jmp 0x1003a7f
push 8
push 0x10016ec
push dword [esi]
call ebx
add esp, 0xc
push 9
test eax, eax
jne 0x1003724
mov dword [ebp - 0x218], 4
mov dword [ebp - 0x228], 0x10011fc
jmp 0x100374e
push 0x10016d8
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003a29
mov dword [ebp - 0x218], 4
mov dword [ebp - 0x228], 0x100120c
push 0xa
mov dword [ebp - 0x21c], 2
mov ecx, dword [esi]
pop eax
movzx eax, ax
add eax, eax
mov dword [ebp - 0x230], eax
lea eax, [eax + ecx - 2]
xor ebx, ebx
cmp word [eax], bx
je 0x1003aca
cmp word [eax], 0x2f
jne 0x1003786
xor ecx, ecx
inc dword [ebp - 0x20c]
mov word [eax], cx
inc eax
inc eax
cmp word [eax], bx
jne 0x1003775
cmp word [ebp - 0x20c], bx
je 0x1003aca
movzx eax, word [ebp - 0x20c]
imul eax, eax, 0xc
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov dword [ebp - 0x244], eax
cmp eax, ebx
je 0x1003533
mov ebx, dword [esi]
add ebx, dword [ebp - 0x230]
cmp dword [ebp - 0x218], 4
je 0x1003815
push 0x10
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov dword [ebp - 0x228], eax
test eax, eax
je 0x1003533
push eax
push ebx
call dword [sym.imp.RPCRT4.dll_UuidFromStringW]
test eax, eax
jne 0x1003adc
add dword [ebp - 0x20c], 0xffff
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x1003803
sub eax, edx
sar eax, 1
lea ebx, [ebx + eax*2 + 2]
and dword [ebp - 0x22c], 0
xor eax, eax
jmp 0x10039d9
and dword [ebp - 0x224], 0
mov eax, ebx
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x100382f
mov edx, dword [ebp - 0x244]
sub eax, ecx
sar eax, 1
lea ecx, [eax + eax + 2]
movzx eax, word [ebp - 0x22c]
imul eax, eax, 0xc
lea esi, [eax + edx]
mov eax, dword [ebp - 0x21c]
mov dword [ebp - 0x230], ecx
mov dword [esi], eax
cmp eax, 1
jne 0x10038ef
mov eax, ecx
xor ecx, ecx
push ecx
push ecx
lea edx, [ebp - 0x224]
push edx
push ecx
shr eax, 1
dec eax
push 8
push eax
push ebx
mov dword [ebp - 0x238], eax
call dword [sym.imp.CRYPT32.dll_CryptStringToBinaryW]
test eax, eax
je 0x1003ae0
push dword [ebp - 0x224]
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov dword [ebp - 0x220], eax
test eax, eax
je 0x1003533
push 0
push 0
lea eax, [ebp - 0x224]
push eax
push dword [ebp - 0x220]
push 8
push dword [ebp - 0x238]
push ebx
call dword [sym.imp.CRYPT32.dll_CryptStringToBinaryW]
test eax, eax
je 0x1003ae0
mov eax, dword [ebp - 0x224]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x220]
mov dword [esi + 8], eax
jmp 0x10039c6
cmp eax, 2
jne 0x10039c6
cmp dword [ebp - 0x218], 4
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
jne 0x10039c6
mov eax, ebx
lea edx, [eax + 2]
mov ecx, ebx
mov dword [ebp - 0x238], edx
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x1003918
sub eax, dword [ebp - 0x238]
sar eax, 1
je 0x10039c0
cmp word [ebx + eax*2 - 2], 0x3b
je 0x10039c0
lea ecx, [ebp - 0x248]
push ecx
push 2
push eax
call fcn.010029ee
test eax, eax
jl 0x1003af1
lea eax, [ebp - 0x23c]
push eax
mov eax, dword [ebp - 0x248]
push 2
pop ecx
mul ecx
push edx
push eax
call fcn.010029bc
test eax, eax
jl 0x1003b01
push dword [ebp - 0x23c]
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov dword [ebp - 0x220], eax
test eax, eax
je 0x1003b11
push ebx
push dword [ebp - 0x248]
push eax
call fcn.01002bfd
mov eax, dword [ebp - 0x220]
mov edx, dword [ebp - 0x23c]
mov ecx, eax
mov dword [esi + 4], edx
mov dword [esi + 8], eax
jmp 0x10039c0
cmp word [ecx], 0x3b
jne 0x10039be
xor eax, eax
mov word [ecx], ax
inc ecx
inc ecx
cmp word [ecx], 0
jne 0x10039b3
add ebx, dword [ebp - 0x230]
inc dword [ebp - 0x22c]
mov ax, word [ebp - 0x22c]
cmp ax, word [ebp - 0x20c]
jb 0x1003823
mov eax, dword [ebp - 0x214]
imul edi, edi, 0x14
mov ecx, dword [ebp - 0x218]
mov ebx, dword [sym.imp.msvcrt.dll__wcsnicmp]
add eax, 0xc
add eax, edi
mov dword [eax], ecx
mov ecx, dword [ebp - 0x210]
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0x228]
mov dword [eax + 8], ecx
movzx ecx, word [ebp - 0x20c]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x244]
mov dword [eax + 0x10], ecx
jmp 0x1003a88
push 0xd
push 0x10016bc
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003a52
mov eax, dword [ebp - 0x214]
imul edi, edi, 0x14
add eax, 0xc
add edi, eax
mov dword [edi + 8], 0x100121c
jmp 0x1003a79
push 0xa
push 0x10016a4
push dword [esi]
call ebx
add esp, 0xc
test eax, eax
jne 0x1003adc
mov eax, dword [ebp - 0x214]
imul edi, edi, 0x14
add eax, 0xc
add edi, eax
mov dword [edi + 8], 0x100122c
mov dword [edi], 5
mov eax, dword [ebp - 0x210]
mov dword [edi + 4], eax
inc dword [ebp - 0x234]
movzx edi, word [ebp - 0x234]
cmp edi, dword [ebp + 0x14]
jb 0x100356e
mov esi, dword [ebp - 0x214]
mov ebx, dword [ebp - 0x240]
push esi
push 8
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
test eax, eax
jne 0x1003b22
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1001504
jmp 0x100353f
push ebx
mov dword [ebp - 0x208], 0x667
push 0x88
jmp 0x1003b5b
push 0
jmp 0x1003acb
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1001630
jmp 0x100353f
mov eax, 0x216
push eax
push 0x1001618
jmp 0x100353f
mov eax, 0x216
push eax
push 0x1001604
jmp 0x100353f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x10015b8
jmp 0x100353f
push 0x1001504
call fcn.010030a2
lea eax, [ebp - 0x240]
push eax
push 0x200
lea eax, [ebp - 0x204]
push eax
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
je 0x1003b60
cmp dword [ebp - 0x200], 4
jne 0x1003b60
push 0
push 0x99
call fcn.01002c72
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x208]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.010079a6
leave
ret 0x14