Function at 0x7d1fb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xcc
mov eax, dword [ebp + 0x14]
imul eax, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
add eax, dword [ebp + 0xc]
mov edx, dword [edx + 0x44]
imul eax, eax, 0x1cc
add eax, edx
mov ecx, dword [eax + 0xf0]
mov dword [ebp - 0x9c], eax
mov eax, dword [eax + 0xec]
mov dword [ebp - 0xa4], ecx
sub eax, 3
cmp eax, 1
jbe 0x7d1fff
add esp, 0xcc
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebp - 0xa4]
add ecx, ecx
mov edi, dword [ebp + 0x18]
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x84], ecx
sub ecx, 0x10
mov dword [ebp - 0x80], ecx
add edx, 0xd
shr edx, 1
mov dword [ebp - 0x8c], edi
mov dword [ebp - 0x88], eax
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0xac], edx
cmp dword [ebp - 0xa4], 4
mov ebx, 8
mov edx, 8
jbe 0x7d20a8
xor eax, eax
cmp dword [ebp - 0xa8], 3
setle al
cmp dword [ebp - 0xa4], 0x18
setbe cl
ja 0x7d207b
mov ebx, dword [ebp - 0xac]
test eax, eax
mov edx, ebx
je 0x7d20a8
mov ebx, dword [ebp - 0x84]
cmp dword [ebp - 0xa4], 8
mov edx, ebx
jbe 0x7d20a8
test cl, cl
jne 0x7d252e
mov ebx, dword [ebp - 0x80]
test eax, eax
mov edx, ebx
jne 0x7d20a8
mov ebx, dword [ebp - 0xa4]
sub ebx, 6
mov edx, ebx
mov dword [esp + 0x24], 0
mov ecx, dword [ebp - 0x88]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ecx
mov esi, dword [ebp - 0xa4]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], esi
mov eax, dword [ebp - 0xa8]
mov dword [esp + 0x10], eax
mov edx, dword [ebp + 0x14]
mov dword [esp + 0xc], edx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], ecx
mov esi, dword [ebp + 0xc]
mov dword [esp + 4], esi
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x44]
mov dword [esp], eax
call fcn.007d1b40
mov ecx, dword [ebp + 8]
cmp byte [ecx + 0xc], 0
jns 0x7d2300
mov eax, dword [ebp - 0x9c]
mov esi, dword [ebp - 0xa8]
mov edx, dword [ebp - 0x9c]
mov esi, dword [eax + esi*4 + 0xd4]
imul eax, dword [ebp - 0xa8], 0x1e
mov dword [ebp - 0xb0], esi
lea ecx, [edx + eax + 0x20]
movzx edx, word [edi]
mov eax, 0x7ff
imul edx, ebx
cmp dx, 0x7ff
cmovg edx, eax
mov eax, 0xfffff800
cmp dx, 0xf800
cmovge eax, edx
mov edx, 2
mov word [ecx], ax
movzx eax, word [edi + 2]
mov word [ecx + 2], ax
movzx eax, word [edi + 0x10]
mov word [ecx + 0x10], ax
movzx eax, word [edx + edi + 2]
mov word [edx + ecx + 2], ax
movzx eax, word [edi + edx*8 + 0x10]
mov word [edx + ecx + 0x10], ax
add edx, 2
cmp edx, 0xe
jne 0x7d2168
mov ecx, dword [ebp - 0x88]
movzx eax, word [ecx]
sub word [edi], ax
mov dword [esp + 4], 0xba0140
mov dword [esp], edi
call fcn.007b9430
cmp dword [ebp - 0xb0], 1
mov dword [ebp - 0x98], eax
je 0x7d24af
movzx eax, word [edi + 0x10]
lea edx, [edi + 0x10]
mov ecx, 1
mov esi, dword [ebp - 0x88]
lea ebx, [ebp - 0x1c]
mov word [ebp - 0x1a], ax
sub ax, word [esi + 2]
mov word [edi + 0x10], ax
mov word [esi + 2], ax
movzx eax, word [edx + 0x10]
mov esi, dword [ebp - 0x88]
mov word [ebx + ecx*2 + 2], ax
sub ax, word [esi + ecx*2 + 2]
mov word [edx + 0x10], ax
add edx, 0x10
mov word [esi + ecx*2 + 2], ax
add ecx, 1
cmp ecx, 7
jne 0x7d21d8
shl dword [ebp - 0xb0], 7
mov eax, dword [ebp - 0xb0]
mov dword [esp], edi
add eax, 0xba0140
mov dword [esp + 4], eax
call fcn.007b9430
mov edx, 2
mov ecx, eax
movzx eax, word [ebp - 0x1a]
mov word [edi + 0x10], ax
lea esi, [esi]
movzx eax, word [edx + ebx + 2]
mov word [edi + edx*8 + 0x10], ax
add edx, 2
cmp edx, 0xe
jne 0x7d2230
mov eax, dword [ebp - 0x98]
add dword [ebp - 0xa0], eax
sub dword [ebp - 0xa0], ecx
add dword [ebp - 0xa8], 1
sub edi, 0xffffff80
add dword [ebp - 0x88], 0x10
cmp dword [ebp - 0xa8], 6
jne 0x7d2044
mov eax, dword [ebp - 0xa0]
test eax, eax
jle 0x7d253e
mov ebx, dword [ebp - 0x9c]
lea ecx, [ebp - 0x7c]
lea esi, [ecx + 0x60]
lea esi, [esi]
cmp dword [ebx + 0xd4], 1
je 0x7d2416
mov edx, dword [ebp - 0x8c]
movzx eax, word [ecx + 2]
mov word [edx + 0x10], ax
mov edx, 2
movzx eax, word [edx + ecx + 2]
mov edi, dword [ebp - 0x8c]
mov word [edi + edx*8 + 0x10], ax
add edx, 2
cmp edx, 0xe
jne 0x7d22b0
add ecx, 0x10
add ebx, 4
sub dword [ebp - 0x8c], 0xffffff80
cmp ecx, esi
jne 0x7d2290
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call dword [0xc26040]
mov edx, dword [ebp - 0x9c]
mov dword [edx + 0x15c], eax
add esp, 0xcc
pop ebx
pop esi
pop edi
pop ebp
ret
imul eax, dword [ebp - 0xa8], 0x1e
mov edx, dword [ebp - 0x9c]
lea ecx, [edx + eax + 0x20]
movzx edx, word [edi]
mov eax, 0x7ff
imul edx, ebx
cmp dx, 0x7ff
cmovg edx, eax
mov eax, 0xfffff800
cmp dx, 0xf800
cmovge eax, edx
mov edx, 2
mov word [ecx], ax
movzx eax, word [edi + 2]
mov word [ecx + 2], ax
movzx eax, word [edi + 0x10]
mov word [ecx + 0x10], ax
lea esi, [esi]
movzx eax, word [edx + edi + 2]
mov word [edx + ecx + 2], ax
movzx eax, word [edi + edx*8 + 0x10]
mov word [edx + ecx + 0x10], ax
add edx, 2
cmp edx, 0xe
jne 0x7d2350
mov ecx, dword [ebp - 0x88]
mov esi, dword [ebp - 0xa8]
movzx eax, word [ecx]
sub word [edi], ax
mov eax, dword [ebp - 0x9c]
cmp dword [eax + esi*4 + 0xd4], 1
je 0x7d244d
mov ebx, edi
xor esi, esi
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x94], 0
lea esi, [esi]
movzx ecx, word [ebx + 0x10]
add ebx, 0x10
movsx eax, cx
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x88]
sub cx, word [eax + esi*2 + 2]
movsx eax, cx
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x88]
add dword [ebp - 0x90], eax
mov word [edx + esi*2 + 2], cx
add esi, 1
cmp esi, 7
jne 0x7d23b0
mov ecx, dword [ebp - 0x94]
add dword [ebp - 0xa0], ecx
mov esi, dword [ebp - 0x90]
sub dword [ebp - 0xa0], esi
jmp 0x7d2254
mov edx, dword [ebp - 0x8c]
movzx eax, word [ecx + 2]
mov word [edx + 2], ax
mov edx, 1
lea esi, [esi]
movzx eax, word [ecx + edx*2 + 2]
mov edi, dword [ebp - 0x8c]
mov word [edi + edx*2 + 2], ax
add edx, 1
cmp edx, 7
jne 0x7d2430
jmp 0x7d22c8
mov dword [ebp - 0x90], 0
xor ebx, ebx
mov dword [ebp - 0x94], 0
movzx ecx, word [edi + ebx*2 + 2]
mov esi, dword [ebp - 0x88]
movsx eax, cx
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x88]
add dword [ebp - 0x94], eax
sub cx, word [edx + ebx*2 + 2]
movsx eax, cx
mov edx, eax
sar edx, 0x1f
xor eax, edx
mov word [esi + ebx*2 + 2], cx
add ebx, 1
sub eax, edx
add dword [ebp - 0x90], eax
cmp ebx, 7
jne 0x7d2463
jmp 0x7d23f9
movzx eax, word [edi + 2]
mov edx, 1
mov esi, dword [ebp - 0x88]
lea ebx, [ebp - 0x1c]
mov word [ebp - 0x1a], ax
sub ax, word [esi + 2]
mov word [edi + 2], ax
mov word [esi + 2], ax
movzx eax, word [edi + edx*2 + 2]
mov ecx, dword [ebp - 0x88]
mov word [ebx + edx*2 + 2], ax
sub ax, word [ecx + edx*2 + 2]
mov word [edi + edx*2 + 2], ax
mov word [ecx + edx*2 + 2], ax
add edx, 1
cmp edx, 7
jne 0x7d24d1
mov dword [esp + 4], 0xba01c0
mov dword [esp], edi
call fcn.007b9430
mov edx, 1
mov ecx, eax
movzx eax, word [ebp - 0x1a]
mov word [edi + 2], ax
movzx eax, word [ebx + edx*2 + 2]
mov word [edi + edx*2 + 2], ax
add edx, 1
cmp edx, 7
jne 0x7d2517
jmp 0x7d2242
mov ebx, dword [ebp - 0xa4]
add ebx, 8
mov edx, ebx
jmp 0x7d20a8
mov edi, dword [ebp - 0x9c]
mov dword [edi + 0xd4], 0
mov dword [edi + 0xd8], 0
mov dword [edi + 0xdc], 0
mov dword [edi + 0xe0], 0
mov dword [edi + 0xe4], 0
mov dword [edi + 0xe8], 0
jmp 0x7d22d9