Function at 0x713840
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
mov eax, dword [ecx + 0xc]
mov dword [esp + 4], edx
mov dword [esp + 0x14], eax
inc eax
je 0x714313
mov edi, dword [ecx + 4]
mov ebx, ecx
mov dword [esp + 0x3c], ebx
lea ecx, [edi + 1]
mov dword [esp + 0x1c], edi
mov edx, ecx
mov esi, ecx
shr edx, 3
and esi, 0xfffffff8
sub esi, edx
cmp edi, 8
cmovb esi, edi
mov edx, esi
shr edx, 1
cmp eax, edx
jbe 0x7138b6
inc esi
mov edi, dword [esp + 0x14]
mov dword [esp + 0x38], ecx
cmp eax, esi
cmova esi, eax
cmp esi, 8
jae 0x713929
xor eax, eax
cmp esi, 4
setae al
lea eax, [eax*4 + 4]
jmp 0x713962
mov edi, dword [ebx]
mov ebx, ecx
xor eax, eax
mov edx, ecx
shr ebx, 4
test cl, 0xf
setne al
add eax, ebx
je 0x7138f6
movdqa xmm0, xmmword [0x725600]
mov ecx, edi
nop word cs:[eax + eax]
nop
pxor xmm1, xmm1
dec eax
pcmpgtb xmm1, xmmword [ecx]
por xmm1, xmm0
movdqa xmmword [ecx], xmm1
lea ecx, [ecx + 0x10]
jne 0x7138e0
mov esi, dword [esp + 0x1c]
cmp edx, 0x10
jae 0x7139fe
lea eax, [edi + 0x10]
push edx
push edi
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
cmp esi, 0xffffffff
jne 0x713a12
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x14]
xor eax, eax
jmp 0x714032
cmp esi, 0x20000000
jae 0x714313
shl esi, 3
mov eax, 1
cmp esi, 0xe
jb 0x713962
mov edx, 0x24924925
mov eax, esi
mul edx
mov eax, 0xffffffff
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
dec esi
bsr ecx, esi
not ecx
shr eax, cl
inc eax
mov dword [esp + 0x18], eax
mov ecx, 0x14
mov eax, dword [esp + 0x18]
mul ecx
mov ecx, dword [esp + 0x18]
jo 0x714313
add eax, 0xf
lea edx, [ecx + 0x10]
and eax, 0xfffffff0
mov ebx, eax
add ebx, edx
jb 0x714313
cmp ebx, 0x7ffffff1
jae 0x714313
test ebx, ebx
je 0x71403c
mov dword [esp + 8], edx
mov esi, eax
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x7139cb
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x71431a
mov dword [0x919820], eax
lea ecx, [ebx + 0x10]
push ecx
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x71431a
mov ecx, eax
mov edx, dword [esp + 8]
and ecx, 0xfffffff0
mov dword [ecx + 0xc], eax
add ecx, 0x10
mov eax, esi
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x18]
jmp 0x714044
movq xmm0, qword [edi]
movq xmm1, qword [edi + 8]
movq qword [edi + edx + 8], xmm1
movq qword [edi + edx], xmm0
mov esi, dword [esp + 4]
xor ebx, ebx
mov dword [esp + 0x20], edi
mov eax, dword [esi]
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0xc]
movdqu xmm0, xmmword [esi + 0x10]
mov dword [esp + 0x58], eax
mov eax, dword [esi + 4]
pshufd xmm1, xmm0, 0x55
pshufd xmm2, xmm0, 0xff
pshufd xmm0, xmm0, 0xee
mov dword [esp + 0x28], ecx
mov dword [esp + 0x34], edx
movd dword [esp + 0x30], xmm1
movd dword [esp + 0x2c], xmm2
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x10]
mov esi, edx
not esi
mov dword [esp + 0x18], esi
movd esi, xmm0
mov dword [esp + 0x60], esi
mov dword [esp + 0x24], eax
mov eax, edx
bswap eax
mov dword [esp + 0x50], eax
mov eax, ecx
bswap eax
mov dword [esp + 0x4c], eax
mov eax, ecx
not eax
mov dword [esp + 0x48], eax
jmp 0x713ab6
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x20]
shr edx, 0x19
lea eax, [ecx - 0x10]
mov byte [edi + ecx], dl
and eax, ebx
mov ebx, ecx
mov byte [eax + edi + 0x10], dl
cmp ebx, dword [esp + 0x1c]
lea ebx, [ebx + 1]
je 0x714015
cmp byte [edi + ebx], 0x80
jne 0x713aa9
mov eax, ebx
mov dword [esp + 0x38], ebx
neg ebx
not eax
mov dword [esp + 0x5c], ebx
lea eax, [eax + eax*4]
lea eax, [edi + eax*4]
mov dword [esp + 0x44], eax
nop word cs:[eax + eax]
nop
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x54]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x20]
mov dword [esp + 4], ecx
mov edi, dword [eax + ecx*4 - 0x14]
mov ecx, 0x2df45158
xor edi, dword [esp + 0x58]
mov eax, edi
mul ecx
imul ecx, ebx, 0x2df45158
bswap ebx
mov dword [esp + 8], eax
imul eax, edi, 0x2d7f954c
bswap edi
add eax, edx
mov edx, 0xb36a80d2
add ecx, eax
mov eax, ebx
imul ebx, ebx, 0xa7ae0bd2
mul edx
mov esi, eax
add ebx, edx
imul eax, edi, 0xb36a80d2
bswap esi
add ebx, eax
mov eax, dword [esp + 4]
xor esi, ecx
mov ecx, dword [esp + 0x20]
bswap ebx
xor ebx, dword [esp + 8]
mov edi, dword [ecx + eax*4 - 8]
mov ecx, 0x4c957f2d
add ebx, edi
mov eax, ebx
adc esi, 0
mul ecx
imul ecx, ebx, 0x5851f42d
imul esi, esi, 0x4c957f2d
add ecx, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0xc], eax
add esi, ecx
mov ecx, dword [esp + 4]
cmp edi, 8
mov dword [esp + 0x14], esi
mov ecx, dword [edx + ecx*4 - 0x10]
jbe 0x713cf0
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
cmp edi, 0x10
jbe 0x713d20
mov esi, dword [edi + ecx - 0x10]
mov ebx, dword [edi + ecx - 0xc]
mov dword [esp + 8], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x40], edi
xor esi, eax
xor ebx, dword [esp + 0x30]
mov dword [esp + 4], esi
mov esi, dword [edi + ecx - 4]
xor esi, edx
mov eax, esi
not esi
bswap eax
mov ecx, eax
mul dword [esp + 4]
imul ecx, ebx
bswap ebx
imul esi, ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 8]
add edx, ecx
mov ecx, dword [edi + eax - 8]
mov eax, ebx
xor ecx, dword [esp + 0x60]
mov edi, ecx
not ecx
bswap edi
imul edi, dword [esp + 4]
add edi, edx
mul ecx
add edx, esi
mov esi, dword [esp + 4]
bswap eax
bswap esi
imul ecx, esi
mov esi, dword [esp + 0x14]
add ecx, edx
mov edx, dword [esp + 0xc]
bswap ecx
add edx, dword [esp + 0x34]
adc esi, dword [esp + 0x28]
xor edx, dword [esp + 0x10]
xor eax, edi
xor eax, esi
xor edx, ecx
mov ecx, dword [esp + 8]
mov ebx, eax
shld ebx, edx, 0x17
shld edx, eax, 0x17
mov esi, edx
nop
mov eax, dword [ecx]
mov dword [esp + 0x10], esi
mov esi, dword [ecx + 0xc]
mov edi, dword [ecx + 4]
mov dword [esp + 8], ecx
xor eax, dword [esp + 0x24]
xor esi, dword [esp + 0x2c]
xor edi, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, esi
not esi
bswap eax
mov ecx, eax
mul dword [esp + 4]
imul ecx, edi
bswap edi
imul esi, edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 8]
add edx, ecx
mov ecx, dword [eax + 8]
xor ecx, dword [esp + 0x60]
mov eax, ecx
not ecx
bswap eax
imul eax, dword [esp + 4]
add eax, edx
mov dword [esp + 0x14], eax
mov eax, edi
mov edi, dword [esp + 4]
mul ecx
add edx, esi
mov esi, dword [esp + 0x10]
bswap eax
bswap edi
imul ecx, edi
add ecx, edx
mov edx, dword [esp + 0x40]
bswap ecx
add edx, 0xfffffff0
add esi, dword [esp + 0x34]
mov dword [esp + 0x40], edx
adc ebx, dword [esp + 0x28]
xor esi, dword [esp + 0xc]
xor ebx, eax
mov eax, dword [esp + 8]
xor esi, ecx
xor ebx, dword [esp + 0x14]
add eax, 0x10
mov edi, ebx
mov ecx, eax
shld edi, esi, 0x17
shld esi, ebx, 0x17
cmp edx, 0x10
mov ebx, edi
ja 0x713c30
jmp 0x713e54
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
cmp edi, 1
jbe 0x713db0
cmp edi, 3
jbe 0x713dc0
mov ebx, dword [ecx]
mov esi, dword [edi + ecx - 4]
jmp 0x713dc8
mov esi, dword [ecx]
xor esi, eax
mov eax, ecx
mov ecx, dword [edi + ecx - 4]
mov ebx, dword [edi + eax - 8]
mov edi, dword [eax + 4]
mov dword [esp + 4], esi
xor ecx, edx
mov eax, ecx
xor edi, dword [esp + 0x30]
xor ebx, dword [esp + 0x60]
not ecx
bswap eax
mov esi, eax
mul dword [esp + 4]
imul esi, edi
bswap edi
imul ecx, edi
add edx, esi
mov esi, ebx
mov dword [esp + 8], eax
not ebx
mov eax, edi
bswap esi
imul esi, dword [esp + 4]
add esi, edx
mul ebx
add edx, ecx
mov ecx, dword [esp + 4]
bswap eax
bswap ecx
imul ebx, ecx
mov ecx, dword [esp + 0xc]
add ebx, edx
mov edx, dword [esp + 0x14]
bswap ebx
add ecx, dword [esp + 0x34]
adc edx, dword [esp + 0x28]
xor ecx, dword [esp + 8]
xor eax, esi
xor eax, edx
xor ecx, ebx
mov edi, eax
shld edi, ecx, 0x17
shld ecx, eax, 0x17
mov esi, ecx
jmp 0x713e54
xor esi, esi
cmp edi, 1
jne 0x713dd0
movzx ebx, byte [ecx]
mov dword [esp + 0x10], ebx
jmp 0x713dcc
movzx ebx, word [ecx]
movzx esi, byte [edi + ecx - 1]
mov dword [esp + 0x10], esi
xor esi, esi
jmp 0x713dda
mov dword [esp + 0x10], 0
xor ebx, ebx
mov ecx, dword [esp + 0x24]
mov edi, esi
xor esi, edx
xor edi, eax
mov eax, esi
mov dword [esp + 4], esi
bswap eax
mov esi, eax
xor ebx, ecx
imul esi, edi
bswap edi
mul ebx
add edx, esi
mov esi, dword [esp + 0x10]
mov dword [esp + 8], eax
mov eax, dword [esp + 4]
xor esi, dword [esp + 0x60]
not eax
imul eax, edi
mov dword [esp + 4], eax
mov eax, edi
mov edi, dword [esp + 0x14]
mov ecx, esi
not esi
bswap ecx
imul ecx, ebx
bswap ebx
add ecx, edx
mul esi
imul esi, ebx
mov ebx, dword [esp + 0xc]
add edx, dword [esp + 4]
bswap eax
add esi, edx
add ebx, dword [esp + 0x34]
bswap esi
adc edi, dword [esp + 0x28]
xor esi, dword [esp + 8]
xor eax, ecx
xor eax, edi
xor esi, ebx
mov edi, eax
shld edi, esi, 0x17
shld esi, eax, 0x17
xor esi, 0xff
mov ecx, 0x2df45158
mov eax, esi
mul ecx
imul ecx, edi, 0x2df45158
bswap edi
mov dword [esp + 4], eax
imul eax, esi, 0x2d7f954c
bswap esi
add eax, edx
add ecx, eax
mov eax, edi
mov dword [esp + 8], ecx
mov ecx, 0xb36a80d2
mul ecx
imul ecx, esi, 0xb36a80d2
mov ebx, eax
imul eax, edi, 0xa7ae0bd2
add eax, edx
bswap ebx
add ecx, eax
mov eax, dword [esp + 0x4c]
xor ebx, dword [esp + 8]
bswap ecx
xor ecx, dword [esp + 4]
mov edi, eax
imul edi, ebx
bswap ebx
mul ecx
mov esi, ebx
add edx, edi
mov edi, dword [esp + 0x50]
mov dword [esp + 4], eax
mov eax, ebx
mov ebx, ecx
imul esi, dword [esp + 0x48]
bswap ebx
imul ebx, dword [esp + 0x18]
imul edi, ecx
add edi, edx
mul dword [esp + 0x18]
add edx, esi
bswap eax
add ebx, edx
xor eax, edi
mov edi, dword [esp + 0x20]
bswap ebx
xor ebx, dword [esp + 4]
test cl, 0x20
mov edx, ebx
cmove ebx, eax
cmovne edx, eax
shld edx, ebx, cl
mov ebx, dword [esp + 0x1c]
mov eax, ebx
and eax, edx
movdqu xmm0, xmmword [edi + eax]
mov esi, eax
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x713f3c
mov dword [esp + 4], edx
mov edx, ebx
mov ebx, edi
mov edi, 0x10
mov esi, eax
nop
add esi, edi
add edi, 0x10
and esi, edx
movdqu xmm0, xmmword [ebx + esi]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x713f20
mov edi, ebx
mov ebx, edx
mov edx, dword [esp + 4]
tzcnt ecx, ecx
add ecx, esi
and ecx, ebx
cmp byte [edi + ecx], 0
js 0x713f56
movdqa xmm0, xmmword [edi]
pmovmskb ecx, xmm0
tzcnt ecx, ecx
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x1c]
mov edi, ecx
sub edi, eax
sub esi, eax
xor edi, esi
and edi, ebx
cmp edi, 0x10
jb 0x713a90
mov edi, dword [esp + 0x20]
shr edx, 0x19
lea esi, [ecx - 0x10]
and esi, ebx
movzx eax, byte [edi + ecx]
mov byte [edi + ecx], dl
not ecx
mov byte [esi + edi + 0x10], dl
cmp al, 0xff
lea eax, [ecx + ecx*4]
lea eax, [edi + eax*4]
je 0x713fe0
mov esi, dword [esp + 0x44]
mov edx, dword [eax]
mov ecx, dword [esi]
mov dword [esi], edx
mov dword [eax], ecx
mov ecx, dword [esi + 4]
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov dword [eax + 4], ecx
mov ecx, dword [esi + 8]
mov edx, dword [eax + 8]
mov dword [esi + 8], edx
mov dword [eax + 8], ecx
mov ecx, dword [esi + 0xc]
mov edx, dword [eax + 0xc]
mov dword [esi + 0xc], edx
mov dword [eax + 0xc], ecx
mov ecx, dword [esi + 0x10]
mov edx, dword [eax + 0x10]
mov dword [esi + 0x10], edx
mov dword [eax + 0x10], ecx
jmp 0x713ae0
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x44]
lea ecx, [edx - 0x10]
mov byte [edi + edx], 0xff
and ecx, ebx
mov ebx, edx
mov byte [ecx + edi + 0x10], 0xff
mov ecx, dword [esi + 0x10]
mov dword [eax + 0x10], ecx
movq xmm0, qword [esi]
movq xmm1, qword [esi + 8]
movq qword [eax + 8], xmm1
movq qword [eax], xmm0
jmp 0x713aa9
mov esi, dword [esp + 0x3c]
mov ecx, dword [esi + 4]
mov ebx, dword [esi + 0xc]
lea eax, [ecx + 1]
mov edx, eax
and eax, 0xfffffff8
shr edx, 3
sub eax, edx
cmp ecx, 8
cmovb eax, ecx
sub eax, ebx
mov dword [esi + 8], eax
jmp 0x714306
mov dword [esp + 0xc], 0x10
mov ebx, ecx
lea esi, [ecx - 1]
shr ecx, 3
and ebx, 0xfffffff8
sub ebx, ecx
mov ecx, dword [esp + 0xc]
cmp esi, 8
cmovb ebx, esi
add ecx, eax
push edx
push 0xff
mov dword [esp + 0x14], ecx
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x3c]
sub ebx, edi
cmp dword [esp + 0x1c], 0xffffffff
mov edx, dword [eax]
mov dword [esp + 0x2c], edx
je 0x7142c4
lea eax, [edx - 0x14]
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 4]
mov ebx, dword [eax + 4]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax]
movdqu xmm0, xmmword [eax + 0x10]
mov eax, dword [eax + 8]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x30], esi
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x34], ecx
movdqa xmmword [esp + 0x60], xmm0
jmp 0x714128
mov esi, dword [esp + 0x10]
lea eax, [ecx - 0x10]
shr edx, 0x19
and eax, edi
mov edi, dword [esp + 0x2c]
mov byte [ebx + ecx], dl
not ecx
mov byte [eax + ebx + 0x10], dl
lea ecx, [ecx + ecx*4]
mov eax, esi
not eax
lea eax, [eax + eax*4]
mov edx, dword [edi + eax*4 + 0x10]
mov dword [ebx + ecx*4 + 0x10], edx
mov edx, edi
movq xmm0, qword [edi + eax*4]
movq xmm1, qword [edi + eax*4 + 8]
mov eax, esi
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x1c]
movq qword [ebx + ecx*4 + 8], xmm1
movq qword [ebx + ecx*4], xmm0
cmp eax, esi
lea eax, [eax + 1]
je 0x7142a7
cmp byte [edx + eax], 0
js 0x71411d
mov dword [esp + 0x10], eax
neg eax
movaps xmm0, xmmword [esp + 0x60]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x20]
mov dword [esp + 4], ecx
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 8]
movups xmmword [esp + 0x78], xmm0
mov esi, dword [eax + ecx*4]
mov ecx, 0x2df45158
xor esi, dword [esp + 0x34]
mov eax, esi
mul ecx
mov ecx, eax
imul eax, esi, 0x2d7f954c
bswap esi
add eax, edx
mov edx, dword [esp + 0x24]
mov ebx, edx
imul edi, edx, 0x2df45158
mov edx, 0xb36a80d2
bswap ebx
add edi, eax
mov eax, ebx
imul ebx, ebx, 0xa7ae0bd2
mul edx
bswap eax
add ebx, edx
imul edx, esi, 0xb36a80d2
mov esi, dword [esp + 8]
xor eax, edi
add ebx, edx
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 4]
bswap ebx
xor ebx, ecx
lea ecx, [esp + 0x78]
mov dword [esp + 0x88], ebx
mov edx, dword [esi + eax*4 + 4]
push dword [esi + eax*4 + 0xc]
call fcn.005ae9b0
add esp, 4
mov esi, dword [esp + 0x94]
mov edx, dword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0x90]
mov eax, esi
mov dword [esp + 4], edx
not esi
bswap eax
mov ecx, eax
mul edx
imul ecx, ebx
bswap ebx
mov dword [esp + 0x40], eax
add edx, ecx
mov ecx, edi
not edi
mov eax, ebx
imul esi, ebx
bswap ecx
imul ecx, dword [esp + 4]
add ecx, edx
mul edi
add edx, esi
mov esi, dword [esp + 4]
bswap eax
xor eax, ecx
mov ebx, esi
mov ecx, esi
bswap ebx
imul edi, ebx
mov ebx, dword [esp + 0xc]
add edi, edx
bswap edi
xor edi, dword [esp + 0x40]
test cl, 0x20
mov edx, edi
cmove edi, eax
cmovne edx, eax
shld edx, edi, cl
mov edi, dword [esp + 0x28]
mov eax, edi
and eax, edx
movdqu xmm0, xmmword [ebx + eax]
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x714284
mov esi, 0x10
nop word cs:[eax + eax]
add eax, esi
add esi, 0x10
and eax, edi
movdqu xmm0, xmmword [ebx + eax]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x714270
tzcnt ecx, ecx
add ecx, eax
and ecx, edi
cmp byte [ebx + ecx], 0
js 0x7140d0
movdqa xmm0, xmmword [ebx]
pmovmskb eax, xmm0
tzcnt ecx, eax
jmp 0x7140d0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
test esi, esi
mov dword [eax], ebx
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edi
jne 0x7142d7
jmp 0x714306
mov ecx, dword [esp + 0xc]
mov dword [eax], ecx
mov dword [eax + 4], esi
mov esi, dword [esp + 0x1c]
mov dword [eax + 8], ebx
mov dword [eax + 0xc], edi
mov eax, dword [esp + 0x38]
mov ecx, 0x14
mul ecx
add eax, 0xf
and eax, 0xfffffff0
add esi, eax
cmp esi, 0xffffffef
je 0x714306
mov ecx, dword [esp + 0x2c]
sub ecx, eax
push dword [ecx - 4]
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, 0x80000001
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.005df3b0
ud2
mov ecx, ebx
call fcn.005df3f0
ud2