Function at 0xd01a80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
xor ebx, ebx
sub esp, 0x28
movzx eax, word [ebp + 0x20]
cmp word [ebp + 0x1c], 0
mov word [ebp - 0x34], ax
jne 0xd0229f
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
movsx eax, word [edx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e0]
mov word [ecx], ax
movsx eax, word [edx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e2]
mov word [ecx + 2], ax
movsx eax, word [edx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e4]
mov word [ecx + 4], ax
movsx eax, word [edx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e6]
mov word [ecx + 6], ax
movsx eax, word [edx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e8]
mov word [ecx + 8], ax
movsx eax, word [edx]
add ecx, 0xa
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp + 8]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31ea]
mov esi, edx
add esi, 0x12
mov word [edx + 0xa], ax
movsx eax, word [ecx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31ec]
mov word [edx + 0xc], ax
movsx eax, word [ecx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31ee]
mov word [edx + 0xe], ax
movsx eax, word [ecx]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31f0]
mov word [edx + 0x10], ax
movsx eax, word [ecx + 2]
imul eax, eax, 0xe
movsx edx, word [eax + 0x12e43e0]
movsx eax, word [ecx + 8]
imul eax, eax, 0xe
movsx eax, word [eax + 0x12e6420]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov eax, dword [ebp + 0xc]
cmovne edx, ebx
mov word [eax + 0x12], dx
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
movsx eax, word [edx + 2]
imul eax, eax, 0xe
movsx edx, word [eax + 0x12e43e2]
movsx eax, word [ecx + 8]
imul eax, eax, 0xe
movsx eax, word [eax + 0x12e6422]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 8]
cmovne edx, ebx
mov word [esi + 2], dx
mov edx, dword [ebp + 8]
movsx eax, word [edx + 2]
imul eax, eax, 0xe
movsx edx, word [eax + 0x12e43e4]
movsx eax, word [ecx + 8]
imul eax, eax, 0xe
movsx eax, word [eax + 0x12e6424]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 8]
cmovne edx, ebx
mov word [esi + 4], dx
mov edx, dword [ebp + 8]
movsx eax, word [edx + 2]
imul eax, eax, 0xe
movsx edx, word [eax + 0x12e43e6]
movsx eax, word [ecx + 8]
imul eax, eax, 0xe
movsx eax, word [eax + 0x12e6426]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 8]
cmovne edx, ebx
mov word [esi + 6], dx
mov edx, dword [ebp + 8]
movsx eax, word [edx + 2]
imul eax, eax, 0xe
movsx edx, word [eax + 0x12e43e8]
movsx eax, word [ecx + 8]
imul eax, eax, 0xe
movsx eax, word [eax + 0x12e6428]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 8]
cmovne edx, ebx
mov word [esi + 8], dx
mov edx, dword [ebp + 8]
movsx eax, word [edx + 2]
imul eax, eax, 0xe
movsx edx, word [eax + 0x12e43ea]
movsx eax, word [ecx + 8]
imul eax, eax, 0xe
movsx eax, word [eax + 0x12e642a]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
cmovne edx, ebx
mov word [esi + 0xa], dx
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
movsx eax, word [edx + 2]
imul eax, eax, 0xe
movsx edx, word [eax + 0x12e43ec]
movsx eax, word [ecx + 8]
imul eax, eax, 0xe
movsx eax, word [eax + 0x12e642c]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 0xc]
cmovne edx, ebx
mov word [esi + 0xc], dx
mov edx, dword [ebp + 8]
movsx eax, word [edx + 4]
movsx edx, word [ecx]
lea eax, [eax + eax*4]
movsx eax, word [eax + eax + 0x12e5b20]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmovne eax, ebx
mov word [edx], ax
movsx edx, word [edx + 2]
movsx eax, word [ecx + 4]
lea eax, [eax + eax*4]
movsx eax, word [eax + eax + 0x12e5b22]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmovne eax, ebx
mov word [edx + 2], ax
movsx edx, word [edx + 4]
movsx eax, word [ecx + 4]
lea eax, [eax + eax*4]
movsx eax, word [eax + eax + 0x12e5b24]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmovne eax, ebx
mov word [edx + 4], ax
movsx edx, word [edx + 6]
movsx eax, word [ecx + 4]
lea eax, [eax + eax*4]
movsx eax, word [eax + eax + 0x12e5b26]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmovne eax, ebx
mov word [edx + 6], ax
movsx edx, word [edx + 8]
movsx eax, word [ecx + 4]
lea eax, [eax + eax*4]
movsx eax, word [eax + eax + 0x12e5b28]
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov eax, dword [ebp + 0xc]
cmovne edx, ebx
mov word [eax + 8], dx
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
movsx eax, word [edx + 6]
movsx edx, word [ecx + 0xa]
movsx eax, word [eax*8 + 0x12e6020]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmovne eax, ebx
mov word [edx + 0xa], ax
movsx eax, word [ecx + 6]
mov ecx, dword [ebp - 0x30]
movsx eax, word [eax*8 + 0x12e6022]
movsx edx, word [ecx + 2]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp + 8]
cmovne eax, ebx
mov word [edx + 2], ax
movsx edx, word [edx + 4]
movsx eax, word [ecx + 6]
movsx eax, word [eax*8 + 0x12e6024]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp + 8]
cmovne eax, ebx
mov word [edx + 4], ax
movsx eax, word [edx + 6]
movsx edx, word [ecx + 6]
movsx edx, word [edx*8 + 0x12e6026]
add eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp + 0xc]
cmovne eax, ebx
xor edi, edi
mov word [edx + 6], ax
movzx ecx, word [ecx + edi*2]
movsx eax, word [edi + edi + 0x12e31c0]
mov word [ebp - 0x32], cx
movsx ecx, cx
add ecx, eax
mov eax, ecx
mov edx, ecx
sar eax, 0x1f
sar edx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp edx, eax
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
cmovne ecx, ebx
mov word [eax + edi*2], cx
movsx ecx, cx
movsx eax, word [edx + edi*2]
imul eax, eax, 0x2aab
mov ebx, eax
mov edx, eax
sar ebx, 0x1f
sar eax, 0x1e
mov esi, ebx
sar edx, 0xf
xor esi, 0x7fff
cmp eax, ebx
cmovne edx, esi
add edx, ecx
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 0xc]
cmovne edx, ebx
mov eax, dword [ebp + 0x10]
mov word [ecx + edi*2], dx
movzx edx, word [ebp - 0x32]
mov word [eax + edi*2], dx
add edi, 1
cmp edi, 0x10
jne 0xd01ef2
xor edx, edx
cmp word [ebp - 0x34], 0
jne 0xd022d0
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx]
cmp ax, 0x7f
jg 0xd02321
mov word [ecx], pe_nt_image_headers32
mov ebx, 0x100
mov edx, dword [ebp + 0xc]
movzx eax, word [edx + 2]
cmp ax, bx
jge 0xd01fbf
mov word [edx + 2], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
mov ecx, eax
sar edx, 0xf
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + 4]
cmp ax, bx
jge 0xd01fef
mov word [ecx + 4], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
mov edx, dword [ebp + 0xc]
cmovne ebx, ecx
movzx eax, word [edx + 6]
cmp ax, bx
jge 0xd0201f
mov word [edx + 6], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
mov ecx, eax
sar edx, 0xf
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + 8]
cmp ax, bx
jge 0xd0204f
mov word [ecx + 8], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
mov edx, dword [ebp + 0xc]
cmovne ebx, ecx
movzx eax, word [edx + 0xa]
cmp ax, bx
jge 0xd0207f
mov word [edx + 0xa], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
mov ecx, eax
sar edx, 0xf
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + 0xc]
cmp ax, bx
jge 0xd020af
mov word [ecx + 0xc], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
mov edx, dword [ebp + 0xc]
cmovne ebx, ecx
movzx eax, word [edx + 0xe]
cmp ax, bx
jge 0xd020df
mov word [edx + 0xe], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
mov ecx, eax
sar edx, 0xf
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + 0x10]
cmp ax, bx
jge 0xd0210f
mov word [ecx + 0x10], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
mov edx, dword [ebp + 0xc]
cmovne ebx, ecx
movzx eax, word [edx + 0x12]
cmp ax, bx
jge 0xd0213f
mov word [edx + 0x12], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
mov ecx, eax
sar edx, 0xf
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + 0x14]
cmp ax, bx
jge 0xd0216f
mov word [ecx + 0x14], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
mov edx, dword [ebp + 0xc]
cmovne ebx, ecx
movzx eax, word [edx + 0x16]
cmp ax, bx
jge 0xd0219f
mov word [edx + 0x16], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
mov ecx, eax
sar edx, 0xf
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + 0x18]
cmp ax, bx
jge 0xd021cf
mov word [ecx + 0x18], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
mov edx, dword [ebp + 0xc]
cmovne ebx, ecx
movzx eax, word [edx + 0x1a]
cmp ax, bx
jge 0xd021ff
mov word [edx + 0x1a], bx
mov eax, ebx
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
mov ecx, dword [ebp + 0xc]
cmp word [ecx + 0x1c], bx
jge 0xd0222a
mov word [ecx + 0x1c], bx
add esp, 0x28
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, edx
sar ecx, 0x1f
xor ecx, 0x7fffffff
lea esi, [esi]
mov edx, dword [ebp + 0x18]
movsx eax, word [edx + ebx*2 + 0x20]
shl eax, 0xe
lea edx, [ecx + eax]
xor eax, ecx
js 0xd0225c
mov eax, edx
xor eax, ecx
js 0xd02301
mov ecx, dword [ebp + 0x18]
movsx eax, word [ecx + ebx*2 + 0x40]
shl eax, 0xe
lea ecx, [eax + edx]
xor eax, edx
js 0xd02278
mov eax, ecx
xor eax, edx
js 0xd02311
cmp ecx, 0x7fffffff
mov eax, 0x7fff
je 0xd0228e
lea eax, [ecx + 0x8000]
shr eax, 0x10
mov word [ebp + ebx*2 - 0x2c], ax
add ebx, 1
cmp ebx, 0x10
je 0xd02344
mov ecx, dword [ebp + 0x18]
movsx edx, word [ebx + ebx + 0x12e31c0]
movsx eax, word [ecx + ebx*2]
shl edx, 0xe
shl eax, 0xe
lea ecx, [eax + edx]
xor eax, edx
js 0xd02240
mov eax, ecx
xor eax, edx
jns 0xd02240
jmp 0xd02232
mov ecx, dword [ebp + 0x18]
movzx eax, word [ecx + edx*2 + 0x20]
mov word [ecx + edx*2 + 0x40], ax
movzx eax, word [ecx + edx*2]
mov word [ecx + edx*2 + 0x20], ax
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + edx*2]
mov ecx, dword [ebp + 0x18]
mov word [ecx + edx*2], ax
add edx, 1
cmp edx, 0x10
jne 0xd022d0
jmp 0xd01f93
mov edx, ecx
sar edx, 0x1f
xor edx, 0x7fffffff
jmp 0xd0225c
mov ecx, edx
sar ecx, 0x1f
xor ecx, 0x7fffffff
jmp 0xd02278
cwde
lea ebx, [eax + 0x80]
mov eax, ebx
mov edx, ebx
sar eax, 0x1f
sar edx, 0xf
mov ecx, eax
xor ecx, 0x7fff
cmp edx, eax
cmovne ebx, ecx
jmp 0xd01fad
xor edi, edi
movsx eax, word [ebp + edi*2 - 0x2c]
imul eax, eax, 0xccd
mov edx, eax
mov esi, eax
sar edx, 0x1f
sar eax, 0x1e
mov ecx, edx
xor ecx, 0x7fff
sar esi, 0xf
cmp eax, edx
mov edx, dword [ebp + 0x14]
cmovne esi, ecx
movsx eax, word [edx + edi*2]
imul eax, eax, 0x7333
mov ecx, eax
mov edx, eax
sar ecx, 0x1f
sar eax, 0x1e
mov ebx, ecx
xor ebx, 0x7fff
sar edx, 0xf
cmp eax, ecx
cmovne edx, ebx
add edx, esi
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 0xc]
cmovne edx, ebx
mov word [ecx + edi*2], dx
add edi, 1
cmp edi, 0x10
jne 0xd02346
mov edx, dword [ebp + 0x10]
xor esi, esi
nop
movsx eax, word [edx + esi*2]
imul eax, eax, 0x2aab
mov ecx, eax
mov edx, eax
sar ecx, 0x1f
sar eax, 0x1e
mov ebx, ecx
xor ebx, 0x7fff
sar edx, 0xf
cmp eax, ecx
movsx eax, word [ebp + esi*2 - 0x2c]
cmovne edx, ebx
add edx, eax
mov eax, edx
mov ecx, edx
sar eax, 0x1f
sar ecx, 0xf
mov ebx, eax
xor ebx, 0x7fff
cmp ecx, eax
mov ecx, dword [ebp + 0xc]
cmovne edx, ebx
movsx edx, dx
movsx eax, word [ecx + esi*2]
sub eax, edx
mov edx, eax
mov ecx, eax
sar edx, 0x1f
mov ebx, edx
sar ecx, 0xf
xor ebx, 0x7fff
cmp ecx, edx
mov edx, dword [ebp + 0x10]
cmovne eax, ebx
sar ax, 1
mov word [edx + esi*2], ax
add esi, 1
cmp esi, 0x10
jne 0xd023c0
jmp 0xd01f93