Function at 0x303cc90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x40
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx], 0
lea ecx, [ecx + 2]
jne 0x303ccb0
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 0x2c], cx
add ecx, 2
mov word [esp + 0x2e], cx
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], 0x40414e4f
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xb
ja 0x303cd54
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edx, byte [esp + ecx + 0x18]
lea edi, [eax + 0x266168f6]
lea ecx, [eax + edx]
add ecx, 0x266168f6
add eax, 0xf6
or edi, eax
and edi, edx
and eax, edx
add eax, edi
mov edx, eax
xor edx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
add al, 0x46
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xc
jb 0x303cd00
mov ebx, dword [esp + 0x18]
mov eax, dword [0x304ab40]
test eax, eax
je 0x303cdae
xor ecx, ecx
mov edx, dword [0x304ab44]
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x36e97270
je 0x303cd80
inc ecx
cmp eax, ecx
jne 0x303cd70
jmp 0x303cdae
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x303cdae
lea ecx, [esp + 0x10]
lea edx, [esp + 0x2c]
push ecx
push 0
push 0
push 2
push edx
push dword [ebp + 8]
push 6
push dword [0x304ab48]
push eax
call fcn.03038ad0
add esp, 0x24
mov ebx, eax
cmp ebx, 0xc0000023
jne 0x303cff6
push dword [esp + 0x10]
call fcn.030366c0
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], 0x40414e4f
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xb
ja 0x303ce56
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edi, byte [esp + edx + 0x18]
lea ebx, [ecx + 0x266168f6]
lea edx, [ecx + edi]
add edx, 0x266168f6
add ecx, 0xf6
or ebx, ecx
and ebx, edi
and ecx, edi
add ecx, ebx
mov edi, ecx
xor edi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, edi
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
add cl, 0x46
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x18], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xc
jb 0x303ce00
mov ebx, dword [esp + 0x18]
mov ecx, dword [0x304ab40]
test ecx, ecx
je 0x303ceaf
xor edx, edx
mov edi, dword [0x304ab44]
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x36e97270
je 0x303ce80
inc edx
cmp ecx, edx
jne 0x303ce70
jmp 0x303ceaf
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, ebx
je 0x303ceaf
lea edx, [esp + 0x10]
lea edi, [esp + 0x2c]
push edx
push eax
push dword [esp + 0x10]
push 2
push edi
push dword [ebp + 8]
push 6
push dword [0x304ab48]
push ecx
call fcn.03038ad0
add esp, 0x24
mov ebx, eax
test ebx, ebx
mov edi, dword [esp + 8]
js 0x303cfed
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x303cec7
mov eax, dword [edi + 4]
mov dword [ecx], eax
cmp dword [ebp + 0x18], 0
je 0x303cfed
mov dword [esp + 0x38], ebx
test esi, esi
je 0x303cfe1
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
mov eax, dword [edi + 8]
cmp edx, eax
jb 0x303ceeb
mov edx, eax
lea eax, [edi + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and eax, 0xfffffffc
add esi, eax
mov ecx, dword [esp + 8]
add eax, ecx
add eax, 0xc
mov dword [esp + 0x34], edx
mov ecx, edx
and ecx, 3
mov edx, ecx
not edx
or edx, 1
add edx, ecx
shr ecx, 1
mov dword [esp + 0xc], eax
mov edi, esi
mov ebx, dword [esp + 0xc]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov edi, dword [esp + 8]
mov ecx, edx
inc ecx
je 0x303cfe1
mov ebx, edx
mov edx, dword [esp + 0x34]
and edx, 2
add eax, edx
add esi, edx
mov edi, ecx
and edi, 7
je 0x303cf76
mov dword [esp + 0xc], ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [eax + edx]
mov byte [esi + edx], cl
inc edx
cmp edi, edx
jne 0x303cf60
add eax, edx
add esi, edx
mov ecx, dword [esp + 0xc]
sub ecx, edx
cmp ebx, 7
mov edi, dword [esp + 8]
jb 0x303cfe1
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, ecx
movzx ecx, byte [eax + edx]
mov byte [esi + edx], cl
movzx ecx, byte [eax + edx + 1]
mov byte [esi + edx + 1], cl
movzx ecx, byte [eax + edx + 2]
mov byte [esi + edx + 2], cl
movzx ecx, byte [eax + edx + 3]
mov byte [esi + edx + 3], cl
movzx ecx, byte [eax + edx + 4]
mov byte [esi + edx + 4], cl
movzx ecx, byte [eax + edx + 5]
mov byte [esi + edx + 5], cl
movzx ecx, byte [eax + edx + 6]
mov byte [esi + edx + 6], cl
movzx ecx, byte [eax + edx + 7]
mov byte [esi + edx + 7], cl
mov ecx, ebx
add edx, 8
cmp ebx, edx
jne 0x303cf90
mov eax, dword [edi + 8]
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov ebx, dword [esp + 0x38]
push edi
call fcn.030367d0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret