Function at 0x4301d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
mov esi, edx
push edi
mov edi, ecx
test esi, esi
je 0x4304b7
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x4304b7
mov bl, byte [esi]
cmp bl, 3
je 0x430200
cmp byte [ecx], 0
je 0x4304b7
test edi, edi
je 0x4304ae
test eax, eax
jle 0x4304ae
cdq
and edx, 0x7f
add eax, edx
movzx edx, bl
sar eax, 7
dec edx
mov dword [ebp - 8], eax
je 0x43046f
dec edx
je 0x4303d1
dec edx
jne 0x4304b7
mov ecx, dword [esi + 1]
mov edx, dword [esi + 5]
mov dword [ebp - 0x18], ecx
mov ecx, dword [esi + 9]
mov dword [ebp - 0x14], edx
mov edx, dword [esi + 0xd]
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], eax
test eax, eax
jle 0x4304a4
xor esi, esi
lea esp, [esp]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov bl, byte [ebp - 0x17]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [eax + 0x4c]
push ecx
add eax, 0x54
mov dword [ebp - 0x20], edx
push eax
lea edx, [ebp - 0x28]
push edx
mov eax, edx
call fcn.00430760
movzx ecx, byte [ebp - 0x18]
add cl, cl
mov al, bl
shr al, 7
or al, cl
mov cl, byte [ebp - 0x15]
mov byte [ebp - 0x18], al
mov al, byte [ebp - 0x16]
mov dl, al
shr dl, 7
add bl, bl
or dl, bl
mov byte [ebp - 0x17], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [ebp - 0x14]
mov byte [ebp - 0x16], dl
mov dl, al
shr dl, 7
add cl, cl
or dl, cl
mov cl, byte [ebp - 0x13]
mov byte [ebp - 0x15], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [ebp - 0x12]
mov byte [ebp - 0x14], dl
mov dl, al
shr dl, 7
add cl, cl
or dl, cl
mov cl, byte [ebp - 0x11]
mov byte [ebp - 0x13], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [ebp - 0x10]
mov byte [ebp - 0x12], dl
mov dl, al
shr dl, 7
add cl, cl
or dl, cl
mov cl, byte [ebp - 0xf]
mov byte [ebp - 0x11], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [ebp - 0xe]
mov byte [ebp - 0x10], dl
mov dl, al
shr dl, 7
add cl, cl
add esp, 0xc
or dl, cl
mov cl, byte [ebp - 0xd]
mov byte [ebp - 0xf], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [ebp - 0xc]
mov byte [ebp - 0xe], dl
add cl, cl
mov dl, al
shr dl, 7
or dl, cl
mov cl, byte [ebp - 0xb]
mov byte [ebp - 0xd], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [ebp - 0xa]
add cl, cl
mov byte [ebp - 0xc], dl
mov dl, al
shr dl, 7
or dl, cl
movzx ecx, byte [ebp - 9]
shr cl, 7
add al, al
or cl, al
mov byte [ebp - 0xa], cl
mov eax, esi
mov byte [ebp - 0xb], dl
shr eax, 3
movzx ebx, byte [eax + edi]
mov edx, esi
and edx, 7
mov cl, 7
sub cl, dl
shr bl, cl
movzx ecx, byte [ebp - 9]
and bl, 1
add cl, cl
or bl, cl
mov byte [ebp - 9], bl
movzx ebx, byte [ebp - 0x28]
and bl, 0x80
mov cl, dl
shr bl, cl
mov ecx, dword [ebp + 0xc]
inc esi
xor byte [eax + ecx], bl
cmp esi, 0x80
jl 0x430260
mov eax, dword [ebp - 4]
dec eax
mov dword [ebp - 4], eax
test eax, eax
jg 0x430257
mov eax, dword [ebp - 8]
pop edi
pop esi
shl eax, 7
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 5]
mov ebx, dword [esi + 1]
mov dword [ebp - 0x14], edx
mov edx, dword [esi + 9]
mov dword [ebp - 0x10], edx
mov edx, dword [esi + 0xd]
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], eax
test eax, eax
jle 0x4304a4
mov esi, dword [ebp + 0xc]
jmp 0x4303f9
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x4c]
push eax
lea eax, [ecx + 0x54]
push eax
lea ecx, [ebp - 0x28]
push ecx
mov eax, edi
call fcn.00430b00
mov edx, dword [ebp - 0x10]
xor dword [ebp - 0x20], edx
mov edx, dword [ebp - 0xc]
xor dword [ebp - 0x1c], edx
mov edx, dword [edi + 4]
mov ecx, dword [ebp - 0x24]
xor ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x28]
xor eax, ebx
mov ebx, dword [edi]
mov dword [ebp - 0x14], edx
mov edx, dword [edi + 8]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x10], edx
mov edx, dword [edi + 0xc]
mov dword [esi], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + 4], ecx
mov dword [esi + 8], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x1c]
dec eax
mov dword [esi + 0xc], ecx
add esp, 0xc
add edi, 0x10
add esi, 0x10
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], eax
test eax, eax
jg 0x4303f6
mov eax, dword [ebp - 8]
pop edi
pop esi
shl eax, 7
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, eax
test eax, eax
jle 0x4304a4
mov esi, dword [ebp + 0xc]
lea edx, [ecx + 0x54]
mov dword [ebp - 4], edx
sub edi, esi
jmp 0x430485
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x4c]
mov ecx, dword [ebp - 4]
push eax
push ecx
push esi
lea eax, [edi + esi]
call fcn.00430b00
dec ebx
add esp, 0xc
add esi, 0x10
test ebx, ebx
jg 0x430482
mov eax, dword [ebp - 8]
pop edi
pop esi
shl eax, 7
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0xfffffffb
pop ebx
mov esp, ebp
pop ebp
ret