Function at 0x446030
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov ebp, dword [esp + 0x34]
mov dword [esp], 0x4c4d4a4b
mov word [esp + 4], 0
mov eax, 0x72
mov ecx, 0x8d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x72]
mov edx, eax
xor edx, ecx
and edx, esi
xor edx, ecx
mov bl, 0xc5
sub bl, dl
mov byte [esp + eax - 0x72], bl
inc eax
dec ecx
cmp eax, 0x78
jne 0x446060
mov esi, dword [esp]
mov eax, dword [0x451ae0]
test eax, eax
je 0x4460ce
xor ecx, ecx
mov edx, dword [0x451ae4]
cmp dword [edx + ecx*8], 0x8784ccde
je 0x4460a0
inc ecx
cmp eax, ecx
jne 0x446090
jmp 0x4460ce
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x4460ce
lea ecx, [esp + 0x10]
push ecx
push 0
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 6
push dword [0x451ae8]
push eax
call fcn.004425f0
add esp, 0x24
mov esi, eax
mov dword [esp], 0xb10e0f69
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov edx, 0xc1c75dbd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x3e38a243]
mov ecx, eax
mov edi, eax
and ecx, edx
mov eax, ecx
or al, 0xfd
inc al
mov ah, cl
and ah, 0xfd
mul ah
mov ebx, eax
mov eax, edi
add bl, al
mov eax, ecx
shr al, 1
and al, 1
or cl, 2
mul cl
add al, al
sub bl, al
movzx eax, bl
add eax, edx
add al, 0x4f
mov byte [esp + edx + 0x3e38a243], al
inc edx
cmp edx, 0xc1c75dc4
jne 0x4460f0
cmp esi, dword [esp]
jne 0x446305
push dword [esp + 0x10]
call fcn.0043fa10
add esp, 4
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
mov dword [esp], 0x4c4d4a4b
mov word [esp + 4], 0
mov edx, 0x72
mov esi, 0x8d
movzx edi, byte [esp + edx - 0x72]
mov ebx, edx
xor ebx, esi
and ebx, edi
xor ebx, esi
mov cl, 0xc5
sub cl, bl
mov byte [esp + edx - 0x72], cl
inc edx
dec esi
cmp edx, 0x78
jne 0x446170
mov esi, dword [esp]
mov edx, dword [0x451ae0]
test edx, edx
je 0x4461c2
xor ebx, ebx
mov edi, dword [0x451ae4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebx*8], 0x8784ccde
je 0x446246
inc ebx
cmp edx, ebx
jne 0x4461b0
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0x38]
test edx, edx
je 0x4462fc
test esi, esi
js 0x4462fc
test ebp, ebp
je 0x4462f5
mov ecx, dword [ebx + 0xc]
shr ecx, 1
mov edi, dword [edx]
cmp edi, ecx
jb 0x4461ef
mov edi, ecx
test edi, edi
mov dword [esp + 0xc], esi
je 0x4462eb
add eax, 0x10
mov ecx, edi
and ecx, 3
je 0x446286
mov dword [esp + 0x14], edi
xor edi, edi
nop
movzx ebx, word [eax]
xor edx, edx
test bx, bx
setne dl
lea eax, [eax + edx*2]
mov word [ebp], bx
add ebp, 2
inc edi
cmp ecx, edi
jne 0x446210
mov ecx, dword [esp + 0x14]
mov esi, ecx
sub esi, edi
mov edi, ecx
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 8]
cmp edi, 4
jae 0x446290
jmp 0x4462eb
mov edx, dword [edi + ebx*8 + 4]
cmp edx, esi
mov ebx, dword [esp + 8]
je 0x4461c6
lea ecx, [esp + 0x10]
push ecx
push dword [esp + 0x10]
push ebx
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 6
push dword [0x451ae8]
push edx
mov edi, eax
call fcn.004425f0
add esp, 0x24
mov esi, eax
mov eax, edi
jmp 0x4461c6
mov esi, edi
cmp edi, 4
jb 0x4462eb
nop
nop
nop
movzx edx, word [eax]
xor ecx, ecx
test dx, dx
setne cl
lea edi, [eax + ecx*2]
mov word [ebp], dx
movzx eax, word [eax + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edx, [edi + ecx*2]
mov word [ebp + 2], ax
movzx eax, word [edi + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edi, [edx + ecx*2]
mov word [ebp + 4], ax
movzx ecx, word [edx + ecx*2]
xor eax, eax
test cx, cx
setne al
mov word [ebp + 6], cx
add ebp, 8
lea eax, [edi + eax*2]
add esi, 0xfffffffc
jne 0x446290
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 8]
mov word [ebp], 0
mov esi, dword [esp + 0xc]
mov eax, dword [ebx + 0xc]
shr eax, 1
mov dword [edx], eax
push ebx
call fcn.0043fad0
add esp, 4
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret