Function at 0x447ba0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x280
mov ebx, dword [0x45eb64]
mov ebp, dword [0x45eb60]
mov eax, ebp
or eax, ebx
jne 0x447c6e
mov dword [esp + 0x50], 0x3f601ee
mov dword [esp + 0x54], 0x7ea05e0
mov dword [esp + 0x58], 0xb2409e4
mov dword [esp + 0x5c], 0xfe20de8
mov dword [esp + 0x60], 0x131211fc
mov word [esp + 0x64], 0
mov byte [esp + 0x66], 0
mov dword [esp + 0x150], 0
mov eax, dword [esp + 0x150]
cmp eax, 0x16
ja 0x447c4a
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x150]
movzx eax, byte [esp + eax + 0x50]
push dword [esp + 0x150]
push eax
call fcn.00448640
add esp, 8
mov ecx, dword [esp + 0x150]
mov byte [esp + ecx + 0x50], al
inc dword [esp + 0x150]
mov eax, dword [esp + 0x150]
cmp eax, 0x17
jb 0x447c10
lea eax, [esp + 0x50]
push eax
call fcn.00447800
add esp, 4
mov ebp, eax
mov dword [0x45eb64], edx
mov dword [0x45eb60], eax
or eax, edx
je 0x447d66
mov ebx, edx
lea eax, [esp + 0x240]
push 0x40
push eax
push ebx
push ebp
call fcn.004475e0
add esp, 0x10
test eax, eax
js 0x447d66
mov eax, dword [esp + 0x27c]
mov ecx, eax
sar ecx, 0x1f
add eax, ebp
adc ecx, ebx
add eax, 0x18
adc ecx, 0
lea edx, [esp + 0x150]
push 0xf0
push edx
push ecx
push eax
call fcn.004475e0
add esp, 0x10
xor edi, edi
test eax, eax
js 0x447d68
cmp dword [esp + 0x1c4], 0
je 0x447d68
mov eax, dword [esp + 0x1c0]
mov esi, 0
test eax, eax
je 0x447d6a
add eax, ebp
mov ecx, ebx
adc ecx, 0
lea edx, [esp + 0x28]
push 0x28
push edx
push ecx
push eax
call fcn.004475e0
add esp, 0x10
test eax, eax
js 0x447d66
mov esi, dword [esp + 0x3c]
mov eax, 0xffffffff
cmp esi, 0x40000000
jae 0x447d17
lea eax, [esi*4]
push eax
call fcn.0040cb60
add esp, 4
mov edx, esi
and edx, 0xfffffffb
mov ecx, esi
and ecx, 4
or esi, 4
imul esi, ecx
xor ecx, 4
imul ecx, edx
add esi, ecx
mov edx, dword [esp + 0x44]
add edx, ebp
mov ecx, ebx
adc ecx, 0
push esi
mov dword [esp + 0x10], eax
push eax
push ecx
push edx
call fcn.004475e0
add esp, 0x10
test eax, eax
js 0x447d79
mov eax, dword [esp + 0x3c]
test eax, eax
jns 0x447d82
mov eax, 0xffffffff
jmp 0x447d84
xor edi, edi
xor esi, esi
mov eax, edi
mov edx, esi
add esp, 0x280
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
xor esi, esi
jmp 0x447fd7
add eax, eax
push eax
call fcn.0040cb60
add esp, 4
mov esi, dword [esp + 0x40]
mov ecx, esi
and ecx, 2
mov edx, esi
or esi, 2
imul esi, ecx
xor ecx, 2
and edx, 0xfffffffd
imul edx, ecx
add esi, edx
mov ecx, dword [esp + 0x4c]
add ecx, ebp
mov edx, ebx
adc edx, 0
push esi
mov dword [esp + 0xc], eax
push eax
push edx
push ecx
call fcn.004475e0
add esp, 0x10
test eax, eax
js 0x447fc7
mov esi, dword [esp + 0x40]
mov eax, 0xffffffff
cmp esi, 0x40000000
jae 0x447de4
lea eax, [esi*4]
push eax
call fcn.0040cb60
add esp, 4
mov ecx, esi
or ecx, 4
mov edi, esi
and edi, 4
imul ecx, edi
and esi, 0xfffffffb
xor edi, 4
imul edi, esi
add edi, ecx
mov ecx, dword [esp + 0x48]
add ecx, ebp
mov edx, ebx
adc edx, 0
push edi
mov dword [esp + 0x14], eax
push eax
push edx
push ecx
call fcn.004475e0
add esp, 0x10
test eax, eax
js 0x447fb5
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
cmp esi, eax
jb 0x447e36
mov esi, eax
test esi, esi
je 0x447fb5
lea eax, [esp + 0x50]
mov ecx, eax
not ecx
mov dword [esp + 0x18], ecx
neg eax
mov dword [esp + 0x14], eax
xor edi, edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x1c], esi
jmp 0x447e87
mov eax, 0xfb520141
cmp eax, dword [esp + 0x294]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
je 0x447fe8
inc edi
cmp edi, esi
je 0x447fb5
mov eax, dword [esp + 0x10]
mov eax, dword [eax + edi*4]
add eax, ebp
mov ecx, ebx
adc ecx, 0
push 0x100
lea edx, [esp + 0x54]
push edx
push ecx
push eax
call fcn.004475e0
add esp, 0x10
test eax, eax
jns 0x447eb4
cmp eax, 0x8000000d
jne 0x447e7e
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esp + esi + 0x50], 0
lea esi, [esi + 1]
jne 0x447ec0
mov dword [esp + 4], 0x524e4cd9
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 3
ja 0x447f16
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
movzx eax, byte [esp + eax + 4]
push dword [esp]
push eax
call fcn.004486a0
add esp, 8
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 4
jb 0x447ef0
lea eax, [esp + 0x4f]
lea edx, [eax + esi]
and edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
sub eax, esi
lea ebx, [esp + 0x50]
and eax, ebx
mov ebp, edx
sub ebp, eax
je 0x447e60
mov ecx, dword [esp + 4]
sub eax, edx
mov esi, 0xfb520141
mov edx, ebx
cmp eax, 0xfffffffc
ja 0x447f8b
mov eax, ebp
and eax, 0xfffffffc
lea edx, [esp + 0x50]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ebx, byte [edx]
xor ebx, esi
imul ebx, ecx
movsx esi, byte [edx + 1]
xor esi, ebx
imul esi, ecx
movsx ebx, byte [edx + 2]
xor ebx, esi
imul ebx, ecx
movsx esi, byte [edx + 3]
add edx, 4
xor esi, ebx
imul esi, ecx
add eax, 0xfffffffc
jne 0x447f60
mov eax, esi
and ebp, 3
je 0x447e65
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [edx + ebx]
xor eax, esi
imul eax, ecx
inc ebx
mov esi, eax
cmp ebp, ebx
jne 0x447fa0
jmp 0x447e65
xor edi, edi
xor esi, esi
push dword [esp + 0x10]
call fcn.0040cb70
add esp, 4
jmp 0x447fcb
xor edi, edi
xor esi, esi
push dword [esp + 8]
call fcn.0040cb70
add esp, 4
push dword [esp + 0xc]
call fcn.0040cb70
add esp, 4
jmp 0x447d6a
mov eax, dword [esp + 8]
movzx eax, word [eax + edi*2]
mov ecx, dword [esp + 0xc]
add ebp, dword [ecx + eax*4]
adc ebx, 0
mov edi, ebp
mov esi, ebx
jmp 0x447fb9