Function at 0x3021032
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x460
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x58], 0x43cc41cb
mov dword [esp + 0x5c], 0x5f3f5d3d
mov dword [esp + 0x60], 0x5b6e5929
mov dword [esp + 0x64], 0x57dc5525
mov dword [esp + 0x68], 0x53505129
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x1b
ja 0x3020ffb
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x58]
lea edx, [eax + ecx]
add edx, 0x484427cb
add eax, 0x484427cb
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x30]
add al, 0x73
mov ecx, dword [esp]
mov byte [esp + ecx + 0x58], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x1c
jb 0x3020fc0
lea eax, [esp + 0x58]
lea ecx, [esp + 0x3c]
push eax
call fcn.03036930
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x3044644]
lea ecx, [esp + 0x3c]
push 0x410
call fcn.03036bb0
mov ecx, dword [case.0x302100e.5]
nop
nop
nop
nop
nop
nop
nop
jmp ecx
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x304465c]
mov dword [esp + 0x58], 0x9ab354a9
mov dword [esp + 0x5c], 0x6c9ab994
mov dword [esp + 0x60], 0x90699bbd
mov dword [esp + 0x64], 0x876e96b1
mov dword [esp + 0x68], 0x74abba86
mov dword [esp + 0x6c], 0x8fa8a6a9
mov dword [esp + 0x70], 0x828dae82
mov dword [esp + 0x74], 0x86af809b
mov dword [esp + 0x78], 0x5664969a
mov dword [esp + 0x7c], 0x7e534165
mov dword [esp + 0x80], 0x1b4a5d5d
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x36
ja 0x3021118
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x58]
lea edx, [eax + 0x5e]
mov esi, ecx
not esi
or esi, edx
and edx, ecx
add edx, esi
neg edx
add eax, edx
add eax, 0x9de0f5d
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
mov ecx, eax
xor ecx, 0x6d
and eax, 0x6d
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x58], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x37
jb 0x30210d0
lea eax, [esp + 0x30]
lea ecx, [esp + 0x3c]
push 0
push 0x2b
lea edx, [esp + 0x60]
push edx
push eax
call fcn.03037170
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
xor eax, eax
cmp esi, edi
sete al
xor ebx, ebx
jmp dword [eax*4 + 0x3044664]
mov eax, edi
sub eax, esi
sar eax, 2
imul eax, eax, 0x421
push eax
call fcn.03008c00
add esp, 4
mov dword [esp + 0x50], 0
xor ecx, ecx
cmp esi, edi
setne cl
mov dword [esp + 0x48], eax
mov edx, eax
mov dword [esp + 0x24], 0
lea ebx, [esp + 0x58]
mov dword [esp + 0x54], edi
jmp dword [ecx*4 + 0x304466c]
mov dword [esp + 0x1c], edx
mov edi, dword [esi]
push 0x400
push 0
push ebx
call fcn.03008da0
add esp, 0xc
mov eax, esp
lea ecx, [esp + 0x3c]
push eax
push 0x400
push ebx
push edi
call fcn.03036ff0
xor ecx, ecx
cmp eax, 0xc0000000
setae cl
mov edx, 3
jmp dword [ecx*4 + 0x3044674]
xor eax, eax
cmp dword [esp], 0
sete al
jmp dword [eax*4 + 0x304467c]
xor edx, edx
mov eax, 1
jmp dword [eax*4 + 0x3044684]
mov eax, dword [esp + 0x50]
jmp dword [eax*4 + 0x3044684]
mov byte [esp + 0x457], 0
movzx ecx, byte [esp + 0x58]
xor eax, eax
test cl, cl
je 0x3021222
mov edx, ebx
cmp cl, 0x2e
je 0x3021220
movzx ecx, byte [edx + 1]
inc edx
test cl, cl
jne 0x3021210
jmp 0x3021222
mov eax, edx
mov ecx, dword [case.0x3021140.12]
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ecx, ecx
test eax, eax
setne cl
xor edx, edx
jmp dword [ecx*4 + 0x304469c]
lea ecx, [eax + 1]
mov dword [esp + 0x18], ecx
movzx ecx, byte [eax + 1]
xor edx, edx
mov edi, 0
test cl, cl
je 0x3021270
mov edi, dword [esp + 0x18]
nop
nop
nop
nop
cmp cl, 0x2e
je 0x3021270
movzx ecx, byte [edi + 1]
inc edi
test cl, cl
jne 0x3021260
xor edi, edi
xor ecx, ecx
test edi, edi
setne cl
jmp dword [ecx*4 + 0x30446a4]
mov ecx, edi
mov ebx, dword [esp + 0x18]
sub ecx, ebx
lea edx, [ecx + ecx*2]
shr edx, 2
movzx eax, byte [eax + ecx]
cmp eax, 0x3d
je 0x302129a
cmp eax, 0x2e
jne 0x302129b
dec edx
cmp byte [ecx + ebx - 2], 0x3d
mov dword [esp + 0x28], ecx
je 0x30212b7
mov eax, ecx
or eax, 0xfffffffd
and ecx, 0xfffffffd
add ecx, eax
cmp byte [ebx + ecx + 1], 0x2e
jne 0x30212b8
dec edx
mov dword [esp + 0x4c], edx
lea eax, [edx + 1]
push eax
call fcn.03008c00
add esp, 4
mov dword [esp + 0x20], eax
cmp edi, ebx
je 0x30213e8
xor edx, edx
mov edi, 2
jmp 0x3021300
mov edx, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [edi + 4]
add edi, 2
cmp edi, ecx
mov edi, eax
jae 0x30213e8
mov dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x18]
movzx eax, byte [ebx + edi - 2]
push eax
call fcn.0300fef0
add esp, 4
mov byte [esp + 0x10], al
movzx eax, byte [ebx + edi - 1]
push eax
call fcn.0300fef0
add esp, 4
movzx edx, al
mov ecx, edx
not ecx
or ecx, 0x30
add edx, ecx
inc edx
movzx ecx, byte [esp + 0x10]
shr edx, 4
lea ebx, [edx + ecx*4]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
mov byte [ecx + edx], bl
inc edx
mov ecx, dword [esp + 0x28]
cmp edi, ecx
jae 0x30212f0
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + edi]
push eax
mov ebx, edx
call fcn.0300fef0
mov edx, ebx
mov ecx, dword [esp + 0x2c]
add esp, 4
cmp al, 0x40
je 0x30212f0
movzx edx, byte [esp + 0x10]
shl dl, 4
mov ah, al
shr ah, 2
and ah, 0xf
or ah, dl
mov ebx, dword [esp + 0x2c]
lea edx, [ebx + 2]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
mov byte [edx + ebx + 1], ah
mov ebx, eax
lea eax, [edi + 1]
cmp eax, ecx
jae 0x30212dd
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + edi + 1]
push eax
call fcn.0300fef0
mov ecx, dword [esp + 0x2c]
add esp, 4
cmp al, 0x40
mov edx, dword [esp + 0x10]
je 0x30212f0
shl bl, 6
add al, bl
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov byte [edx + ebx + 2], al
add ebx, 3
mov edx, ebx
jmp 0x30212f0
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x20]
mov byte [edi + eax], 0
push edi
call fcn.03001f20
add esp, 4
mov ebx, eax
jmp dword [0x30446ac]
jmp dword [0x30446b4]
push ebx
call fcn.03002ab0
add esp, 4
mov eax, dword [case.0x3021513.4]
lea ebx, [esp + 0x58]
xor edx, edx
nop
jmp eax
jmp dword [0x3044710]
xor eax, eax
test edx, edx
sete al
jmp dword [eax*4 + 0x3044714]
jmp dword [0x3044724]
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x54]
jmp dword [0x3044738]
add esi, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
add esi, 4
jmp dword [0x3044740]
jmp dword [0x30446d4]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x30446e4]
mov dword [esp], 0x83220e0b
mov dword [esp + 4], 0
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x14]
cmp ecx, 7
ja 0x3021500
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x14]
movzx edx, byte [esp + edx]
lea edi, [ecx + edx]
add edi, 0x39d39feb
add ecx, 0x39d39feb
and ecx, edx
add ecx, ecx
sub edi, ecx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0xc]
add cl, 0x93
mov edx, dword [esp + 0x14]
mov byte [esp + edx], cl
inc dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
cmp ecx, 8
jb 0x30214c0
mov ecx, esp
push ecx
push eax
call fcn.03002790
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x30446ec]
mov edx, dword [esp + 0x1c]
jmp 0x3021543
movzx ecx, byte [eax]
test cl, cl
mov edx, dword [esp + 0x1c]
je 0x302153b
inc eax
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x3021530
mov word [edx], 0x203a
add edx, 2
movzx eax, byte [esp + 0x58]
test al, al
je 0x302155b
lea ecx, [esp + 0x59]
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x3021550
mov byte [edx], 0xa
inc edx
mov dword [esp + 0x1c], edx
mov al, 1
mov dword [esp + 0x24], eax
jmp case.0x3021140.32
push ebx
call fcn.03002840
add esp, 4
push ebx
call fcn.03002840
add esp, 4
jmp dword [0x30446e0]
mov eax, dword [case.0x3021140.19]
nop
nop
nop
nop
nop
jmp eax
push edi
call fcn.03008c10
add esp, 4
push edi
call fcn.03008c10
add esp, 4
jmp dword [0x30446bc]
mov eax, dword [esp + 0x24]
and al, 1
mov ecx, dword [0x3044750]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
mov eax, dword [esp + 0x30]
test eax, eax
je case.0x302100e.1
cmp eax, dword [esp + 0x34]
je case.0x302100e.1
push eax
call fcn.03008c10
add esp, 4
lea ecx, [esp + 0x3c]
call fcn.03036cf0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret