Function at 0x454cb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov edx, ecx
push ebx
push esi
xor esi, esi
mov eax, dword [edx + 0x13a4]
push edi
cmp eax, esi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 4], 0x16
mov dword [ebp - 8], esi
jl 0x454f64
cmp eax, dword [edx + 0x404]
jge 0x454f64
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*2]
mov ecx, dword [edx + 0x538]
mov edi, dword [ecx + eax*4 + 0x24]
mov ecx, dword [edx + 0x550]
add edi, ecx
mov dword [ebp - 0x10], edi
cmp dword [edi], esi
je 0x454f58
xor ecx, ecx
jmp 0x454d1b
mov eax, dword [edx + 0x3d4]
mov ebx, eax
and ebx, 0x18000
cmp ebx, 0x18000
jne 0x454d39
mov dword [ebp - 4], esi
mov ecx, 1
mov ebx, eax
and ebx, 0x14000
cmp ebx, 0x14000
jne 0x454d51
mov dword [ebp - 4], 1
inc ecx
mov ebx, eax
and ebx, 0x12000
cmp ebx, 0x12000
jne 0x454d69
mov dword [ebp - 4], 2
inc ecx
and eax, 0x11000
cmp eax, 0x11000
jne 0x454d7d
mov dword [ebp - 4], 3
inc ecx
mov ebx, dword [edx + 0x404]
mov eax, dword [edx + 0x13a4]
dec ebx
cmp eax, ebx
jne 0x454dab
mov ebx, dword [edx + 0x410]
lea esi, [eax + eax*8]
lea eax, [eax + esi*2]
mov esi, dword [edx + 0x538]
sub ebx, dword [esi + eax*4 + 0x24]
xor esi, esi
mov dword [ebp - 0x14], ebx
jmp 0x454dc3
lea ebx, [eax + eax*8]
lea eax, [eax + ebx*2]
mov ebx, dword [edx + 0x538]
lea eax, [ebx + eax*4]
mov ebx, dword [eax + 0x70]
sub ebx, dword [eax + 0x24]
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0xc], esi
jmp 0x454dd8
mov esi, dword [edx + 0x3d4]
mov eax, esi
and eax, 0x10000
cmp eax, 0x10000
jne 0x454ef3
xor eax, eax
and esi, 0x810000
mov al, byte [edx + 0x440]
cmp esi, 0x810000
mov dword [ebp - 8], eax
je 0x454e14
cmp ecx, 1
jne 0x454ef3
jmp 0x454e19
cmp ecx, 1
jne 0x454e2a
mov cl, byte [edx + 0x443]
mov esi, dword [ebp - 4]
and ecx, 0xf
or esi, ecx
mov dword [ebp - 4], esi
mov esi, dword [ebp - 4]
lea edi, [ebp - 0x3c]
xor eax, esi
mov dword [ebp - 8], eax
mov eax, dword [edx + 0x13a4]
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*2]
mov ecx, dword [edx + 0x538]
lea eax, [ecx + eax*4]
mov ecx, 8
mov dword [ebp - 4], eax
lea esi, [eax + 4]
rep movsd dword es:[edi], dword [esi]
cmp dword [eax], 0
je 0x454e8b
xor eax, eax
movsx ecx, byte [ebp + eax - 0x3c]
mov esi, dword [ebp - 4]
mov dword [ebp - 0x18], ecx
mov ecx, eax
and ecx, 3
mov bl, byte [ecx + esi]
mov cl, byte [ebp - 0xc]
add bl, cl
mov ecx, dword [ebp - 0x18]
xor bl, cl
mov dword [ebp - 0xc], ecx
mov byte [ebp + eax - 0x3c], bl
inc eax
cmp eax, 0x20
jb 0x454e5e
mov ebx, dword [ebp - 0x14]
jmp 0x454e9d
lea edi, [ebp - 0x3c]
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ebx, ebx
mov dword [ebp - 0x18], ecx
jle 0x454ede
cmp esi, dword [ebp - 0x18]
jl 0x454eba
xor esi, esi
mov cl, byte [ebp + esi - 0x3c]
mov edi, dword [ebp - 8]
mov byte [ebp - 4], cl
and ecx, 0xff
add ecx, edi
add eax, ecx
cmp eax, ebx
jge 0x454ede
mov edi, dword [ebp - 0x10]
mov cl, byte [ebp - 4]
xor byte [eax + edi], cl
inc esi
jmp 0x454eb3
jmp 0x454ef0
mov edi, dword [ebp - 0x10]
xor eax, eax
test ebx, ebx
jle 0x454f29
mov bl, byte [ebp - 0xc]
mov edx, eax
movsx ecx, byte [eax + edi]
and edx, 0xf
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0xc], ecx
mov dl, byte [edx*4 + 0x56cc60]
add dl, bl
mov bl, byte [ebp - 8]
xor dl, bl
mov ebx, dword [ebp - 0x14]
xor dl, cl
mov byte [eax + edi], dl
inc eax
cmp eax, ebx
jl 0x454ef9
mov edx, dword [ebp - 0x1c]
cmp dword [edi], 0
je 0x454f58
mov dword [edi], 0
mov eax, dword [edx + 0x13a4]
push eax
push ebx
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*2]
mov ecx, dword [edx + 0x538]
mov eax, dword [ecx + eax*4 + 0x24]
mov ecx, edx
push eax
call fcn.00457160
test eax, eax
je 0x454f64
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret