Function at 0x4476d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x284
mov ebp, dword [0x45ce24]
mov ebx, dword [0x45ce20]
mov eax, ebx
or eax, ebp
jne 0x44779e
mov dword [esp + 0x54], 0xe316e11e
mov dword [esp + 0x58], 0xe71ae500
mov dword [esp + 0x5c], 0xfbc4f904
mov dword [esp + 0x60], 0xff02fd18
mov dword [esp + 0x64], 0xf3f2f10c
mov word [esp + 0x68], 0
mov dword [esp + 0x154], 0
mov eax, dword [esp + 0x154]
cmp eax, 0x15
ja 0x44777a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x154]
movzx eax, byte [esp + eax + 0x54]
push dword [esp + 0x154]
push eax
call fcn.00448160
add esp, 8
mov ecx, dword [esp + 0x154]
mov byte [esp + ecx + 0x54], al
inc dword [esp + 0x154]
mov eax, dword [esp + 0x154]
cmp eax, 0x16
jb 0x447740
lea eax, [esp + 0x54]
push eax
call fcn.00447340
add esp, 4
mov ebx, eax
mov dword [0x45ce24], edx
mov dword [0x45ce20], eax
or eax, edx
je 0x447878
mov ebp, edx
lea eax, [esp + 0x244]
push 0x40
push eax
push ebp
push ebx
call fcn.00447130
add esp, 0x10
test eax, eax
js 0x447878
mov eax, dword [esp + 0x280]
mov ecx, eax
sar ecx, 0x1f
add eax, ebx
adc ecx, ebp
add eax, 0x18
adc ecx, 0
lea edx, [esp + 0x154]
push 0xf0
push edx
push ecx
push eax
call fcn.00447130
add esp, 0x10
xor edi, edi
test eax, eax
js 0x44787a
cmp dword [esp + 0x1c8], 0
je 0x44787a
mov eax, dword [esp + 0x1c4]
mov esi, 0
test eax, eax
je 0x44787c
add eax, ebx
mov ecx, ebp
adc ecx, 0
lea edx, [esp + 0x2c]
push 0x28
push edx
push ecx
push eax
call fcn.00447130
add esp, 0x10
test eax, eax
js 0x447878
mov ecx, dword [esp + 0x40]
lea esi, [ecx*4]
mov eax, 0xffffffff
cmp ecx, 0x40000000
jae 0x447841
mov eax, esi
push eax
call fcn.0040c4d0
add esp, 4
mov edx, dword [esp + 0x48]
add edx, ebx
mov ecx, ebp
adc ecx, 0
push esi
mov dword [esp + 0xc], eax
push eax
push ecx
push edx
call fcn.00447130
add esp, 0x10
test eax, eax
js 0x44788b
mov eax, dword [esp + 0x40]
test eax, eax
jns 0x447894
mov eax, 0xffffffff
jmp 0x447896
xor edi, edi
xor esi, esi
mov eax, edi
mov edx, esi
add esp, 0x284
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
xor esi, esi
jmp 0x447aca
add eax, eax
push eax
call fcn.0040c4d0
add esp, 4
mov esi, dword [esp + 0x44]
add esi, esi
mov ecx, dword [esp + 0x50]
add ecx, ebx
mov edx, ebp
adc edx, 0
push esi
mov dword [esp + 8], eax
push eax
push edx
push ecx
call fcn.00447130
add esp, 0x10
test eax, eax
js 0x447aba
mov ecx, dword [esp + 0x44]
lea esi, [ecx*4]
mov eax, 0xffffffff
cmp ecx, 0x40000000
jae 0x4478e2
mov eax, esi
push eax
call fcn.0040c4d0
add esp, 4
mov edx, dword [esp + 0x4c]
add edx, ebx
mov ecx, ebp
adc ecx, 0
push esi
mov dword [esp + 0x10], eax
push eax
push ecx
push edx
call fcn.00447130
add esp, 0x10
test eax, eax
js 0x447aa8
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
cmp esi, eax
jb 0x44791c
mov esi, eax
test esi, esi
je 0x447aa8
xor edi, edi
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], esi
jmp 0x44795b
mov edx, 0xb14a5e2
cmp edx, dword [esp + 0x298]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
je 0x447adb
inc edi
cmp edi, esi
je 0x447aa8
mov eax, dword [esp + 0xc]
mov eax, dword [eax + edi*4]
mov edx, ebx
and edx, eax
mov ecx, edx
shr ecx, 0x1f
add edx, edx
xor eax, ebx
add eax, edx
adc ecx, ebp
push 0x100
lea edx, [esp + 0x58]
push edx
push ecx
push eax
call fcn.00447130
add esp, 0x10
test eax, eax
jns 0x447992
cmp eax, 0x8000000d
jne 0x447952
mov ebx, 0xffffffff
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
cmp byte [esp + ebx + 0x55], 0
lea ebx, [ebx + 1]
lea eax, [eax + 1]
jne 0x4479a0
mov dword [esp + 0x28], edi
mov dword [esp + 0x14], 0x22262489
mov word [esp + 0x18], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x447a06
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0x14]
push dword [esp]
push eax
call fcn.004481f0
add esp, 8
mov ecx, dword [esp]
mov byte [esp + ecx + 0x14], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x4479e0
test ebx, ebx
je 0x447934
mov eax, dword [esp + 0x14]
mov ecx, eax
not ecx
mov edx, 0xb14a5e2
lea edi, [esp + 0x54]
cmp ebx, 1
je 0x447a7d
and esi, 0xfffffffe
mov dword [esp + 0x10], ecx
nop
nop
nop
nop
nop
movsx ebp, byte [edi]
xor ebp, edx
mov edx, ebp
and edx, ecx
mov ecx, ebp
not ecx
and ecx, eax
imul ecx, edx
mov edx, ebp
and edx, eax
or ebp, eax
imul ebp, edx
add ebp, ecx
movsx edx, byte [edi + 1]
add edi, 2
xor edx, ebp
mov ecx, edx
and ecx, dword [esp + 0x10]
mov ebp, edx
not ebp
and ebp, eax
imul ebp, ecx
mov ecx, edx
and ecx, eax
or edx, eax
imul edx, ecx
mov ecx, dword [esp + 0x10]
add edx, ebp
add esi, 0xfffffffe
jne 0x447a30
mov ebp, dword [esp + 0x1c]
test bl, 1
je 0x447939
mov esi, ecx
movsx ecx, byte [edi]
xor edx, ecx
and esi, edx
mov ecx, edx
not ecx
and ecx, eax
imul ecx, esi
mov esi, edx
and esi, eax
or edx, eax
imul edx, esi
add edx, ecx
jmp 0x447939
xor edi, edi
xor esi, esi
push dword [esp + 0xc]
call fcn.0040c4e0
add esp, 4
jmp 0x447abe
xor edi, edi
xor esi, esi
push dword [esp + 4]
call fcn.0040c4e0
add esp, 4
push dword [esp + 8]
call fcn.0040c4e0
add esp, 4
jmp 0x44787c
mov eax, dword [esp + 4]
movzx eax, word [eax + edi*2]
mov ecx, dword [esp + 8]
add ebx, dword [ecx + eax*4]
adc ebp, 0
mov edi, ebx
mov esi, ebp
jmp 0x447aac