Function at 0x30389bd
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xe8
xor eax, eax
cmp dword [ebp + 0x10], 0
setne al
mov eax, dword [eax*4 + 0x3042cfc]
mov ecx, 0x65184fbc
xor ecx, dword [0x3042d04]
add eax, ecx
inc eax
xor edx, edx
mov dword [esp + 0x64], 0
mov dword [esp + 8], 0
jmp eax
push 0x9b1cb500
push dword [0x3052b64]
call fcn.0303ad30
add esp, 8
mov dword [0x3052b70], eax
push 0xb3a80508
push dword [0x3052b64]
call fcn.0303ad30
add esp, 8
mov dword [0x3052b74], eax
push 0x1f488771
push dword [0x3052b64]
call fcn.0303ad30
add esp, 8
mov dword [0x3049b34], eax
mov dword [esi + 8], 0xc373c57f
mov dword [esi + 0xc], 0xcfbdc170
mov dword [esi + 0x10], 0xcb77cdb0
mov dword [esi + 0x14], 0xd764c9b8
mov dword [esi + 0x18], 0xd360d562
mov word [esi + 0x1c], 0xd1d2
mov dword [esi + 0x1e], 0
mov dword [esi + 0x22], 0
mov byte [esi + 0x26], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 0x1e
ja 0x3038675
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx edx, byte [esi + ecx + 8]
lea ecx, [eax + edx]
add eax, 0x61
and eax, edx
add eax, eax
sub ecx, eax
add ecx, 0x22242061
mov dword [esi], ecx
mov eax, dword [esi]
add al, 0x59
mov ecx, dword [esi + 4]
mov byte [esi + ecx + 8], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 0x1f
jb 0x3038640
push ebx
call fcn.0303a510
add esp, 4
mov dword [0x3052b78], eax
mov ecx, dword [0x3052b64]
push 0xde118a15
push ecx
call fcn.0303ad30
add esp, 8
mov dword [0x3052b6c], eax
push 0x9b1cb500
push dword [0x3052b64]
call fcn.0303ad30
add esp, 8
mov dword [0x3052b70], eax
push 0xb3a80508
push dword [0x3052b64]
call fcn.0303ad30
add esp, 8
mov dword [0x3052b74], eax
push 0x1f488771
push dword [0x3052b64]
call fcn.0303ad30
add esp, 8
mov dword [0x3049b34], eax
mov dword [esi + 8], 0xc373c57f
mov dword [esi + 0xc], 0xcfbdc170
mov dword [esi + 0x10], 0xcb77cdb0
mov dword [esi + 0x14], 0xd764c9b8
mov dword [esi + 0x18], 0xd360d562
mov word [esi + 0x1c], 0xd1d2
mov dword [esi + 0x1e], 0
mov dword [esi + 0x22], 0
mov byte [esi + 0x26], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 0x1e
ja 0x3038765
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx edx, byte [esi + ecx + 8]
lea ecx, [eax + edx]
add eax, 0x61
and eax, edx
add eax, eax
sub ecx, eax
add ecx, 0x22242061
mov dword [esi], ecx
mov eax, dword [esi]
add al, 0x59
mov ecx, dword [esi + 4]
mov byte [esi + ecx + 8], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 0x1f
jb 0x3038730
push ebx
call fcn.0303a510
add esp, 4
mov dword [0x3052b78], eax
mov ecx, dword [0x30473c4]
mov edx, 0x877c1dee
xor edx, dword [0x30473cc]
add ecx, edx
inc ecx
jmp ecx
mov dword [edi + 4], 0
mov dword [edi + 7], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 0xa
ja 0x3038a1e
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edi + ecx]
lea edx, [eax + 0x4df9a622]
and edx, ecx
add eax, ecx
add eax, 0x4df9a622
add edx, edx
sub eax, edx
mov dword [esi + 4], eax
mov eax, dword [esi + 4]
add al, 0x12
mov ecx, dword [esi]
mov byte [edi + ecx], al
mov eax, dword [esi]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esi], eax
mov eax, dword [esi]
cmp eax, 0xb
jb 0x30389e0
mov eax, dword [edi]
mov eax, dword fs:[eax]
push dword [ebp + 0xc]
push ebx
push 0
push dword [eax + 0x18]
call dword [0x3052b70]
mov dword [edi], 0xcbcacd3c
mov dword [edi + 4], 0
mov dword [edi + 7], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 0xa
ja 0x3038a9e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edi + ecx]
lea edx, [eax + 0x4df9a622]
and edx, ecx
add eax, ecx
add eax, 0x4df9a622
add edx, edx
sub eax, edx
mov dword [esi + 4], eax
mov eax, dword [esi + 4]
add al, 0x12
mov ecx, dword [esi]
mov byte [edi + ecx], al
mov eax, dword [esi]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esi], eax
mov eax, dword [esi]
cmp eax, 0xb
jb 0x3038a60
mov eax, dword [edi]
mov eax, dword fs:[eax]
push dword [ebp + 0xc]
push ebx
push 0
push dword [eax + 0x18]
call dword [0x3052b70]
mov ecx, dword [0x30476dc]
mov edx, 0x27fe7be5
xor edx, dword [0x30476e4]
add ecx, edx
inc ecx
jmp ecx