Function at 0x10001560
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x78c
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x100025e0
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x18]
mov edx, dword fs:[0]
mov dword [ebp - 0x18], edx
mov dword fs:[0], ecx
push eax
call dword [0x100651b0]
lea esi, [ebp - 0x64]
mov dword [ebp - 0x58], eax
push esi
call fcn.100027a0
add esp, 4
lea eax, [ebp - 0x53c]
mov dword [ebp - 0x798], 0x1002d134
mov dword [ebp - 0x794], 2
mov dword [ebp - 0x2e0], esi
mov dword [ebp - 0x53c], 2
mov dword [ebp - 0x534], 2
mov dword [ebp - 0x52c], 0x20
mov dword [ebp - 0x528], 0
mov dword [ebp - 0x524], 0x10
mov dword [ebp - 0x2dc], 0x100026b0
mov byte [ebp - 0x520], 3
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x788], eax
lea eax, [ebp - 0x2e0]
mov dword [ebp - 0x784], 1
mov dword [ebp - 0x790], eax
lea eax, [ebp - 0x798]
mov dword [ebp - 0x78c], 1
push eax
call fcn.1000eb80
add esp, 4
lea eax, [ebp - 0x53c]
push eax
call fcn.1000d130
add esp, 4
mov eax, dword [ebp - 0x53c]
cmp eax, 0x80000000
mov dword [ebp - 0x28], eax
je 0x10001f83
mov edx, dword [ebp - 0x538]
mov eax, dword [ebp - 0x534]
mov dword [ebp - 0x10], 0x14
lea ecx, [ebp - 0x8c]
push 7
push str.modules
push eax
mov dword [ebp - 0x30], edx
push edx
push ecx
call fcn.100125e0
add esp, 0x14
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x100016af
push 1
push eax
push dword [ebp - 0x30]
call fcn.10002720
add esp, 0xc
mov ecx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x10], 1
mov dword [ebp - 0x30], ecx
push ecx
mov dword [ebp - 0x28], eax
push eax
call fcn.100126d0
add esp, 8
test al, al
je 0x10001747
push dword [ebp - 0x30]
push dword [ebp - 0x28]
lea eax, [ebp - 0x53c]
push eax
call fcn.10016290
add esp, 0xc
mov esi, dword [ebp - 0x53c]
cmp esi, 2
je 0x10001ffc
mov edi, dword [ebp - 0x538]
mov ebx, dword [ebp - 0x534]
lea eax, [ebp - 0x530]
lea ecx, [ebp - 0x78c]
push 0x250
push eax
push ecx
call fcn.100271c0
add esp, 0xc
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x798], esi
lea esi, [ebp - 0x53c]
mov dword [ebp - 0x790], ebx
mov dword [ebp - 0x794], edi
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], ecx
jmp 0x10001795
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x10001ec2
push 1
push eax
push dword [ebp - 0x28]
jmp 0x10001eba
lea esi, [ebp - 0x53c]
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x10001a51
nop word cs:[eax + eax]
nop dword [eax + eax]
push 1
push eax
push dword [ebp - 0x30]
call fcn.10002720
add esp, 0xc
mov dword [ebp - 0x10], 3
lea eax, [ebp - 0x798]
mov dword [ebp - 0x10], 3
push eax
push esi
call fcn.1000da50
add esp, 8
cmp dword [ebp - 0x53c], 0
je 0x10001e70
mov edx, dword [ebp - 0x538]
mov ecx, dword [ebp - 0x534]
mov eax, dword [ebp - 0x530]
test edx, edx
je 0x10001f1c
mov dword [ebp - 0x2e0], edx
mov dword [ebp - 0x2dc], ecx
mov dword [ebp - 0x2d8], eax
push 0x248
lea eax, [ebp - 0x52c]
push eax
lea eax, [ebp - 0x2d4]
push eax
call fcn.100271c0
add esp, 0xc
lea eax, [ebp - 0x2e0]
mov dword [ebp - 0x10], 0x11
push eax
lea eax, [ebp - 0x74]
push eax
call fcn.1000dae0
add esp, 8
mov eax, dword [ebp - 0x2e0]
lock dec dword [eax]
jne 0x1000183b
lea eax, [ebp - 0x2e0]
mov dword [ebp - 0x10], 3
push eax
call fcn.10002670
add esp, 4
mov eax, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x6c]
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 4
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x34], ecx
push ecx
mov dword [ebp - 0x30], eax
push eax
call fcn.10012060
add esp, 8
test eax, eax
je 0x10001f06
mov byte [ebp - 0x1d], 1
push edx
push eax
lea eax, [ebp - 0x2e0]
push eax
call fcn.1000d7f0
add esp, 0xc
cmp dword [ebp - 0x2e0], 0
jne 0x10001ef0
mov ebx, dword [ebp - 0x2d8]
test ebx, ebx
je 0x10001a40
js 0x10001f4b
mov edi, dword [ebp - 0x2dc]
movzx eax, byte [0x100651b9]
push 1
push ebx
call fcn.10002710
add esp, 8
test eax, eax
je 0x10001f59
mov esi, eax
push ebx
push edi
mov edi, esi
push esi
call fcn.100271c0
add esp, 0xc
movdqa xmm5, xmmword [0x1002d050]
movdqa xmm6, xmmword [0x1002d000]
movdqa xmm7, xmmword [0x1002d010]
cmp ebx, 8
mov ecx, esi
jb 0x100019e0
xor eax, eax
cmp ebx, 0x20
jb 0x10001977
movdqa xmm5, xmmword [0x1002d020]
mov eax, ebx
lea ecx, [esi + 0x10]
and eax, 0xffffffe0
mov edx, eax
nop dword [eax + eax]
movdqu xmm1, xmmword [ecx - 0x10]
movdqu xmm0, xmmword [ecx]
movdqa xmm2, xmm1
movdqa xmm3, xmm0
paddb xmm2, xmm6
paddb xmm3, xmm6
movdqa xmm4, xmm2
pminub xmm4, xmm7
pcmpeqb xmm4, xmm2
movdqa xmm2, xmm3
pminub xmm2, xmm7
pand xmm4, xmm5
pcmpeqb xmm2, xmm3
pxor xmm4, xmm1
pand xmm2, xmm5
movdqu xmmword [ecx - 0x10], xmm4
pxor xmm2, xmm0
movdqu xmmword [ecx], xmm2
add ecx, 0x20
add edx, 0xffffffe0
jne 0x10001910
movdqa xmm5, xmmword [0x1002d050]
cmp ebx, eax
je 0x10001a0a
test bl, 0x18
je 0x100019d5
movdqa xmm3, xmmword [0x1002d030]
movdqa xmm4, xmmword [0x1002d040]
mov edx, ebx
mov dword [ebp - 0x24], edi
lea edi, [esi + eax]
and edx, 0xfffffff8
lea ecx, [esi + edx]
sub eax, edx
nop word [eax + eax]
movq xmm0, qword [edi]
movdqa xmm1, xmm0
paddb xmm1, xmm3
movdqa xmm2, xmm1
pmaxub xmm2, xmm4
pcmpeqb xmm2, xmm1
pandn xmm2, xmm5
pxor xmm2, xmm0
movq qword [edi], xmm2
add edi, 8
add eax, 8
jne 0x100019a0
mov edi, dword [ebp - 0x24]
cmp ebx, edx
jne 0x100019e0
jmp 0x10001a0a
add eax, esi
mov ecx, eax
nop dword [eax]
add esi, ebx
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ecx]
mov edx, eax
add dl, 0x9f
cmp dl, 0x1a
setb dl
shl dl, 5
xor dl, al
mov byte [ecx], dl
inc ecx
cmp ecx, esi
jne 0x100019f0
cmp ebx, 5
jae 0x10001a20
test ebx, ebx
jne 0x10001a34
jmp 0x10001a40
movzx edx, byte [edi + 4]
mov eax, dword [edi]
mov ecx, 0x39314854
xor eax, ecx
xor edx, 0x5f
or edx, eax
je 0x10001a5d
push 1
push ebx
push edi
call fcn.10002720
add esp, 0xc
mov eax, dword [ebp - 0x28]
lea esi, [ebp - 0x53c]
test eax, eax
jne 0x10001780
mov dword [ebp - 0x10], 3
jmp 0x10001795
push 1
push ebx
push edi
call fcn.10002720
add esp, 0xc
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 4
push dword [ebp - 0x34]
push dword [ebp - 0x30]
call fcn.10012560
add esp, 8
test eax, eax
je 0x10001f6d
mov byte [ebp - 0x1d], 1
push edx
push eax
lea eax, [ebp - 0x2e0]
push eax
call fcn.1000d660
add esp, 0xc
mov eax, dword [ebp - 0x2dc]
cmp dword [ebp - 0x2d8], 3
jne 0x10001ad0
movzx ecx, word [eax]
movzx edx, byte [eax + 2]
xor ecx, 0x4c44
xor edx, 0x4c
or dx, cx
sete bl
mov ecx, dword [ebp - 0x2e0]
test ecx, ecx
jne 0x10001adc
jmp 0x10001ae8
xor ebx, ebx
mov ecx, dword [ebp - 0x2e0]
test ecx, ecx
je 0x10001ae8
push 1
push ecx
push eax
call fcn.10002720
add esp, 0xc
test bl, bl
je 0x10001a40
mov dword [ebp - 0x10], 5
push dword [ebp - 0x34]
push dword [ebp - 0x30]
lea eax, [ebp - 0x54]
push eax
call fcn.100198d0
add esp, 0xc
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x10], 6
push ecx
push eax
call fcn.10003ae0
add esp, 8
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0x40]
mov dword [ebp - 0x10], 0xf
push eax
call fcn.10003da0
add esp, 4
push edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
mov dword [ebp - 0x34], eax
je 0x10001fbf
lea eax, [ebp - 0x40]
mov dword [ebp - 0x10], 6
push eax
call fcn.100039f0
add esp, 4
push str.CheckVersion
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x10001c6c
push dword [ebp - 0x78]
push dword [ebp - 0x7c]
call eax
add esp, 8
test al, al
je 0x10001d0a
push str.Initialize
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x10001da8
push dword [ebp - 0x58]
call eax
add esp, 4
test al, al
jne 0x10001c43
lea eax, [ebp - 0x54]
mov dword [ebp - str.Failed_to_initialize], 0x1002d210
mov dword [ebp - 0x2dc], 1
mov dword [ebp - 0x2d0], 0
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x48]
mov dword [ebp - 0x44], 0x10001100
mov dword [ebp - 0x2d8], eax
lea eax, [ebp - 0x2e0]
mov dword [ebp - 0x2d4], 1
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.10021e70
add esp, 8
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x10], 0xc
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], ecx
call fcn.10001150
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x10001c2b
push 1
push eax
push dword [ebp - 0x2c]
call fcn.10002720
add esp, 0xc
mov dword [ebp - 0x10], 6
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
je 0x100020e9
mov eax, dword [ebp - 0x54]
cmp eax, 0x80000000
je 0x10001760
test eax, eax
je 0x10001760
push 1
push eax
push dword [ebp - 0x50]
call fcn.10002720
add esp, 0xc
jmp 0x10001760
lea eax, [ebp - 0x54]
mov dword [ebp - str.Failed_to_get_CheckVersion_from__], 0x1002d280
mov dword [ebp - 0x2dc], 1
mov dword [ebp - 0x2d0], 0
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x48]
mov dword [ebp - 0x44], 0x10001100
mov dword [ebp - 0x2d8], eax
lea eax, [ebp - 0x2e0]
mov dword [ebp - 0x2d4], 1
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.10021e70
add esp, 8
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x10], 8
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], ecx
call fcn.10001150
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x10001ced
push 1
push eax
push dword [ebp - 0x2c]
call fcn.10002720
add esp, 0xc
mov dword [ebp - 0x10], 6
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
jne 0x10001e41
jmp 0x10002038
lea eax, [ebp - 0x54]
mov dword [ebp - str.Hash_mismatch:], 0x1002d1d8
mov dword [ebp - 0x2dc], 1
mov dword [ebp - 0x2d0], 0
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x48]
mov dword [ebp - 0x44], 0x10001100
mov dword [ebp - 0x2d8], eax
lea eax, [ebp - 0x2e0]
mov dword [ebp - 0x2d4], 1
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.10021e70
add esp, 8
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x10], 0xe
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], ecx
call fcn.10001150
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x10001d8b
push 1
push eax
push dword [ebp - 0x2c]
call fcn.10002720
add esp, 0xc
mov dword [ebp - 0x10], 6
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
jne 0x10001e41
jmp 0x10002075
lea eax, [ebp - 0x54]
mov dword [ebp - str.Failed_to_get_Initialize_from], 0x1002d248
mov dword [ebp - 0x2dc], 1
mov dword [ebp - 0x2d0], 0
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x48]
mov dword [ebp - 0x44], 0x10001100
mov dword [ebp - 0x2d8], eax
lea eax, [ebp - 0x2e0]
mov dword [ebp - 0x2d4], 1
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.10021e70
add esp, 8
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x10], 0xa
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], ecx
call fcn.10001150
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x10001e29
push 1
push eax
push dword [ebp - 0x2c]
call fcn.10002720
add esp, 0xc
mov dword [ebp - 0x10], 6
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
je 0x100020af
mov eax, dword [ebp - 0x54]
lea esi, [ebp - 0x53c]
cmp eax, 0x80000000
je 0x10001766
test eax, eax
je 0x10001766
push 1
push eax
push dword [ebp - 0x50]
call fcn.10002720
add esp, 0xc
jmp 0x10001766
lea eax, [ebp - 0x540]
mov dword [ebp - 0x10], 2
push eax
call fcn.10015e60
add esp, 4
mov eax, dword [ebp - 0x544]
lock dec dword [eax]
jne 0x10001ea7
lea eax, [ebp - 0x544]
mov dword [ebp - 0x10], 1
push eax
call fcn.10002670
add esp, 4
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x10001ec2
push 1
push eax
push dword [ebp - 0x88]
call fcn.10002720
add esp, 0xc
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x10001ed7
push 1
push eax
push dword [ebp - 0x60]
call fcn.10002720
add esp, 0xc
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, dword [ebp - 0x58]
add esp, 0x78c
pop esi
pop edi
pop ebx
pop ebp
ret 4
mov byte [ebp - 0x1d], 1
push 0x1002d18c
call fcn.1002b770
add esp, 4
jmp 0x10002121
mov byte [ebp - 0x1d], 1
push 0x1002d17c
call fcn.1002b770
add esp, 4
jmp 0x10002121
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x10], 0x12
push 0x1002d16c
push 0x1002d08c
lea eax, [ebp - 0x74]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
jmp 0x10002121
mov byte [ebp - 0x1d], 1
call fcn.10021e30
jmp 0x10002121
mov byte [ebp - 0x1d], 1
push ebx
push 1
call fcn.1002b710
add esp, 8
jmp 0x10002121
mov byte [ebp - 0x1d], 1
push 0x1002d19c
call fcn.1002b770
add esp, 4
jmp 0x10002121
movq xmm0, qword [ebp - 0x538]
mov dword [ebp - 0x10], 0x15
movq qword [ebp - 0x798], xmm0
push 0x1002d144
push 0x1002d08c
lea eax, [ebp - 0x798]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
jmp 0x10002121
call fcn.100040b0
mov dword [ebp - 0x2e0], eax
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x10], 0x10
push 0x1002d1ac
push 0x1002d09c
lea eax, [ebp - 0x2e0]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
jmp 0x10002121
movq xmm0, qword [ebp - 0x538]
mov dword [ebp - 0x10], 0x13
movq qword [ebp - 0x53c], xmm0
push 0x1002d15c
push 0x1002d08c
lea eax, [ebp - 0x53c]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
jmp 0x10002121
call fcn.100040b0
mov dword [ebp - 0x2e0], eax
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x10], 7
push 0x1002d288
push 0x1002d09c
lea eax, [ebp - 0x2e0]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
jmp 0x10002121
call fcn.100040b0
mov dword [ebp - 0x2e0], eax
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x10], 0xd
push 0x1002d1e0
push 0x1002d09c
lea eax, [ebp - 0x2e0]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
jmp 0x10002121
call fcn.100040b0
mov dword [ebp - 0x2e0], eax
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x10], 9
push 0x1002d250
push 0x1002d09c
lea eax, [ebp - 0x2e0]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
jmp 0x10002121
call fcn.100040b0
mov dword [ebp - 0x2e0], eax
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x10], 0xb
push 0x1002d218
push 0x1002d09c
lea eax, [ebp - 0x2e0]
push eax
push 0x2b
push 0x1002d060
call fcn.1002bba0
add esp, 0x14
ud2