Function at 0x445d80
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], 0x34353637
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax]
mov edx, ecx
and edx, 0xffffffd3
or edx, 0x82104
and ecx, 0x2c
xor ecx, edx
xor ecx, 0xe7ae3fd7
mov edx, eax
xor edx, 0xe186c027
mov esi, ecx
and esi, edx
add edx, ecx
add esi, esi
sub edx, esi
add dl, 0x3c
mov byte [esp + eax], dl
inc eax
cmp eax, 4
jne 0x445da0
mov esi, dword [esp]
mov eax, dword [0x451fbc]
test eax, eax
je 0x445e2e
xor ecx, ecx
mov edx, dword [0x451fc0]
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x8784ccde
je 0x445e00
inc ecx
cmp eax, ecx
jne 0x445df0
jmp 0x445e2e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x445e2e
lea ecx, [esp + 0xc]
push ecx
push 0
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 6
push dword [0x451fc4]
push eax
call fcn.004426e0
add esp, 0x24
mov esi, eax
mov dword [esp], 0x8fcec92f
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov edx, 0xb2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx - 0xb2]
mov ecx, eax
mov edi, eax
and ecx, edx
mov eax, ecx
or al, 0xfd
inc al
mov ah, cl
and ah, 0xbd
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, 0x86
mov byte [esp + edx - 0xb2], al
inc edx
cmp edx, 0xb9
jne 0x445e50
cmp esi, dword [esp]
jne 0x446065
push dword [esp + 0xc]
call fcn.0043f830
add esp, 4
mov dword [esp + 8], eax
mov ecx, dword [esp + 0xc]
mov dword [esp], 0x34353637
xor edx, edx
nop
nop
nop
movzx esi, byte [esp + edx]
mov edi, esi
and edi, 0xffffffd3
or edi, 0x82104
and esi, 0x2c
xor esi, edi
xor esi, 0xe7ae3fd7
mov ebx, edx
xor ebx, 0xe186c027
mov edi, esi
and edi, ebx
add ebx, esi
add edi, edi
sub ebx, edi
add bl, 0x3c
mov byte [esp + edx], bl
inc edx
cmp edx, 4
jne 0x445ec0
mov esi, dword [esp]
mov edx, dword [0x451fbc]
test edx, edx
je 0x445f22
xor ebx, ebx
mov edi, dword [0x451fc0]
nop
nop
nop
cmp dword [edi + ebx*8], 0x8784ccde
je 0x445fa6
inc ebx
cmp edx, ebx
jne 0x445f10
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0x38]
test edx, edx
je 0x44605c
test esi, esi
js 0x44605c
test ebp, ebp
je 0x446055
mov ecx, dword [ebx + 0xc]
shr ecx, 1
mov edi, dword [edx]
cmp edi, ecx
jb 0x445f4f
mov edi, ecx
test edi, edi
mov dword [esp + 0x14], esi
je 0x44604b
add eax, 0x10
mov ecx, edi
and ecx, 3
je 0x445fe3
mov dword [esp + 0x10], edi
xor edi, edi
nop
nop
nop
nop
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 0x445f70
mov ecx, dword [esp + 0x10]
mov esi, ecx
sub esi, edi
mov edi, ecx
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 8]
cmp edi, 4
jae 0x445ff0
jmp 0x44604b
mov edx, dword [edi + ebx*8 + 4]
cmp edx, esi
mov ebx, dword [esp + 8]
je 0x445f26
lea esi, [esp + 0xc]
push esi
push ecx
push ebx
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 6
push dword [0x451fc4]
push edx
mov edi, eax
call fcn.004426e0
add esp, 0x24
mov esi, eax
mov eax, edi
jmp 0x445f26
mov esi, edi
cmp edi, 4
jb 0x44604b
nop
nop
nop
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 0x445ff0
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 8]
mov word [ebp], 0
mov esi, dword [esp + 0x14]
mov eax, dword [ebx + 0xc]
shr eax, 1
mov dword [edx], eax
push ebx
call fcn.0043f8b0
add esp, 4
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret