Function at 0x303c520
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x30
mov dword [esp + 0x10], 0x40414e4f
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x303c5af
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x10]
lea esi, [eax + 0x266168f6]
lea ecx, [eax + edx]
add ecx, 0x266168f6
add eax, 0xf6
or esi, eax
and esi, edx
and eax, edx
add eax, esi
mov edx, eax
xor edx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x46
mov ecx, dword [esp]
mov byte [esp + ecx + 0x10], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x303c560
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x10]
mov eax, dword [0x304ab40]
test eax, eax
je 0x303c607
xor ecx, ecx
mov edx, dword [0x304ab44]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xc58dd7f7
je 0x303c5e0
inc ecx
cmp eax, ecx
jne 0x303c5d0
jmp 0x303c607
mov eax, dword [edx + ecx*8 + 4]
cmp eax, edi
je 0x303c607
lea ecx, [esp + 8]
push ecx
push 0
push 0
push 2
push ebx
push 5
push dword [0x304ab48]
push eax
call fcn.03038ad0
add esp, 0x20
mov edi, eax
cmp edi, 0xc0000023
jne 0x303c820
push dword [esp + 8]
call fcn.030366c0
add esp, 4
mov dword [esp + 4], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x10], 0x40414e4f
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xb
ja 0x303c6a1
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx esi, byte [esp + edx + 0x10]
lea edi, [ecx + 0x266168f6]
lea edx, [ecx + esi]
add edx, 0x266168f6
add ecx, 0xf6
or edi, ecx
and edi, esi
and ecx, esi
add ecx, edi
mov esi, ecx
xor esi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, esi
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x46
mov edx, dword [esp]
mov byte [esp + edx + 0x10], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xc
jb 0x303c650
mov edi, dword [esp + 0x10]
mov ecx, dword [0x304ab40]
test ecx, ecx
je 0x303c6d2
xor edx, edx
mov esi, dword [0x304ab44]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xc58dd7f7
je 0x303c82a
inc edx
cmp ecx, edx
jne 0x303c6c0
mov esi, dword [esp + 4]
test edi, edi
js 0x303c817
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x303c7cc
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x303c7c5
mov edx, dword [esi + 0x10]
shr edx, 1
mov eax, dword [ecx]
cmp eax, edx
jb 0x303c704
mov eax, edx
test eax, eax
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x28], edi
je 0x303c7b8
add esi, 0x2c
mov edi, eax
and eax, 3
mov dword [esp + 0x24], edi
je 0x303c748
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
dec edi
movzx ecx, word [esi]
xor edx, edx
test cx, cx
setne dl
lea esi, [esi + edx*2]
mov word [ebx], cx
add ebx, 2
dec eax
jne 0x303c730
cmp dword [esp + 0x24], 4
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
jb 0x303c7b8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, word [esi]
xor ecx, ecx
test ax, ax
setne cl
mov word [ebx], ax
lea eax, [esi + ecx*2]
movzx ecx, word [esi + ecx*2]
xor edx, edx
test cx, cx
setne dl
mov word [ebx + 2], cx
lea ecx, [eax + edx*2]
movzx eax, word [eax + edx*2]
xor edx, edx
test ax, ax
setne dl
mov word [ebx + 4], ax
lea eax, [ecx + edx*2]
movzx ecx, word [ecx + edx*2]
xor edx, edx
test cx, cx
setne dl
lea esi, [eax + edx*2]
mov word [ebx + 6], cx
add ebx, 8
add edi, 0xfffffffc
jne 0x303c760
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
mov word [ebx], 0
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x28]
mov eax, dword [esi + 0x10]
shr eax, 1
mov dword [ecx], eax
mov ecx, dword [ebp + 0x18]
test edx, edx
je 0x303c7d8
mov eax, dword [esi + 0x14]
mov dword [edx], eax
mov eax, dword [ebp + 0x1c]
test ecx, ecx
je 0x303c7e6
mov edx, dword [esi + 0x18]
shr edx, 1
mov dword [ecx], edx
mov ecx, dword [ebp + 0x20]
test eax, eax
je 0x303c7f4
mov edx, dword [esi + 0x1c]
shr edx, 1
mov dword [eax], edx
mov eax, dword [ebp + 0x24]
test ecx, ecx
je 0x303c800
mov edx, dword [esi + 0x20]
mov dword [ecx], edx
mov ecx, dword [ebp + 0x28]
test eax, eax
je 0x303c80e
mov edx, dword [esi + 0x24]
shr edx, 1
mov dword [eax], edx
test ecx, ecx
je 0x303c817
mov eax, dword [esi + 0x28]
mov dword [ecx], eax
push esi
call fcn.030367d0
add esp, 4
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, edi
mov esi, dword [esp + 4]
je 0x303c6d6
lea edx, [esp + 8]
push edx
push eax
push esi
push 2
push ebx
push 5
push dword [0x304ab48]
push ecx
call fcn.03038ad0
add esp, 0x20
mov edi, eax
jmp 0x303c6d6