Function at 0x45b770
Capabilities:
Encode data using xor

Disassembly:
push ecx
push esi
mov esi, dword [esp + 0xc]
mov dword [esp + 4], 0
test esi, esi
jne 0x45b78a
lea eax, [esi - 0x66]
pop esi
pop ecx
ret 0xc
push ebx
mov ebx, dword [esi + 0x9c]
test ebx, ebx
jne 0x45b79e
lea eax, [ebx - 0x66]
pop ebx
pop esi
pop ecx
ret 0xc
cmp dword [ebx], 0
jne 0x45b7ae
pop ebx
mov eax, 0xffffff9c
pop esi
pop ecx
ret 0xc
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x45b7bc
pop ebx
pop esi
pop ecx
ret 0xc
mov ecx, dword [esp + 0x14]
mov dword [ebx + 0x10], ecx
mov ecx, dword [ebx + 0x5c]
mov dword [ebx + 0x14], eax
cmp eax, ecx
jbe 0x45b7d9
cmp dword [ebx + 0x8c], 0
jne 0x45b7d9
mov dword [ebx + 0x14], ecx
mov edx, dword [ebx + 0x58]
mov ecx, dword [ebx + 8]
add ecx, edx
cmp eax, ecx
jbe 0x45b7f1
cmp dword [ebx + 0x8c], 0
je 0x45b7f1
mov dword [ebx + 0x14], ecx
cmp dword [ebx + 0x14], 0
push ebp
push edi
jbe 0x45b9a2
lea ecx, [ecx]
cmp dword [ebx + 8], 0
jne 0x45b8da
mov eax, dword [ebx + 0x58]
test eax, eax
jbe 0x45b8da
mov edi, 0x4000
mov dword [esp + 0x20], edi
cmp eax, edi
jae 0x45b828
mov dword [esp + 0x20], eax
mov edi, eax
mov edx, dword [ebx + 0x88]
add edx, dword [ebx + 0x3c]
mov eax, dword [ebx + 0x80]
mov ecx, dword [ebx + 0x7c]
push 0
push edx
mov edx, dword [ebx + 0x70]
push eax
push ecx
call edx
add esp, 0x10
test eax, eax
jne 0x45b9ae
mov eax, dword [ebx]
mov ecx, dword [ebx + 0x80]
mov edx, dword [ebx + 0x7c]
push edi
push eax
mov eax, dword [ebx + 0x64]
push ecx
push edx
call eax
add esp, 0x10
cmp eax, edi
jne 0x45b9ae
cmp dword [esi + 0xa0], 0
je 0x45b8cc
xor ebp, ebp
test edi, edi
jbe 0x45b8cc
add esi, 0xa4
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0xac]
mov edx, dword [ebx]
and eax, 0xfffd
lea edi, [edx + ebp]
or eax, 2
mov edx, eax
xor edx, 1
imul edx, eax
shr edx, 8
xor byte [edi], dl
mov eax, dword [ebx]
movsx eax, byte [eax + ebp]
mov edi, dword [ecx + 0xb0]
call fcn.0045ad00
mov ecx, dword [ebx]
mov byte [ecx + ebp], al
inc ebp
cmp ebp, dword [esp + 0x20]
jb 0x45b883
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
mov edx, dword [ebx]
add dword [ebx + 0x3c], edi
sub dword [ebx + 0x58], edi
mov dword [ebx + 4], edx
mov dword [ebx + 8], edi
cmp dword [ebx + 0x84], 0
je 0x45b943
cmp dword [ebx + 0x8c], 0
jne 0x45b943
mov eax, dword [ebx + 0x10]
mov esi, dword [ebx + 0x18]
push 2
lea ecx, [ebx + 4]
push ecx
mov dword [esp + 0x28], eax
call fcn.0045d1b0
mov ebp, eax
test ebp, ebp
jl 0x45b912
cmp dword [ebx + 0x1c], 0
je 0x45b912
mov ebp, 0xfffffffd
mov edi, dword [ebx + 0x18]
mov edx, dword [esp + 0x20]
mov eax, dword [ebx + 0x50]
sub edi, esi
push edi
push edx
push eax
call fcn.0045ceb0
sub dword [ebx + 0x5c], edi
add dword [esp + 0x10], edi
mov dword [ebx + 0x50], eax
cmp ebp, 1
je 0x45b9a2
test ebp, ebp
jne 0x45b9b9
mov esi, dword [esp + 0x18]
jmp 0x45b998
mov eax, dword [ebx + 8]
test eax, eax
jne 0x45b94f
cmp dword [ebx + 0x58], eax
je 0x45b9a2
mov edi, dword [ebx + 0x14]
cmp edi, eax
jb 0x45b958
mov edi, eax
xor eax, eax
test edi, edi
jbe 0x45b971
mov edi, edi
mov ecx, dword [ebx + 4]
mov cl, byte [eax + ecx]
mov edx, dword [ebx + 0x10]
mov byte [eax + edx], cl
inc eax
cmp eax, edi
jb 0x45b960
mov edx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x50]
push edi
push edx
push eax
call fcn.0045ceb0
sub dword [ebx + 0x5c], edi
sub dword [ebx + 8], edi
sub dword [ebx + 0x14], edi
add dword [ebx + 0x10], edi
add dword [ebx + 4], edi
add dword [ebx + 0x18], edi
add dword [esp + 0x10], edi
mov dword [ebx + 0x50], eax
cmp dword [ebx + 0x14], 0
ja 0x45b800
mov eax, dword [esp + 0x10]
pop edi
pop ebp
pop ebx
pop esi
pop ecx
ret 0xc
pop edi
pop ebp
pop ebx
or eax, 0xffffffff
pop esi
pop ecx
ret 0xc
pop edi
mov eax, ebp
pop ebp
pop ebx
pop esi
pop ecx
ret 0xc