Function at 0x443200
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov ebp, dword [esp + 0x3c]
movzx eax, word [ebp]
mov dword [esp + 4], 0x8f8e27d5
mov dword [esp + 8], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x22
xor dl, byte [esp + ecx + 4]
add dl, 0x56
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 8
jne case.default.0x443251
xor ecx, ecx
cmp dword [esp + 4], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x450628]
mov eax, dword [ebp + 0x3c]
mov ecx, dword [ebp + eax]
mov dword [esp + 4], 0x21267874
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov edx, 0xa
mov esi, 0xf6
nop
nop
nop
movzx ebx, byte [esp + edx - 6]
mov edi, ebx
not edi
or edi, esi
add edi, edx
and ebx, esi
or ebx, edi
add bl, 0xd3
mov byte [esp + edx - 6], bl
inc edx
dec esi
cmp edx, 0x11
jne case.default.0x4432a8
xor edx, edx
cmp ecx, dword [esp + 4]
setne dl
jmp dword [edx*4 + 0x450630]
mov edx, dword [ebp + eax + 0x78]
cmp dword [ebp + eax + 0x7c], 0
sete al
test edx, edx
sete cl
or cl, al
movzx ecx, cl
xor eax, eax
jmp dword [ecx*4 + 0x450648]
mov eax, dword [ebp + edx + 0x20]
add eax, ebp
mov dword [esp + 0x24], eax
mov eax, dword [ebp + edx + 0x24]
add eax, ebp
mov dword [esp + 0x20], eax
mov eax, dword [ebp + edx + 0x1c]
add eax, ebp
mov dword [esp + 0x1c], eax
mov esi, dword [0x451fc0]
xor eax, eax
test esi, esi
sete al
mov dword [esp + 0xc], edx
jmp dword [eax*4 + 0x450650]
mov edi, dword [0x451fbc]
mov eax, dword [ebp + edx + 0x18]
add eax, edi
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x443321
shl eax, 3
mov ecx, eax
push ecx
call fcn.0040cd60
add esp, 4
mov edx, eax
mov ecx, edi
and ecx, 0xfffffff7
mov eax, edi
and eax, 8
or edi, 8
imul edi, eax
xor eax, 8
imul eax, ecx
mov ecx, edx
lea ebx, [eax + edi]
lea edx, [esi + ebx]
cmp ecx, esi
jbe 0x443453
cmp edx, ecx
jbe 0x443453
mov dword [esp], ecx
test ebx, ebx
je 0x4433bd
lea ecx, [esi + eax]
dec ecx
mov edx, dword [esp]
add edx, eax
dec edx
neg eax
nop
nop
nop
movzx ebx, byte [ecx + edi]
mov byte [edx + edi], bl
movzx ebx, byte [ecx + edi - 1]
mov byte [edx + edi - 1], bl
movzx ebx, byte [ecx + edi - 2]
mov byte [edx + edi - 2], bl
movzx ebx, byte [ecx + edi - 3]
mov byte [edx + edi - 3], bl
movzx ebx, byte [ecx + edi - 4]
mov byte [edx + edi - 4], bl
movzx ebx, byte [ecx + edi - 5]
mov byte [edx + edi - 5], bl
movzx ebx, byte [ecx + edi - 6]
mov byte [edx + edi - 6], bl
movzx ebx, byte [ecx + edi - 7]
mov byte [edx + edi - 7], bl
add edi, 0xfffffff8
cmp eax, edi
jne 0x443370
xor eax, eax
test esi, esi
sete al
mov edi, dword [esp]
jmp dword [eax*4 + 0x450658]
mov dword [0x451fc0], edi
xor edx, edx
lea eax, [esp + 8]
mov dword [esp + 0x14], eax
xor eax, eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], 0
cmp edx, dword [ebp + ecx + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x450660]
xor eax, eax
jmp dword [0x450640]
mov eax, dword [ebp + edx + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x44341d
shl eax, 3
mov ecx, eax
push ecx
call fcn.0040cd60
add esp, 4
mov dword [0x451fc0], eax
xor edx, edx
lea eax, [esp + 8]
mov dword [esp + 0x14], eax
xor eax, eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], 0
cmp edx, dword [ebp + ecx + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x450660]
mov eax, ecx
mov ecx, ebx
shr ecx, 2
mov edi, eax
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov edi, eax
add edi, ebx
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov edi, eax
mov esi, dword [0x451fc0]
xor eax, eax
test esi, esi
sete al
jmp dword [eax*4 + 0x450658]
push esi
call fcn.0040cd70
add esp, 4
mov dword [0x451fc0], edi
xor edx, edx
lea eax, [esp + 8]
mov dword [esp + 0x14], eax
xor eax, eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], 0
cmp edx, dword [ebp + ecx + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x450660]
mov edx, dword [esp + 0x18]
inc edx
xor eax, eax
mov ecx, dword [esp + 0xc]
cmp edx, dword [ebp + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x450660]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + edx*4]
add ecx, ebp
mov ebx, 0xffffffff
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ebp, eax
cmp byte [ecx + ebx + 1], 0
lea ebx, [ebx + 1]
lea eax, [eax + 1]
jne 0x4434f0
mov dword [esp], ecx
mov dword [esp + 4], 0x323230c3
mov eax, dword [esp + 0x14]
mov byte [eax + 2], 0
mov word [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xc
xor cl, byte [esp + eax + 4]
add cl, 0xc4
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 7
jne 0x443520
mov dword [esp + 0x18], edx
mov eax, 0xfb520141
test ebx, ebx
je 0x4435b0
mov ecx, dword [esp + 4]
mov edi, 0xfb520141
mov esi, dword [esp]
cmp ebx, 4
jb 0x44358b
mov eax, ebp
and eax, 0xfffffffc
mov esi, dword [esp]
nop
nop
nop
nop
movsx edx, byte [esi]
xor edx, edi
imul edx, ecx
movsx edi, byte [esi + 1]
xor edi, edx
imul edi, ecx
movsx edx, byte [esi + 2]
xor edx, edi
imul edx, ecx
movsx edi, byte [esi + 3]
add esi, 4
xor edi, edx
imul edi, ecx
add eax, 0xfffffffc
jne 0x443560
mov eax, edi
test bl, 3
je 0x4435b0
and ebp, 3
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [esi + ebx]
xor eax, edi
imul eax, ecx
inc ebx
mov edi, eax
cmp ebp, ebx
jne 0x4435a0
mov ecx, eax
xor ecx, 0xaa8a99d1
xor edx, edx
or ecx, dword [0x451fc4]
sete dl
jmp dword [edx*4 + 0x450668]
xor ecx, ecx
mov edx, dword [esp]
cmp byte [edx], 0x4e
setne cl
mov ebp, dword [esp + 0x3c]
jmp dword [ecx*4 + 0x450670]
xor ecx, ecx
cmp byte [edx + 1], 0x74
setne cl
jmp dword [ecx*4 + 0x450678]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
movzx ecx, word [ecx + edx*2]
mov edx, dword [esp + 0x1c]
mov edi, dword [edx + ecx*4]
add edi, ebp
xor edx, edx
xor ecx, ecx
cmp edx, 0x20
setb cl
mov esi, 0xffffffff
jmp dword [ecx*4 + 0x450680]
movzx ebx, byte [edi + edx]
xor ecx, ecx
cmp bl, 0xc2
sete cl
jmp dword [ecx*4 + 0x450688]
xor ecx, ecx
cmp bl, 0xc3
sete cl
jmp dword [ecx*4 + 0x450690]
xor ecx, ecx
cmp bl, 0xb8
sete cl
jmp dword [ecx*4 + 0x450698]
inc edx
xor ecx, ecx
cmp edx, 0x20
setb cl
jmp dword [ecx*4 + 0x450680]
xor ecx, ecx
cmp esi, 0xffffffff
setne cl
jmp dword [ecx*4 + 0x4506b0]
jmp dword [0x4506ac]
mov esi, dword [edi + edx + 1]
xor ecx, ecx
cmp esi, 0xffffffff
setne cl
jmp dword [ecx*4 + 0x4506b0]
xor edx, edx
xor ecx, ecx
mov dword [esp], 0
cmp edx, dword [0x451fbc]
setb cl
xor edx, edx
jmp dword [ecx*4 + 0x4506b8]
mov edi, dword [0x451fc0]
xor ecx, ecx
cmp dword [edi + edx*8], eax
sete cl
mov ebx, 1
jmp dword [ecx*4 + 0x4506c0]
jmp dword [0x4506cc]
mov dword [edi + edx*8 + 4], esi
xor ebx, ebx
mov cl, 1
mov dword [esp], ecx
jmp dword [0x4506d4]
mov dword [edi + edx*8 + 4], esi
mov dword [edi + edx*8 + 4], esi
xor ebx, ebx
mov cl, 1
mov dword [esp], ecx
jmp dword [0x4506d4]
jmp dword [ebx*4 + 0x4506d8]
inc edx
xor ebx, ebx
cmp edx, dword [0x451fbc]
setb bl
jmp dword [ebx*4 + 0x4506b8]
mov ecx, dword [esp]
and cl, 1
movzx ecx, cl
mov dl, 1
mov dword [esp + 0x10], edx
jmp dword [ecx*4 + 0x4506e0]
mov ecx, dword [0x451fbc]
lea edi, [ecx + 1]
mov edx, dword [0x451fc0]
mov dword [0x451fbc], edi
mov dword [edx + ecx*8], eax
jmp dword [0x4506e8]
mov dword [edx + ecx*8 + 4], esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [edx + ecx*8 + 4], esi
jmp dword [0x4506f0]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
mov dword [0x451fc4], eax
inc edx
xor eax, eax
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc]
cmp edx, dword [ebp + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x450660]
mov eax, dword [esp + 0x10]
and al, 1
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret