Function at 0x6fc84150
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x27c
mov edi, dword [esp + 0x298]
imul edi, dword [ecx*4 + 0x7074bc1c]
mov ebp, dword [esp + 0x2a0]
mov dword [esp + 0x4c], eax
xor eax, eax
mov dword [esp + 0x50], edx
mov dword [esp + 0x298], edi
sar dword [esp + 0x298], 6
test ebp, ebp
mov dword [esp + 0x54], ecx
jne 0x6fc849a0
mov ebx, dword [esp + 0x4c]
mov edx, 0x3f
mov dword [esp + 0x68], 0x1000
movzx ecx, word [edx + edx + 0x7074c4e0]
cmp word [ebx + ecx*2], 0
jne 0x6fc8498a
sub edx, 1
cmp edx, 0xffffffff
jne 0x6fc841a6
mov dword [esp + 0x58], 3
lea edi, [esp + 0x6c]
xor esi, esi
mov dword [esp + 0x24], edi
xor ebp, ebp
xor edi, edi
movzx eax, ax
mov word [esp + 0x40], si
mov word [esp + 0x42], di
mov dword [esp + 0x10], 0xffffffff
mov dword [esp + 0x48], 0x1000
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 8], 0
mov dword [esp + 0x5c], eax
mov dword [esp + 0x18], ebp
lea esi, [esi]
mov eax, dword [esp + 8]
mov ebx, dword [esp + 0x2a0]
movzx edi, word [eax + eax + 0x7074c4e0]
mov eax, dword [esp + 0x290]
movzx ebp, word [eax + edi*2]
imul ebp, dword [esp + 0x54]
sar ebp, 4
lea eax, [ebp + ebp]
sub ebp, 1
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
or ebp, 1
test ebx, ebx
movsx ecx, word [eax + edi*2]
mov eax, dword [esp + 0x4c]
movzx esi, word [eax + edi*2]
movsx eax, si
mov dword [esp + 0xc], eax
mov eax, ecx
je 0x6fc84741
sar eax, 0x1f
mov edx, 0xffff
mov ebx, eax
xor ebx, ecx
sub ebx, eax
movsx eax, word [edi + edi + 0x7074c460]
imul eax, dword [esp + 0x5c]
shl ebx, 4
add eax, 0x20
sar eax, 7
cmp eax, 0xffff
cmova eax, edx
xor dx, dx
cmp bx, ax
jbe 0x6fc8429e
sub ebx, eax
movzx edx, bx
movzx eax, word [edi + edi + 0x7074c360]
add edx, eax
movzx eax, word [edi + edi + 0x7074c3e0]
imul edx, eax
mov eax, ecx
imul eax, ecx
shr edx, 0x10
imul edx, edx
sar edx, 4
lea ebx, [edx + eax*4]
mov edx, 0x66666667
mov eax, ebx
imul edx
sar ebx, 0x1f
sar edx, 1
sub edx, ebx
imul edx, dword [esp + 0x298]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
add eax, 1
cmp eax, 2
mov dword [esp + 0x14], eax
ja 0x6fc844e0
lea eax, [esp + 0x16c]
add ebp, dword [esp + 0x1c]
test ecx, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 8]
js 0x6fc847e2
mov esi, 1
sub ebp, ecx
mov word [esp + eax*4 + 0x16e], si
mov ecx, ebp
mov ebx, dword [esp + 0x2a0]
test ebx, ebx
je 0x6fc847b9
movsx ecx, cx
mov edx, ecx
sar edx, 0x1f
mov eax, edx
xor eax, ecx
sub eax, edx
movsx edx, word [edi + edi + 0x7074c460]
imul edx, dword [esp + 0x5c]
mov ebx, eax
shl ebx, 4
mov eax, 0xffff
add edx, 0x20
sar edx, 7
cmp edx, 0xffff
cmova edx, eax
xor ax, ax
cmp bx, dx
jbe 0x6fc84378
sub ebx, edx
movzx eax, bx
movzx edx, word [edi + edi + 0x7074c360]
imul ecx, ecx
add eax, edx
movzx edx, word [edi + edi + 0x7074c3e0]
imul eax, edx
mov edx, 0x66666667
shr eax, 0x10
imul eax, eax
sar eax, 4
lea ecx, [eax + ecx*4]
mov eax, ecx
imul edx
sar ecx, 0x1f
sar edx, 1
sub edx, ecx
imul edx, dword [esp + 0x298]
mov ebp, edx
mov eax, dword [esp + 0x24]
mov edx, 1
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0x14]
mov eax, dword [eax - 4]
mov word [edi + ecx*4], dx
lea edi, [ebp + eax + 0x1800]
mov eax, ecx
mov ecx, dword [esp + 0x28]
sub eax, ecx
test eax, eax
jle 0x6fc8443f
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x18]
lea ecx, [esp + ecx*4 + 0x6c]
lea esi, [esi]
movzx esi, byte [eax + 0x7074be1f]
mov ebx, dword [esp + 0xc]
movzx edx, byte [eax + 0x7074bd1f]
add ebx, dword [ecx]
shl esi, 0xb
shl edx, 0xb
add esi, ebx
add edx, ebx
cmp esi, edi
jae 0x6fc84420
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 8]
mov word [edi + ebx*4], ax
mov edi, esi
cmp edx, ebp
jae 0x6fc84433
mov esi, dword [esp + 8]
mov ebp, edx
mov word [esp + 0x40], ax
mov dword [esp + 0x10], esi
add ecx, 4
sub eax, 1
jne 0x6fc843f0
mov dword [esp + 0x18], ebp
mov eax, dword [esp + 0x10]
cmp dword [esp + 8], eax
je 0x6fc847cb
mov eax, dword [esp + 0x24]
mov dword [eax], edi
mov eax, dword [esp + 0x20]
add eax, dword [esp + 0x48]
cmp edi, eax
jb 0x6fc844d0
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x28]
add edx, 0x800
cmp dword [esp + edi*4 + 0x6c], edx
jbe 0x6fc84482
mov ecx, edi
add ecx, 1
cmp dword [esp + ecx*4 + 0x6c], edx
ja 0x6fc84475
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0x28]
cmp edi, ecx
jge 0x6fc844a9
mov ecx, dword [esp + 0x20]
lea edx, [esp + edi*4 + 0x6c]
mov ebx, dword [esp + 0x24]
lea esi, [esi]
add dword [edx], ecx
add edx, 4
cmp ebx, edx
jne 0x6fc844a0
mov edi, eax
add dword [esp + 8], 1
mov eax, dword [esp + 0x58]
add dword [esp + 0x24], 4
cmp dword [esp + 8], eax
jg 0x6fc84819
mov dword [esp + 0x48], edi
jmp 0x6fc84210
mov eax, dword [esp + 8]
mov dword [esp + 0x28], eax
jmp 0x6fc844ab
mov eax, dword [esp + 0xc]
add eax, 0x19
cmp eax, 0x32
ja 0x6fc84755
mov eax, dword [esp + 0xc]
cmp eax, 1
jle 0x6fc848ce
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x34], 0x7074c320
mov ebx, edx
imul ebx, eax
sub ebx, ecx
add ebx, ebp
mov esi, ebx
sub esi, edx
cmp eax, 0x18
lea ecx, [eax - 1]
mov dword [esp + 0x14], ecx
jg 0x6fc8452d
mov eax, dword [ecx*4 + 0x7074bcc0]
mov dword [esp + 0x34], eax
cmp dword [esp + 0x14], 0x18
mov dword [esp + 0x38], 0x7074c320
jg 0x6fc8454b
mov eax, dword [esp + 0xc]
mov eax, dword [eax*4 + 0x7074bcb8]
mov dword [esp + 0x38], eax
cmp dword [esp + 0xc], 6
mov dword [esp + 0x3c], 0x7074c320
jg 0x6fc84569
mov eax, dword [esp + 0x14]
mov eax, dword [eax*4 + 0x7074bc9c]
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x14], 6
mov dword [esp + 0x30], 0x7074c320
jg 0x6fc84587
mov eax, dword [esp + 0xc]
mov eax, dword [eax*4 + 0x7074bc94]
mov dword [esp + 0x30], eax
mov ebp, dword [esp + 0x2a0]
test ebp, ebp
je 0x6fc847f6
movsx ebx, bx
mov edx, 0xffff
mov eax, ebx
sar eax, 0x1f
mov ecx, eax
xor ecx, ebx
sub ecx, eax
movsx eax, word [edi + edi + 0x7074c460]
imul eax, dword [esp + 0x5c]
shl ecx, 4
add eax, 0x20
sar eax, 7
cmp eax, 0xffff
cmova eax, edx
xor dx, dx
cmp cx, ax
mov word [esp + 0x1c], ax
jbe 0x6fc845d9
sub ecx, eax
movzx edx, cx
movzx ebp, word [edi + edi + 0x7074c360]
imul ebx, ebx
movzx edi, word [edi + edi + 0x7074c3e0]
add edx, ebp
imul edx, edi
shr edx, 0x10
imul edx, edx
sar edx, 4
lea ecx, [edx + ebx*4]
mov edx, 0x66666667
mov eax, ecx
imul edx
sar ecx, 0x1f
sar edx, 1
sub edx, ecx
movsx ecx, si
movzx esi, word [esp + 0x1c]
imul edx, dword [esp + 0x298]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x1f
mov eax, edx
xor eax, ecx
sub eax, edx
xor edx, edx
shl eax, 4
cmp si, ax
jae 0x6fc8463b
sub eax, esi
movzx edx, ax
add edx, ebp
imul edi, edx
mov edx, 0x66666667
imul ecx, ecx
shr edi, 0x10
imul edi, edi
sar edi, 4
lea ecx, [edi + ecx*4]
mov eax, ecx
imul edx
sar ecx, 0x1f
sar edx, 1
sub edx, ecx
imul edx, dword [esp + 0x298]
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x28]
sub edx, dword [esp + 0x2c]
sub eax, edi
test eax, eax
mov dword [esp + 0x44], edx
jle 0x6fc84980
lea ebp, [esp + edi*4 + 0x6c]
mov edi, 0xf0000000
mov dword [esp + 0x1c], edi
nop
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
add edx, dword [ebp]
movzx ecx, byte [edi + eax - 1]
mov edi, dword [esp + 0x44]
shl ecx, 0xb
lea ebx, [edx + edi]
mov edi, dword [esp + 0x38]
add ecx, edx
movzx esi, byte [edi + eax - 1]
mov edi, dword [esp + 0xc]
shl esi, 0xb
add esi, ebx
cmp ecx, esi
jbe 0x6fc846c8
mov edi, dword [esp + 0x14]
mov ecx, esi
cmp ecx, dword [esp + 0x1c]
jae 0x6fc846e6
mov esi, dword [esp + 8]
mov dword [esp + 0x1c], ecx
mov word [esp + esi*4 + 0x16c], ax
mov word [esp + esi*4 + 0x16e], di
mov edi, dword [esp + 0x3c]
movzx ecx, byte [edi + eax - 1]
mov edi, dword [esp + 0x30]
shl ecx, 0xb
add edx, ecx
movzx ecx, byte [edi + eax - 1]
shl ecx, 0xb
add ebx, ecx
mov ecx, dword [esp + 0xc]
cmp edx, ebx
jbe 0x6fc84710
mov ecx, dword [esp + 0x14]
mov edx, ebx
cmp edx, dword [esp + 0x18]
jae 0x6fc8472c
mov edi, dword [esp + 8]
mov word [esp + 0x40], ax
mov word [esp + 0x42], cx
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], edi
add ebp, 4
sub eax, 1
jne 0x6fc84690
mov edi, dword [esp + 0x1c]
jmp 0x6fc8444d
imul eax, dword [esp + 0x298]
imul eax, ecx
mov dword [esp + 0x20], eax
jmp 0x6fc842e0
mov ebp, dword [esp + 8]
mov edi, dword [esp + 0x28]
mov eax, ebp
sub eax, edi
test eax, eax
jle 0x6fc84980
mov ebx, dword [esp + 0x18]
lea ecx, [esp + edi*4 + 0x6c]
mov edi, 0xf0000000
mov edx, dword [ecx]
add edx, 0xf000
cmp edx, edi
jae 0x6fc84794
mov word [esp + ebp*4 + 0x16c], ax
mov edi, edx
mov word [esp + ebp*4 + 0x16e], si
cmp edx, ebx
jae 0x6fc847a8
mov word [esp + 0x40], ax
mov ebx, edx
mov word [esp + 0x42], si
mov dword [esp + 0x10], ebp
add ecx, 4
sub eax, 1
jne 0x6fc84776
mov dword [esp + 0x18], ebx
jmp 0x6fc8444d
mov ebp, dword [esp + 0x298]
imul ebp, ecx
imul ebp, ecx
jmp 0x6fc843b6
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 8]
movzx eax, word [eax + ecx*4 + 2]
mov word [esp + 0x42], ax
jmp 0x6fc8444d
mov edx, 0xffffffff
add ecx, ebp
mov word [esp + eax*4 + 0x16e], dx
jmp 0x6fc84328
mov eax, dword [esp + 0x298]
mov edx, dword [esp + 0x298]
imul eax, ebx
imul edx, esi
imul ebx, eax
imul edx, esi
mov dword [esp + 0x2c], ebx
jmp 0x6fc84667
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x294]
test ebx, ebx
js 0x6fc848c3
mov eax, dword [esp + 0x4c]
mov edx, pe_nt_image_headers32
test al, 1
mov edi, eax
jne 0x6fc849f9
test edi, 2
jne 0x6fc849e8
mov ecx, edx
xor eax, eax
shr ecx, 2
test dl, 2
rep stosd dword es:[edi], eax
jne 0x6fc8496c
and edx, 1
jne 0x6fc84964
mov edi, dword [esp + 0x10]
movzx ecx, word [esp + 0x42]
mov esi, dword [esp + 0x4c]
movzx eax, word [edi + edi + 0x7074c4e0]
movsx ebx, cx
mov edx, ebx
sar edx, 0x1f
mov word [esi + eax*2], cx
movsx eax, word [esp + 0x40]
xor ebx, edx
sub ebx, edx
sub edi, eax
mov eax, edi
js 0x6fc848c1
movsx edx, word [esp + eax*4 + 0x16e]
movzx ecx, word [eax + eax + 0x7074c4e0]
mov word [esi + ecx*2], dx
mov ecx, edx
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add ebx, edx
movsx edx, word [esp + eax*4 + 0x16c]
sub eax, edx
jns 0x6fc84896
mov eax, ebx
add esp, 0x27c
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x34], 0x7074c320
mov ebx, esi
imul ebx, eax
sub ebx, ecx
sub ebx, ebp
add esi, ebx
cmp eax, 0xffffffe8
jl 0x6fc848fb
not eax
mov eax, dword [eax*4 + 0x7074bcc0]
mov dword [esp + 0x34], eax
cmp dword [esp + 0x14], 0xffffffe8
mov dword [esp + 0x38], 0x7074c320
jl 0x6fc8491b
mov eax, dword [esp + 0x14]
not eax
mov eax, dword [eax*4 + 0x7074bcc0]
mov dword [esp + 0x38], eax
cmp dword [esp + 0xc], 0xfffffffa
mov dword [esp + 0x3c], 0x7074c320
jl 0x6fc8493b
mov eax, dword [esp + 0xc]
not eax
mov eax, dword [eax*4 + 0x7074bc9c]
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x14], 0xfffffffa
mov dword [esp + 0x30], 0x7074c320
jl 0x6fc84587
mov eax, dword [esp + 0x14]
not eax
mov eax, dword [eax*4 + 0x7074bc9c]
mov dword [esp + 0x30], eax
jmp 0x6fc84587
mov byte [edi], 0
jmp 0x6fc84866
xor eax, eax
add edi, 2
mov word [edi - 2], ax
and edx, 1
je 0x6fc84866
jmp 0x6fc84964
mov edi, 0xf0000000
jmp 0x6fc8444d
mov edi, edx
cmp edx, 2
mov edx, 3
cmovg edx, edi
mov dword [esp + 0x58], edx
jmp 0x6fc841c9
mov dword [esp], edx
call dword [0x70fcbe48]
mov edi, dword [esp + 0x29c]
mov ecx, 0x10
mov edx, 0x8000
add edi, edi
imul edi, eax
mov eax, 0x8000
jmp 0x6fc849c8
or eax, edx
mov esi, eax
mov ebx, eax
imul esi, eax
xor ebx, edx
cmp edi, esi
cmovb eax, ebx
shr edx, 1
sub ecx, 1
jne 0x6fc849c6
add eax, 0x30
shr eax, 6
jmp 0x6fc84195
xor ecx, ecx
add edi, 2
mov word [edi - 2], cx
sub edx, 2
jmp 0x6fc8484b
mov byte [eax], 0
lea edi, [eax + 1]
mov dl, 0x7f
jmp 0x6fc8483f