Function at 0x60084ac0
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 0x14]
sub esp, 0x30c
push ebx
push ebp
push esi
mov esi, dword [edx]
push edi
mov eax, dword [esi + 8]
cmp eax, 2
je 0x60084ae5
cmp eax, 3
mov dword [esp + 0x10], 0
jne 0x60084aed
mov dword [esp + 0x10], 1
mov edi, dword [esi]
mov ecx, dword [esp + 0x320]
mov ebp, dword [esp + 0x328]
cmp eax, 1
lea ecx, [ecx + edi*4]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x324]
lea ebp, [ebp + edi*4]
lea ebx, [ecx + edi*4]
mov dword [esp + 0x18], ebp
je 0x60084b27
mov eax, dword [esp + 0x10]
test eax, eax
je 0x60084e6a
mov ebp, dword [esp + 0x32c]
cmp ebp, 1
je 0x60084b3c
cmp ebp, 0xffffffff
jne 0x60084c1c
push edx
push ecx
call fcn.60085110
test eax, eax
je 0x60084b7b
mov edx, dword [esp + 0x330]
mov ecx, dword [esp + 0x328]
mov eax, dword [edx]
mov edx, dword [esp + 0x320]
push eax
push 2
push ecx
push edx
call fcn.6007f3c0
neg eax
pop edi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0x30c
ret 0x14
mov eax, dword [esp + 0x330]
mov ecx, dword [esp + 0x320]
push eax
push ecx
call fcn.60085110
test eax, eax
je 0x60084bfd
cmp ebp, 1
jne 0x60084bcd
mov edx, dword [esp + 0x330]
mov ecx, dword [esp + 0x328]
mov eax, dword [edx]
mov edx, dword [esp + 0x324]
push eax
push 2
push ecx
push edx
call fcn.6007f3c0
neg eax
pop edi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0x30c
ret 0x14
mov eax, dword [esp + 0x330]
mov ecx, dword [esp + 0x328]
mov edx, dword [esp + 0x324]
push eax
push ecx
push edx
call fcn.60085230
neg eax
pop edi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0x30c
ret 0x14
cmp ebp, 0xffffffff
jne 0x60084cd7
push esi
lea eax, [esp + 0x20]
push 1
push eax
push ebx
call fcn.6007f3c0
test eax, eax
jne 0x60084d0f
xor eax, eax
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x60084f7f
test eax, eax
je 0x60084c55
lea edx, [esp + 0x1c]
push esi
lea eax, [esp + 0x120]
push edx
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.6007f9d0
test eax, eax
mov dword [esp + 0x10], 1
jne 0x60084c5d
mov dword [esp + 0x10], 0
xor eax, eax
test edi, edi
je 0x60084c9e
mov edx, dword [esp + 0x330]
mov ebx, dword [esp + 0x324]
lea ecx, [esp + 0x11c]
add edx, 4
sub ebx, ecx
lea ecx, [esp + eax*4 + 0x11c]
add edx, 4
mov ebp, dword [ebx + ecx]
xor ebp, dword [edx - 4]
xor ebp, dword [ecx]
mov ecx, dword [esp + eax*4 + 0x1c]
xor ecx, ebp
mov dword [esp + eax*4 + 0x1c], ecx
inc eax
cmp eax, edi
jne 0x60084c7d
mov eax, dword [esp + 0x10]
test eax, eax
je 0x60084f10
lea edx, [esp + 0x21c]
push esi
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.6007f9d0
test eax, eax
je 0x60084f10
mov eax, 1
jmp 0x60084f12
mov eax, dword [esp + 0x10]
push esi
test eax, eax
je 0x60084cfc
lea ecx, [esp + 0x20]
push ecx
push ebx
mov ebx, dword [esp + 0x330]
push ebx
call fcn.6007f320
test eax, eax
jne 0x60084d16
jmp 0x60084c1c
lea edx, [esp + 0x20]
push edx
push ebx
call fcn.6007fb20
test eax, eax
je 0x60084e6a
mov ebx, dword [esp + 0x324]
mov ebp, dword [esp + 0x320]
push esi
push ebx
push ebp
call fcn.6007f450
test eax, eax
push esi
je 0x60084e79
mov ebx, dword [esp + 0x18]
lea eax, [esp + 0x20]
push eax
push ebx
call fcn.6007f450
test eax, eax
je 0x60084d69
mov ecx, dword [esp + 0x330]
mov edx, dword [esp + 0x328]
push ecx
push edx
call fcn.60085620
neg eax
pop edi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0x30c
ret 0x14
mov eax, dword [esp + 0x10]
push esi
test eax, eax
je 0x60084db2
lea eax, [esp + 0x120]
push eax
push ebp
push ebx
call fcn.6007f3f0
test eax, eax
je 0x60084c1c
lea ecx, [esp + 0x11c]
push esi
lea edx, [esp + 0x120]
push ecx
push edx
push ebp
call fcn.6007f320
test eax, eax
je 0x60084c1c
mov eax, 1
jmp 0x60084c1e
lea eax, [esp + 0x20]
push eax
push ebx
push ebx
call fcn.6007f320
test eax, eax
je 0x60084e6a
lea ecx, [esp + 0x11c]
push esi
push ecx
push ebp
push ebp
call fcn.6007f9d0
test eax, eax
je 0x60084e6a
mov eax, dword [esp + 0x330]
lea edx, [esp + 0x21c]
push esi
add eax, 4
push edx
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.6007f320
test eax, eax
je 0x60084e6a
lea edx, [esp + 0x21c]
push esi
lea eax, [esp + 0x220]
push edx
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.6007f320
test eax, eax
je 0x60084e6a
lea edx, [esp + 0x21c]
push esi
lea eax, [esp + 0x220]
push edx
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.6007f320
test eax, eax
je 0x60084e6a
lea edx, [esp + 0x11c]
push esi
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x224]
push eax
push ecx
call fcn.6007f3f0
test eax, eax
jne 0x60084f87
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30c
ret 0x14
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x220]
lea eax, [esp + 0x20]
push edx
push eax
push ecx
call fcn.6007f320
neg eax
mov ecx, dword [esp + 0x10]
sbb eax, eax
neg eax
test ecx, ecx
je 0x60084ec6
test eax, eax
je 0x60084c1c
lea edx, [esp + 0x21c]
push esi
push edx
lea eax, [esp + 0x224]
push ebx
push eax
call fcn.6007f320
test eax, eax
jne 0x60084ece
jmp 0x60084c1c
test eax, eax
je 0x60084c1c
lea ecx, [esp + 0x1c]
push esi
push ecx
push ebx
push ebp
call fcn.6007fcf0
test eax, eax
je 0x60084c1c
lea edx, [esp + 0x11c]
push esi
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x224]
push eax
push ecx
call fcn.6007f3f0
test eax, eax
je 0x60084c1c
mov eax, 1
jmp 0x60084c1e
xor eax, eax
xor ecx, ecx
test edi, edi
je 0x60084e6c
mov ebx, dword [esp + 0x320]
mov ebp, dword [esp + 0x14]
lea edx, [esp + 0x1c]
sub ebx, edx
lea edx, [esp + 0x1c]
sub ebp, edx
mov dword [esp + 0x14], ebp
jmp 0x60084f3d
mov ebp, dword [esp + 0x14]
lea esi, [esp + ecx*4 + 0x1c]
mov edx, dword [ebx + esi]
mov ebp, dword [esi + ebp]
xor edx, dword [esi]
mov esi, dword [esp + ecx*4 + 0x21c]
xor ebp, esi
mov esi, dword [esp + 0x328]
xor ebp, edx
inc ecx
lea esi, [esi + edi*4]
cmp ecx, edi
mov dword [esi + ecx*4 - 4], ebp
mov esi, dword [esp + 0x328]
mov dword [esi + ecx*4 - 4], edx
jne 0x60084f39
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30c
ret 0x14
test eax, eax
je 0x60084e6a
lea eax, [esp + 0x1c]
push esi
lea ecx, [esp + 0x120]
push eax
lea edx, [esp + 0x124]
push ecx
push edx
call fcn.6007f9d0
test eax, eax
je 0x60084e6a
mov edi, dword [esp + 0x320]
lea eax, [esp + 0x1c]
push esi
push eax
lea ecx, [esp + 0x24]
push edi
push ecx
call fcn.6007fcf0
test eax, eax
je 0x60084e6a
mov eax, dword [esp + 0x324]
lea edx, [esp + 0x1c]
push esi
push edx
lea ecx, [esp + 0x24]
push eax
push ecx
call fcn.6007fcf0
test eax, eax
je 0x60084e6a
lea edx, [esp + 0x21c]
push esi
lea eax, [esp + 0x20]
push edx
push eax
push edi
call fcn.6007fcf0
test eax, eax
je 0x60084e6a
mov ecx, dword [esp + 0x328]
push esi
push 1
lea edx, [esp + 0x24]
push ecx
push edx
call fcn.6007f3c0
test eax, eax
je 0x60084e6a
lea eax, [esp + 0x1c]
push esi
lea ecx, [esp + 0x220]
push eax
lea edx, [esp + 0x124]
push ecx
push edx
call fcn.6007f9d0
test eax, eax
je 0x60084e6a
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push esi
push eax
lea edx, [esp + 0x24]
push ecx
push edx
call fcn.6007fcf0
test eax, eax
je 0x60084e6a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x30c
ret 0x14