Function at 0x309a844
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x13c
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 0x500
push 0
mov eax, dword [esi + 0x6d4]
call eax
push eax
mov eax, dword [esi + 0x6d0]
call eax
mov edi, dword [ebp + 0xc]
mov ebx, eax
mov dword [ebp + 8], ebx
test ebx, ebx
jne 0x309a880
mov ecx, dword [esi + 0x6dc]
push edi
call ecx
push ebx
push esi
call fcn.0309a094
mov eax, dword [esi + 0x6d4]
add esp, 8
push 0x500
push 0
call eax
push eax
mov eax, dword [esi + 0x6d0]
call eax
mov ebx, eax
test ebx, ebx
jne 0x309a8b1
mov ecx, dword [esi + 0x6dc]
push edi
call ecx
cmp word [esi + 0x228], 0
je 0x309aa3a
mov dword [ebp - 0x54], 0x8611
mov eax, 0x8642
mov word [ebp - 0x50], ax
mov edx, 0x8663
mov eax, 0x8674
mov ecx, 0x8631
mov word [ebp - 0x4e], ax
mov eax, 0x8672
mov word [ebp - 0x4c], ax
mov eax, 0x8664
mov word [ebp - 0x4a], ax
mov eax, 0x8678
mov word [ebp - 0x48], dx
mov word [ebp - 0x46], ax
mov eax, 0x8665
mov word [ebp - 0x44], ax
mov eax, 0x8668
mov word [ebp - 0x42], ax
mov eax, 0x8654
mov word [ebp - 0x40], cx
mov word [ebp - 0x3e], ax
mov eax, 0x867e
mov word [ebp - 0x3c], dx
mov word [ebp - 0x3a], dx
mov word [ebp - 0x38], ax
mov eax, 0x862b
mov word [ebp - 0x36], dx
mov edx, 0x8621
mov word [ebp - 0x34], ax
mov eax, 0x8634
mov word [ebp - 0x32], cx
mov ecx, 0x8629
mov word [ebp - 0x30], ax
mov eax, 0x8649
mov word [ebp - 0x2e], dx
mov word [ebp - 0x2c], cx
mov word [ebp - 0x2a], ax
mov eax, 0x863c
mov word [ebp - 0x28], ax
mov eax, 0x8634
mov word [ebp - 0x26], ax
mov eax, 0x8669
mov word [ebp - 0x24], dx
mov edx, 0x861b
mov word [ebp - 0x22], cx
mov ecx, 0x867d
mov word [ebp - 0x20], ax
mov eax, 0x861c
mov word [ebp - 0x1e], ax
mov word [ebp - 0x1c], dx
mov word [ebp - 0x1a], ax
mov eax, 0x8634
mov word [ebp - 0x18], dx
mov word [ebp - 0x16], ax
mov eax, 0x8662
mov word [ebp - 0x14], cx
mov ecx, 0x861c
mov word [ebp - 0x12], ax
mov word [ebp - 0x10], cx
mov word [ebp - 0xe], dx
mov word [ebp - 0xc], cx
mov ecx, 0x8634
mov word [ebp - 0xa], dx
mov word [ebp - 8], cx
mov ecx, 0x867d
mov word [ebp - 6], cx
mov word [ebp - 4], ax
xor eax, eax
mov word [ebp - 2], ax
xor edx, edx
mov ax, word [ebp - 0x50]
mov ax, word [ebp + edx*2 - 0x50]
movzx ecx, ax
movzx eax, word [ebp - 0x54]
xor ecx, eax
mov word [ebp + edx*2 - 0x50], cx
inc edx
cmp edx, 0x27
jb 0x309a9f5
xor eax, eax
mov word [ebp - 2], ax
lea eax, [esi + 0x228]
push eax
push dword [ebp + 8]
lea eax, [ebp - 0x50]
push dword [esi + 0x224]
push edi
push eax
mov eax, dword [esi + 0x768]
push ebx
call eax
add esp, 0x18
jmp 0x309abb9
mov dword [ebp - 0x9c], 0xb30c
mov eax, 0xb35f
mov word [ebp - 0x98], ax
mov edx, 0xb37e
mov eax, 0xb369
mov ecx, 0xb32c
mov word [ebp - 0x96], ax
mov eax, 0xb36f
mov word [ebp - 0x94], ax
mov eax, 0xb379
mov word [ebp - 0x92], ax
mov eax, 0xb365
mov word [ebp - 0x90], dx
mov word [ebp - 0x8e], ax
mov eax, 0xb378
mov word [ebp - 0x8c], ax
mov eax, 0xb375
mov word [ebp - 0x8a], ax
mov eax, 0xb349
mov word [ebp - 0x88], cx
mov word [ebp - 0x86], ax
mov eax, 0xb363
mov word [ebp - 0x84], dx
mov word [ebp - 0x82], dx
mov word [ebp - 0x80], ax
mov eax, 0xb336
mov word [ebp - 0x7e], dx
mov edx, 0xb33c
mov word [ebp - 0x7c], ax
mov eax, 0xb329
mov word [ebp - 0x7a], cx
mov ecx, 0xb334
mov word [ebp - 0x78], ax
mov eax, 0xb354
mov word [ebp - 0x76], dx
mov word [ebp - 0x74], cx
mov word [ebp - 0x72], ax
mov eax, 0xb321
mov word [ebp - 0x70], ax
mov eax, 0xb329
mov word [ebp - 0x6e], ax
mov eax, 0xb374
mov word [ebp - 0x6c], dx
mov word [ebp - 0x6a], cx
mov ecx, 0xb301
mov word [ebp - 0x68], ax
mov eax, 0xb306
mov word [ebp - 0x66], cx
mov word [ebp - 0x64], ax
mov word [ebp - 0x62], cx
mov word [ebp - 0x60], ax
mov eax, 0xb329
mov word [ebp - 0x5e], ax
mov eax, 0xb360
mov word [ebp - 0x5c], ax
mov eax, 0xb37f
mov word [ebp - 0x5a], ax
xor eax, eax
mov word [ebp - 0x58], ax
xor edx, edx
mov ax, word [ebp - 0x98]
nop dword [eax + eax]
mov ax, word [ebp + edx*2 - 0x98]
movzx ecx, ax
movzx eax, word [ebp - 0x9c]
xor ecx, eax
mov word [ebp + edx*2 - 0x98], cx
inc edx
cmp edx, 0x20
jb 0x309ab74
push dword [ebp + 8]
xor eax, eax
push dword [esi + 0x224]
mov word [ebp - 0x58], ax
lea eax, [ebp - 0x98]
push edi
push eax
mov eax, dword [esi + 0x768]
push ebx
call eax
add esp, 0x14
push 0xa0
lea eax, [ebp - 0x13c]
push eax
push esi
call fcn.0309a274
add esp, 0xc
lea eax, [ebp - 0x13c]
push 0x10
push eax
mov eax, dword [esi + 0x764]
push ebx
push 0
call eax
mov eax, dword [esi + 0x6dc]
push edi
call eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8