Function at 0x447710
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov ebp, dword [esp + 0x44]
movzx esi, word [ebp]
mov dword [esp], 0x6166cdd3
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 3
ja 0x447769
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
movzx eax, byte [esp + eax]
push dword [esp + 4]
push eax
call fcn.00449740
add esp, 8
mov ecx, dword [esp + 4]
mov byte [esp + ecx], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 4
jb 0x447740
xor eax, eax
cmp dword [esp], esi
setne al
xor esi, esi
jmp dword [eax*4 + 0x452704]
mov edi, dword [ebp + 0x3c]
mov ebx, dword [ebp + edi]
mov dword [esp + 4], 0x6166d8d4
mov word [esp + 8], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x4477c6
nop
mov eax, dword [esp]
movzx eax, byte [esp + eax + 4]
push dword [esp]
push eax
call fcn.004497e0
add esp, 8
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x4477a0
xor eax, eax
cmp ebx, dword [esp + 4]
setne al
jmp dword [eax*4 + 0x45270c]
mov ebx, dword [ebp + edi + 0x78]
mov edx, dword [ebp + edi + 0x7c]
test edx, edx
sete al
test ebx, ebx
sete cl
or cl, al
movzx eax, cl
jmp dword [eax*4 + 0x452714]
mov dword [esp + 0x18], edx
mov eax, dword [ebp + ebx + 0x20]
add eax, ebp
mov dword [esp + 0x24], eax
mov eax, dword [ebp + ebx + 0x24]
add eax, ebp
mov dword [esp + 0x20], eax
mov eax, dword [ebp + ebx + 0x1c]
add eax, ebp
mov dword [esp + 0x1c], eax
xor ecx, ecx
xor eax, eax
cmp ecx, dword [ebp + ebx + 0x18]
setb al
mov dword [esp + 0x10], 1
mov dword [esp + 0x28], ebx
jmp dword [eax*4 + 0x45271c]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
mov esi, dword [eax + ecx*4]
add esi, ebp
mov ebx, 0xffffffff
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
cmp byte [esi + ebx + 1], 0
lea ebx, [ebx + 1]
lea eax, [eax + 1]
jne 0x447860
mov dword [esp + 4], 0x9e9e980f
mov word [esp + 8], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x4478b6
nop
nop
nop
mov eax, dword [esp]
movzx eax, byte [esp + eax + 4]
push dword [esp]
push eax
call fcn.00449860
add esp, 8
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x447890
test ebx, ebx
je 0x4478e0
mov ecx, dword [esp + 4]
mov eax, ecx
not eax
cmp ebx, 1
jne 0x4478f0
mov edx, 0xb14a5e2
test bl, 1
jne 0x44795c
jmp 0x447979
mov edx, 0xb14a5e2
jmp 0x447979
and edi, 0xfffffffe
mov edx, 0xb14a5e2
mov dword [esp + 0xc], eax
nop
nop
nop
nop
mov dword [esp + 0x2c], esi
movsx ebp, byte [esi]
xor ebp, edx
mov edx, ebp
not edx
and edx, ecx
mov eax, ebp
and eax, dword [esp + 0xc]
mov esi, dword [esp + 0x2c]
imul eax, edx
mov edx, ebp
and edx, ecx
or ebp, ecx
imul ebp, edx
add ebp, eax
movsx edx, byte [esi + 1]
add esi, 2
xor edx, ebp
mov eax, edx
not eax
and eax, ecx
mov ebp, edx
and ebp, dword [esp + 0xc]
imul ebp, eax
mov eax, edx
and eax, ecx
or edx, ecx
imul edx, eax
add edx, ebp
add edi, 0xfffffffe
jne 0x447900
mov ebp, dword [esp + 0x44]
mov eax, dword [esp + 0xc]
test bl, 1
je 0x447979
mov edi, eax
movsx eax, byte [esi]
xor edx, eax
mov eax, edx
not eax
and eax, ecx
and edi, edx
imul edi, eax
mov eax, edx
and eax, ecx
or edx, ecx
imul edx, eax
add edx, edi
xor eax, eax
cmp edx, dword [esp + 0x48]
setne al
mov ebx, dword [esp + 0x28]
jmp dword [eax*4 + 0x452724]
mov eax, dword [case.0x445647.157]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov eax, esi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret