Function at 0xd02440
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
xor ebx, ebx
sub esp, 0x24
movzx eax, word [ebp + 0x20]
cmp word [ebp + 0x1c], 0
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0x18]
mov word [ebp - 0x2e], ax
jne 0xd02cc5
movsx eax, word [esi]
mov edx, dword [ebp + 0xc]
mov ebx, dword [ebp + 0xc]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e0]
mov ecx, edx
add ecx, 0x12
mov word [edx], ax
movsx eax, word [esi]
lea eax, [eax + eax*8 + 1]
movzx eax, word [eax + eax + 0x12e31e0]
mov word [edx + 2], ax
movsx eax, word [esi]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e4]
mov word [edx + 4], ax
movsx eax, word [esi]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e6]
mov word [edx + 6], ax
movsx eax, word [esi]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31e8]
mov word [edx + 8], ax
movsx eax, word [esi]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31ea]
mov word [edx + 0xa], ax
movsx eax, word [esi]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31ec]
mov word [edx + 0xc], ax
movsx eax, word [esi]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31ee]
mov word [edx + 0xe], ax
movsx eax, word [esi]
lea eax, [eax + eax*8]
movzx eax, word [eax + eax + 0x12e31f0]
mov word [edx + 0x10], ax
movsx edx, word [esi + 2]
lea eax, [edx*8]
sub eax, edx
movzx eax, word [eax + eax + 0x12e43e0]
mov word [ebx + 0x12], ax
movsx edx, word [esi + 2]
lea eax, [edx*8]
sub eax, edx
movzx eax, word [eax + eax + 0x12e43e2]
mov word [ebx + 0x14], ax
movsx edx, word [esi + 2]
lea eax, [edx*8]
sub eax, edx
movzx eax, word [eax + eax + 0x12e43e4]
mov word [ebx + 0x16], ax
movsx edx, word [esi + 2]
lea eax, [edx*8]
sub eax, edx
movzx eax, word [eax + eax + 0x12e43e6]
mov word [ecx + 6], ax
movsx edx, word [esi + 2]
lea eax, [edx*8]
sub eax, edx
movzx eax, word [eax + eax + 0x12e43e8]
mov word [ecx + 8], ax
movsx edx, word [esi + 2]
lea eax, [edx*8]
sub eax, edx
movzx eax, word [eax + eax + 0x12e43ea]
mov word [ecx + 0xa], ax
movsx edx, word [esi + 2]
lea eax, [edx*8]
sub eax, edx
movzx eax, word [eax + eax + 0x12e43ec]
mov word [ecx + 0xc], ax
movsx eax, word [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e51e0]
add word [ebx], ax
movsx eax, word [esi + 6]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5360]
add word [ebx + 6], ax
movsx eax, word [esi + 8]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5660]
add word [ebx + 0xc], ax
movsx eax, word [esi + 0xa]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5960]
add word [ecx], ax
movsx eax, word [esi + 0xc]
movzx eax, word [eax*8 + 0x12e5a20]
add word [ebx + 0x18], ax
movsx eax, word [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e51e2]
add word [ebx + 2], ax
movsx eax, word [esi + 6]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5362]
add word [ebx + 8], ax
movsx eax, word [esi + 8]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5662]
add word [ebx + 0xe], ax
movsx eax, word [esi + 0xa]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5962]
add word [ebx + 0x14], ax
movsx eax, word [esi + 0xc]
movzx eax, word [eax*8 + 0x12e5a22]
add word [ebx + 0x1a], ax
movsx eax, word [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e51e4]
add word [ebx + 4], ax
movsx eax, word [esi + 6]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5364]
add word [ebx + 0xa], ax
movsx eax, word [esi + 8]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5664]
add word [ebx + 0x10], ax
movsx eax, word [esi + 0xa]
lea eax, [eax + eax*2]
movzx eax, word [eax + eax + 0x12e5964]
add word [ebx + 0x16], ax
movsx eax, word [esi + 0xc]
movzx ecx, word [ebx]
movzx eax, word [eax*8 + 0x12e5a24]
add word [ebx + 0x1c], ax
mov edx, ecx
movsx eax, word [esi + 0xc]
add dx, word [0x12e31c0]
movzx eax, word [eax*8 + 0x12e5a26]
mov word [ebx], dx
add word [ebx + 0x1e], ax
mov ebx, dword [ebp + 0x10]
movsx eax, word [ebx]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax], dx
mov word [ebx], cx
movzx ecx, word [eax + 2]
mov edx, ecx
add dx, word [0x12e31c2]
mov word [eax + 2], dx
movsx eax, word [ebx + 2]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 2], dx
mov word [eax + 2], cx
movzx ecx, word [ebx + 4]
mov edx, ecx
add dx, word [0x12e31c4]
mov word [ebx + 4], dx
mov ebx, eax
movsx eax, word [eax + 4]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax + 4], dx
mov word [ebx + 4], cx
movzx ecx, word [eax + 6]
mov edx, ecx
add dx, word [0x12e31c6]
mov word [eax + 6], dx
movsx eax, word [ebx + 6]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 6], dx
mov word [eax + 6], cx
movzx ecx, word [ebx + 8]
mov edx, ecx
add dx, word [0x12e31c8]
mov word [ebx + 8], dx
mov ebx, eax
movsx eax, word [eax + 8]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax + 8], dx
mov word [ebx + 8], cx
movzx ecx, word [eax + 0xa]
mov edx, ecx
add dx, word [0x12e31ca]
mov word [eax + 0xa], dx
movsx eax, word [ebx + 0xa]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 0xa], dx
mov word [eax + 0xa], cx
movzx ecx, word [ebx + 0xc]
mov edx, ecx
add dx, word [0x12e31cc]
mov word [ebx + 0xc], dx
mov ebx, eax
movsx eax, word [eax + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax + 0xc], dx
mov word [ebx + 0xc], cx
movzx ecx, word [eax + 0xe]
mov edx, ecx
add dx, word [0x12e31ce]
mov word [eax + 0xe], dx
movsx eax, word [ebx + 0xe]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 0xe], dx
mov word [eax + 0xe], cx
movzx ecx, word [ebx + 0x10]
mov edx, ecx
add dx, word [0x12e31d0]
mov word [ebx + 0x10], dx
mov ebx, eax
movsx eax, word [eax + 0x10]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax + 0x10], dx
mov word [ebx + 0x10], cx
movzx ecx, word [eax + 0x12]
mov edx, ecx
add dx, word [0x12e31d2]
mov word [eax + 0x12], dx
movsx eax, word [ebx + 0x12]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 0x12], dx
mov word [eax + 0x12], cx
movzx ecx, word [ebx + 0x14]
mov edx, ecx
add dx, word [0x12e31d4]
mov word [ebx + 0x14], dx
mov ebx, eax
movsx eax, word [eax + 0x14]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax + 0x14], dx
mov word [ebx + 0x14], cx
movzx ecx, word [eax + 0x16]
mov edx, ecx
add dx, word [0x12e31d6]
mov word [eax + 0x16], dx
movsx eax, word [ebx + 0x16]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 0x16], dx
mov word [eax + 0x16], cx
movzx ecx, word [ebx + 0x18]
mov edx, ecx
add dx, word [0x12e31d8]
mov word [ebx + 0x18], dx
mov ebx, eax
movsx eax, word [eax + 0x18]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax + 0x18], dx
mov word [ebx + 0x18], cx
movzx ecx, word [eax + 0x1a]
mov edx, ecx
add dx, word [0x12e31da]
mov word [eax + 0x1a], dx
movsx eax, word [ebx + 0x1a]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 0x1a], dx
mov word [eax + 0x1a], cx
movzx ecx, word [ebx + 0x1c]
mov edx, ecx
add dx, word [0x12e31dc]
mov word [ebx + 0x1c], dx
mov ebx, eax
movsx eax, word [eax + 0x1c]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0xc]
mov word [eax + 0x1c], dx
mov word [ebx + 0x1c], cx
movzx ecx, word [eax + 0x1e]
mov edx, ecx
add dx, word [0x12e31de]
mov word [eax + 0x1e], dx
movsx eax, word [ebx + 0x1e]
mov ebx, dword [ebp + 0xc]
imul eax, eax, 0x2aab
sar eax, 0xf
add edx, eax
mov eax, dword [ebp + 0x10]
mov word [ebx + 0x1e], dx
xor edx, edx
cmp word [ebp - 0x2e], 0
mov word [eax + 0x1e], cx
jne 0xd02cf0
mov edx, dword [ebp + 0xc]
movzx eax, word [edx]
cmp ax, 0x7f
jg 0xd02d3b
mov word [edx], pe_nt_image_headers32
mov ebx, 0x100
mov ecx, dword [ebp + 0xc]
movzx eax, word [ecx + 2]
cmp ax, bx
jge 0xd029ef
mov word [ecx + 2], 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 + 4]
cmp ax, bx
jge 0xd02a1f
mov word [edx + 4], 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 + 6]
cmp ax, bx
jge 0xd02a4f
mov word [ecx + 6], 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 + 8]
cmp ax, bx
jge 0xd02a7f
mov word [edx + 8], 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 + 0xa]
cmp ax, bx
jge 0xd02aaf
mov word [ecx + 0xa], 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 + 0xc]
cmp ax, bx
jge 0xd02adf
mov word [edx + 0xc], 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 + 0xe]
cmp ax, bx
jge 0xd02b0f
mov word [ecx + 0xe], 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 + 0x10]
cmp ax, bx
jge 0xd02b3f
mov word [edx + 0x10], 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 + 0x12]
cmp ax, bx
jge 0xd02b6f
mov word [ecx + 0x12], 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 + 0x14]
cmp ax, bx
jge 0xd02b9f
mov word [edx + 0x14], 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 + 0x16]
cmp ax, bx
jge 0xd02bcf
mov word [ecx + 0x16], 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 + 0x18]
cmp ax, bx
jge 0xd02bff
mov word [edx + 0x18], 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 + 0x1a]
cmp ax, bx
jge 0xd02c2f
mov word [ecx + 0x1a], 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
mov eax, dword [ebp + 0xc]
cmovne ebx, ecx
cmp word [eax + 0x1c], bx
jge 0xd02c5a
mov word [eax + 0x1c], bx
add esp, 0x24
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, edx
sar ecx, 0x1f
xor ecx, 0x7fffffff
lea esi, [esi]
movsx eax, word [edi + ebx*2 + 0x20]
shl eax, 0xe
lea edx, [ecx + eax]
xor eax, ecx
js 0xd02c89
mov eax, edx
xor eax, ecx
js 0xd02d2b
movsx eax, word [edi + ebx*2 + 0x40]
shl eax, 0xe
lea ecx, [eax + edx]
xor eax, edx
js 0xd02c9e
mov eax, ecx
xor eax, edx
js 0xd02d1b
cmp ecx, 0x7fffffff
mov eax, 0x7fff
je 0xd02cb4
lea eax, [ecx + 0x8000]
shr eax, 0x10
mov word [ebp + ebx*2 - 0x2c], ax
add ebx, 1
cmp ebx, 0x10
je 0xd02d5e
movsx edx, word [ebx + ebx + 0x12e31c0]
movsx eax, word [edi + ebx*2]
shl edx, 0xe
shl eax, 0xe
lea ecx, [eax + edx]
xor eax, edx
js 0xd02c70
mov eax, ecx
xor eax, edx
jns 0xd02c70
jmp 0xd02c62
movzx eax, word [edi + edx*2 + 0x20]
mov ecx, dword [ebp + 0xc]
mov word [edi + edx*2 + 0x40], ax
movzx eax, word [edi + edx*2]
mov word [edi + edx*2 + 0x20], ax
movzx eax, word [ecx + edx*2]
mov word [edi + edx*2], ax
add edx, 1
cmp edx, 0x10
jne 0xd02cf0
jmp 0xd029c3
mov ecx, edx
sar ecx, 0x1f
xor ecx, 0x7fffffff
jmp 0xd02c9e
mov edx, ecx
sar edx, 0x1f
xor edx, 0x7fffffff
jmp 0xd02c89
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 0xd029dd
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 0xd02d60
mov ebx, dword [ebp + 0x10]
xor esi, esi
lea esi, [esi]
movsx eax, word [ebx + 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
sar ecx, 0xf
mov ebx, edx
xor ebx, 0x7fff
cmp ecx, edx
cmovne eax, ebx
mov ebx, dword [ebp + 0x10]
sar ax, 1
mov word [ebx + esi*2], ax
add esi, 1
cmp esi, 0x10
jne 0xd02de0
jmp 0xd029c3