Function at 0x47a8f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1b8
push ebx
push ebp
push esi
mov dword [esp + 0x18], ecx
xor esi, esi
push edi
lea ecx, [esp + 0x4c]
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], 0x56b730
call fcn.00433a10
mov ecx, 0x21
xor eax, eax
lea edi, [esp + 0xb9]
mov byte [esp + 0xb8], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x21
xor eax, eax
lea edi, [esp + 0x141]
mov byte [esp + 0x140], 0
rep stosd dword es:[edi], eax
mov ebx, dword [esp + 0x1cc]
stosw word es:[edi], ax
cmp ebx, esi
stosb byte es:[edi], al
je 0x47ad10
cmp dword [esp + 0x1d0], esi
je 0x47ad10
mov ebp, dword [esp + 0x1d4]
cmp ebp, esi
je 0x47ad10
push 3
push bind
push ebx
lea ecx, [esp + 0x1c]
call fcn.00412c80
test al, al
jne 0x47a9d3
push ebx
push str.HistoryCenter:__s_open_failed
push 1
push 0x596558
call fcn.004aa400
mov eax, dword [esp + 0x24]
add esp, 0x10
cmp eax, 0xffffffff
mov dword [esp + 0x10], 0x56b730
je 0x47ad21
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1b8
ret 0xc
mov eax, dword [esp + 0x18]
mov dword [ebp + 8], esi
cmp eax, 0x3e800
jae 0x47a9e6
mov eax, 0x3e800
push eax
mov ecx, ebp
call fcn.004b96d0
mov ecx, dword [esp + 0x18]
mov eax, dword [ebp + 4]
mov esi, ecx
push ecx
push eax
lea ecx, [esp + 0x18]
call fcn.00412cf0
cmp eax, esi
je 0x47aa64
mov eax, dword [esp + 0x14]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp eax, 0xffffffff
je 0x47aa20
push eax
call esi
mov dword [esp + 0x14], 0xffffffff
push ebx
push str.HistoryCenter:__s_read_failed
push 1
push 0x596558
mov dword [esp + 0x28], 0
call fcn.004aa400
mov eax, dword [esp + 0x24]
add esp, 0x10
cmp eax, 0xffffffff
mov dword [esp + 0x10], 0x56b730
je 0x47ad21
push eax
call esi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1b8
ret 0xc
mov eax, dword [esp + 0x18]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x14]
cmp eax, 0xffffffff
je 0x47aa83
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x14], 0xffffffff
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 4]
push ecx
push edx
lea ecx, [esp + 0x54]
mov dword [esp + 0x20], 0
call fcn.00433a40
lea ecx, [esp + 0x4c]
call fcn.00433b20
lea eax, [esp + 0x28]
lea ecx, [esp + 0x4c]
push eax
call fcn.00433bd0
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 4]
cmp eax, 0x110
jb 0x47ad05
cmp dword [edx + 0x74], 1
jne 0x47ad05
mov ecx, 9
mov edi, 0x5895a8
lea esi, [edx + 4]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x47ad05
mov esi, str.CompChart
lea eax, [edx + 0x44]
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x47ab11
test cl, cl
je 0x47ab0d
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x47ab11
add eax, 2
add esi, 2
test cl, cl
jne 0x47aaed
xor eax, eax
jmp 0x47ab16
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x47acfe
mov ecx, dword [esp + 0x1c]
lea eax, [edx + 0x68]
lea esi, [ecx + 4]
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x47ab4c
test cl, cl
je 0x47ab48
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x47ab4c
add eax, 2
add esi, 2
test cl, cl
jne 0x47ab28
xor eax, eax
jmp 0x47ab51
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x47acfe
mov esi, dword [esp + 0x1d0]
lea eax, [esp + 0x28]
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x47ab88
test cl, cl
je 0x47ab84
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x47ab88
add eax, 2
add esi, 2
test cl, cl
jne 0x47ab64
xor eax, eax
jmp 0x47ab8d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x47acfe
mov eax, dword [edx + 0x7c]
lea esi, [edx + 0x88]
mov ecx, 0x20
lea edi, [esp + 0xb8]
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
push 0x589320
lea ecx, [esp + 0xbc]
push 0x5893a8
lea edx, [esp + 0x148]
push ecx
push edx
lea ecx, [eax + 0x24]
call fcn.0050f3e0
test eax, eax
jge 0x47abec
mov ecx, dword [esp + 0x1cc]
push ecx
push str.HistoryCenter:__s_invalid_key
jmp 0x47a999
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 4]
sub ecx, 0x108
add eax, 0x108
xor esi, esi
test ecx, ecx
jle 0x47ac1b
mov bl, byte [eax]
mov edx, esi
and edx, 0x7f
mov dl, byte [esp + edx + 0x140]
xor bl, dl
inc esi
mov byte [eax], bl
inc eax
cmp esi, ecx
jl 0x47ac03
mov esi, dword [ebp + 4]
mov ebp, dword [esi + 0x108]
add esi, 0x108
cmp ebp, 1
mov ebx, dword [esi + 4]
jl 0x47acec
add ecx, 0xfffffff8
cmp ebp, ecx
jne 0x47acec
cmp ebx, 1
jl 0x47acec
cmp ebx, 0x7d000
mov eax, 0x7d000
jl 0x47ac59
mov eax, ebx
mov edi, dword [esp + 0x1c]
push eax
mov dword [esp + 0x24], eax
mov dword [edi + 0x18], 0
add edi, 0x10
mov ecx, edi
call fcn.004b96d0
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x20]
push edx
add esi, 8
mov eax, dword [ecx + 0x14]
add ecx, 0x20
push eax
push ebp
push esi
call fcn.0042c520
test eax, eax
je 0x47acda
cmp dword [esp + 0x20], ebx
jne 0x47acda
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x1d4]
mov ecx, dword [esp + 0x1c]
push eax
push edx
push edi
mov dword [ecx + 0x18], ebx
call fcn.0047ad60
mov esi, eax
mov eax, dword [esp + 0x14]
cmp eax, 0xffffffff
mov dword [esp + 0x10], 0x56b730
je 0x47accb
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1b8
ret 0xc
mov eax, dword [esp + 0x1cc]
push eax
push str.HistoryCenter:__s_decompression_failed
jmp 0x47a999
mov ecx, dword [esp + 0x1cc]
push ecx
push str.HistoryCenter:__s_invalid_archive
jmp 0x47a999
mov ebx, dword [esp + 0x1cc]
push ebx
push str.HistoryCenter:__s_invalid_file
jmp 0x47a999
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], 0x56b730
call fcn.0047ad30
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1b8
ret 0xc