Function at 0x611b40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov dword [ebp - 4], 0
mov eax, dword [esi]
mov dword [ebp - 0x14], eax
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0xc]
mov ebx, dword [eax]
mov ecx, dword [eax + 4]
inc ebx
mov edi, dword [eax + 0x10]
push ebx
push dword [esi + 8]
mov dword [ebp + 0xc], ecx
mov ecx, dword [eax + 0x14]
mov dword [ebp - 8], edi
mov dword [ebp + 8], ecx
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x58], ecx
call fcn.005f9cd0
mov ecx, dword [esi + 8]
add esp, 8
mov dword [ebp - 0xc], eax
push ebx
push ecx
test eax, eax
jne 0x611baf
call fcn.005f9eb0
add esp, 8
sub eax, 5
neg eax
sbb eax, eax
pop edi
pop esi
and eax, 7
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.005f9730
mov ebx, dword [ebp - 0x14]
lea esi, [ebp - 0x24]
mov edx, eax
push esi
push edx
mov ecx, dword [ebx + 0x20]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ecx]
mov dword [ebp - 0x30], eax
push ecx
mov eax, dword [eax + 0xc]
call eax
add esp, 0x18
test eax, eax
jne 0x611eed
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebx + 0x20]
mov dword [eax], ecx
mov ebx, dword [ebp + 0x28]
nop dword [eax]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x44]
push eax
mov eax, dword [ebp - 0x30]
push dword [ebp - 0x24]
mov eax, dword [eax + 0x14]
call eax
mov esi, eax
add esp, 0x18
test esi, esi
jne 0x611ec4
mov ebx, dword [ebp - 4]
mov edx, dword [ebp + 0xc]
cmp ebx, edx
jl 0x611be6
cmp dword [ebp - 0x10], eax
jne 0x611dfc
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0x3c], eax
mov eax, edi
or eax, dword [ebp + 8]
je 0x611dad
mov eax, edi
mov dword [ebp - 0x28], esi
and eax, 1
or eax, esi
jne 0x611c86
mov ebx, dword [ebp + 8]
nop dword [eax + eax]
inc esi
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, edi
and ecx, ebx
or edx, ecx
je 0x611c60
mov ebx, dword [ebp - 4]
mov dword [ebp - 0x28], esi
mov edi, dword [ebp + 0x18]
xor edx, edx
dec edi
mov dword [ebp - 0x10], 0
xor ecx, ecx
mov eax, edi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [ebp - 8]
and ecx, dword [ebp + 8]
or edx, ecx
jne 0x611ce3
mov ebx, dword [ebp - 0x10]
mov esi, dword [ebp - 8]
dec edi
xor edx, edx
xor ecx, ecx
mov eax, edi
bts edx, eax
inc ebx
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, esi
and ecx, dword [ebp + 8]
or edx, ecx
je 0x611cb8
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp - 4]
sub esi, dword [ebp - 0x10]
mov eax, esi
cdq
sub eax, edx
mov edi, eax
sar edi, 1
test edi, edi
jle 0x611da7
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x38]
mov dword [ebp - 0x10], 0
mov ecx, dword [ecx + 0x20]
push dword [ebp - 0x3c]
push ecx
mov ebx, dword [ecx]
mov eax, dword [ebx + 0xc]
call eax
mov esi, eax
add esp, 0x10
test esi, esi
jne 0x611edd
mov eax, dword [ebp - 0x14]
add edi, dword [ebp + 0x18]
mov ecx, dword [eax + 0x20]
mov eax, dword [ebp - 0x18]
mov dword [eax], ecx
cmp dword [ebp - 0x10], edi
jge 0x611d5b
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x18]
mov eax, dword [ebx + 0x14]
call eax
mov esi, eax
add esp, 0x18
test esi, esi
je 0x611d31
push dword [ebp - 0x18]
mov eax, dword [ebx + 0x10]
call eax
add esp, 4
test esi, esi
je 0x611d73
cmp esi, 0x65
jne 0x611edd
mov edx, dword [ebp + 0xc]
xor eax, eax
mov ebx, dword [ebp - 4]
cmp esi, 0x65
sete al
sub eax, dword [ebp + 0x18]
add eax, dword [ebp - 0x10]
test eax, eax
jle 0x611daa
movq xmm1, qword [ebp - 0x5c]
add edx, eax
movd xmm0, eax
psrlq xmm1, xmm0
movq qword [ebp - 0x5c], xmm1
mov eax, dword [ebp - 0x58]
mov edi, dword [ebp - 0x5c]
jmp 0x611db0
mov edx, dword [ebp + 0xc]
mov edi, dword [ebp - 8]
mov eax, dword [ebp + 8]
xor esi, esi
mov dword [ebp - 8], edi
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x10], 1
test edx, edx
jg 0x611dcb
cmp dword [ebp + 0x10], esi
jle 0x611dee
push 0xffffffffffffffff
push dword [ebp + 0x24]
push dword [ebp + 0x28]
call fcn.006121e0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x611edd
mov ebx, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x58], eax
cmp ebx, edx
jl 0x611be6
mov eax, dword [ebp + 0x18]
add eax, edx
cmp ebx, eax
jge 0x611eb4
mov eax, ebx
xor ecx, ecx
sub eax, edx
xor edx, edx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, edi
and ecx, dword [ebp + 8]
or edx, ecx
je 0x611e32
mov edi, 1
jmp 0x611e34
xor edi, edi
cmp ebx, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x28]
jle 0x611e59
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x20]
push eax
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 0x20]
push eax
push ebx
call fcn.006121e0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x611ea2
test edi, edi
je 0x611e71
push 0xffffffffffffffff
push dword [ebp + 0x1c]
push ebx
call fcn.006121e0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x611ea2
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 0x1c]
push eax
push ebx
call fcn.006121e0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x611ea2
test edi, edi
je 0x611ea2
push 0xffffffffffffffff
push dword [ebp + 0x20]
push ebx
call fcn.006121e0
add esp, 0xc
mov esi, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x20], eax
test esi, esi
jne 0x611edd
mov edi, dword [ebp - 8]
jmp 0x611bf0
cmp dword [ebp + 0x14], 0
je 0x611edd
push 0xffffffffffffffff
push dword [ebp + 0x24]
push dword [ebp + 0x28]
jmp 0x611ed3
cmp esi, 0x65
jne 0x611edd
mov eax, dword [ebp - 0x20]
add eax, dword [ebp - 0xc]
push 0xffffffffffffffff
push eax
push ebx
call fcn.006121e0
mov esi, eax
add esp, 0xc
mov eax, dword [ebp - 0x30]
push dword [ebp - 0x24]
mov eax, dword [eax + 0x10]
call eax
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret