Function at 0x456864
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x9c
mov dword [esp + 8], ebp
mov ebp, eax
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0x10], edi
movzx ecx, byte [ebp + 0x14]
cmp cl, 0x73
jne 0x456a40
call fcn.0041426c
xor al, 1
je 0x45699b
mov dword [esp + 0xa4], ebx
lea edx, [esp + 0x14]
mov eax, esi
push edx
call fcn.0042bfd0
mov ebx, eax
mov ecx, 0x11
add ebx, 0x40
push dword [ebx]
sub ebx, 4
dec ecx
jne 0x4568c1
call fcn.00457668
mov edi, eax
cmp dword [ebp + 4], 0x7ffffffe
je 0x4568ef
cmp dword [ebp + 4], edi
jae 0x4568ef
mov ebx, dword [esp + 0xa4]
mov edi, dword [ebp + 4]
mov dword [esp + 0xa4], ebx
mov ecx, dword [ebp]
cmp edi, ecx
jae 0x456920
mov dword [esp + 0x94], edi
xor ebx, ebx
mov edi, ecx
sub edi, dword [esp + 0x94]
je 0x456920
push dword [esp + 0xa4]
mov eax, 0x20
call fcn.00403e38
inc ebx
cmp ebx, edi
jb 0x45690a
cmp dword [ebp + 4], 0x7ffffffe
jne 0x45694c
push dword [esp + 0xa4]
mov ebx, esi
mov ecx, 0x11
add ebx, 0x40
push dword [ebx]
sub ebx, 4
dec ecx
jne 0x45693a
call fcn.00457698
jmp 0x456baf
mov ebx, dword [esp + 0xa4]
xor edi, edi
mov eax, esi
call fcn.0042bd88
xor al, 1
je 0x456baf
cmp dword [ebp + 4], edi
je 0x456baf
push ebx
mov eax, esi
call fcn.0042bd90
call fcn.00403e38
mov eax, esi
call fcn.0042bd98
inc edi
mov eax, esi
call fcn.0042bd88
xor al, 1
je 0x456baf
cmp edi, dword [ebp + 4]
jb 0x45696d
jmp 0x456baf
cmp dword [ebp + 4], 0x7ffffffe
jne 0x4569d3
xor edi, edi
mov eax, esi
call fcn.0042bd88
xor al, 1
je 0x456a0a
push ebx
mov eax, esi
call fcn.0042bd90
call fcn.00403e38
mov eax, esi
call fcn.0042bd98
inc edi
mov eax, esi
call fcn.0042bd88
xor al, 1
jne 0x4569b1
jmp 0x456a0a
xor edi, edi
mov eax, esi
call fcn.0042bd88
xor al, 1
je 0x456a0a
cmp dword [ebp + 4], edi
je 0x456a0a
push ebx
mov eax, esi
call fcn.0042bd90
call fcn.00403e38
mov eax, esi
call fcn.0042bd98
inc edi
mov eax, esi
call fcn.0042bd88
xor al, 1
je 0x456a0a
cmp edi, dword [ebp + 4]
jb 0x4569e5
mov ecx, dword [ebp]
cmp edi, ecx
jae 0x456baf
xor esi, esi
sub ecx, edi
mov dword [esp + 0x98], ecx
je 0x456baf
push ebx
mov eax, 0x20
call fcn.00403e38
inc esi
cmp esi, dword [esp + 0x98]
jb 0x456a26
jmp 0x456baf
cmp cl, 0x72
jne 0x456a7b
mov eax, esi
call fcn.0042bd88
xor al, 1
je 0x456baf
push ebx
mov eax, esi
call fcn.0042bd90
push eax
mov eax, ebp
call fcn.004576ac
mov eax, esi
call fcn.0042bd98
mov eax, esi
call fcn.0042bd88
xor al, 1
jne 0x456a54
jmp 0x456baf
cmp cl, 0x28
jne 0x456b6c
mov eax, esi
call fcn.0042bd88
test al, al
jne 0x456baf
mov dword [esp + 0xa0], esi
mov esi, 0x467570
lea edi, [esp + 0x64]
mov ecx, 0xc
rep movsd dword es:[edi], dword [esi]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
lea eax, [esp + 0x6c]
call fcn.00414328
push ebx
lea eax, [esp + 0x68]
call fcn.00405bb4
mov eax, ebp
call fcn.0041426c
test al, al
je 0x456ae9
mov esi, dword [esp + 0xa0]
mov eax, esi
push ebx
call fcn.0042bd90
push eax
lea eax, [esp + 0x6c]
call fcn.004576ac
jmp 0x456b02
mov esi, dword [esp + 0xa0]
mov eax, esi
push ebx
call fcn.0042bd90
push eax
lea eax, [esp + 0x6c]
call fcn.004576c0
mov ecx, dword [ebp + 0x24]
or ecx, dword [ebp + 0x20]
je 0x456b41
push ebx
push dword [esp + 0x94]
push dword [esp + 0x94]
call fcn.00405ae4
mov eax, esi
call fcn.0042bd98
mov eax, esi
call fcn.0042bd88
test al, al
jne 0x456baf
push ebx
push dword [ebp + 0x24]
push dword [ebp + 0x20]
call fcn.00405ae4
jmp 0x456a93
mov eax, esi
call fcn.0042bd98
mov eax, esi
call fcn.0042bd88
test al, al
jne 0x456baf
push ebx
push dword [esp + 0x94]
push dword [esp + 0x94]
call fcn.00405ae4
jmp 0x456a93
mov dword [esp], 0x467460
call fcn.0041407c
mov ebx, eax
mov eax, 0x405370
push eax
push 0x27
movzx eax, byte [ebp + 0x14]
call fcn.0040c4e8
mov esi, 0xc
push edx
mov edx, 0x414200
push eax
mov eax, ebx
push edx
push esi
push 0xd1e
push 0
call fcn.00414244
mov dword [esp], eax
call fcn.00413d00
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
add esp, 0x9c
ret 8