Function at 0x42ac40
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 4]
mov eax, dword [esp + 8]
push edi
lea edi, [edx + eax]
cmp edx, edi
je 0x4280d9
push ebx
push esi
mov eax, dword [ecx + 0xd0]
movzx ebx, byte [eax + edx + 1]
lea esi, [eax + edx]
movzx eax, byte [esi]
movzx esi, byte [esi + 2]
imul eax, eax, 0x2773
xor eax, ebx
imul eax, eax, 0x2773
xor eax, esi
mov esi, dword [ecx + 0xe0]
and eax, 0xffff
lea eax, [esi + eax*4]
mov esi, dword [eax]
mov dword [eax], edx
mov eax, dword [ecx + 0xe4]
mov dword [eax + edx*4], esi
inc edx
cmp edx, edi
jne 0x428092
pop esi
pop ebx
pop edi
ret 8
sub esp, 0xc
mov eax, dword [ecx + 0x6148]
mov edx, dword [esp + 0x14]
mov dword [esp], eax
mov eax, dword [esp + 0x10]
add edx, eax
mov dword [esp + 8], edx
cmp eax, edx
je 0x4281f4
push ebx
push ebp
push esi
push edi
jmp 0x428110
mov edx, dword [ecx + 0xd0]
movzx esi, byte [edx + eax + 1]
lea ebx, [edx + eax]
movzx edx, byte [ebx]
imul edx, edx, 0x2773
xor edx, esi
movzx esi, byte [ebx + 2]
mov edi, edx
imul edi, edi, 0x2773
xor esi, edi
movzx edi, byte [ebx + 3]
mov ebp, esi
imul ebp, ebp, 0x2773
xor edi, ebp
movzx ebp, byte [ebx + 4]
mov ebx, edi
imul ebx, ebx, 0x2773
xor ebp, ebx
mov ebx, dword [ecx + 0xd4]
and ebp, dword [ecx + 0xec]
and edx, 0x3fff
add edx, ebx
mov bl, byte [edx]
mov byte [esp + 0x20], bl
mov ebx, dword [ecx + 0xd8]
and esi, 0x3ffff
movzx ebx, word [ebx + esi*2]
mov dword [esp + 0x14], ebx
mov ebx, dword [ecx + 0xdc]
and edi, 0x3ffff
mov ebx, dword [ebx + edi*4]
mov dword [esp + 0x24], ebx
mov ebx, dword [ecx + 0xe0]
mov ebx, dword [ebx + ebp*4]
mov byte [edx], al
mov edx, dword [ecx + 0xd8]
mov word [edx + esi*2], ax
mov edx, dword [ecx + 0xdc]
mov esi, dword [esp + 0x10]
mov dword [edx + edi*4], eax
mov edx, dword [ecx + 0xe0]
mov dword [edx + ebp*4], eax
mov edx, dword [esp + 0x24]
mov dword [esi + 3], edx
mov dx, word [esp + 0x14]
mov word [esi + 1], dx
mov dl, byte [esp + 0x20]
mov byte [esi], dl
mov edx, dword [ecx + 0xe4]
mov dword [edx + eax*4], ebx
add esi, 7
inc eax
mov dword [esp + 0x10], esi
cmp eax, dword [esp + 0x18]
jne 0x428110
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
sub esp, 0x1c
mov eax, dword [esp + 0x20]
push esi
mov esi, ecx
mov ecx, dword [esp + 0x28]
lea edx, [esp + 4]
push edx
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x6144]
push 0x429ca0
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
call fcn.00446a50
mov ecx, dword [esi + 0x6144]
lea eax, [esp + 4]
push eax
push 0x429cc0
call fcn.00446a50
mov ecx, dword [esi + 0x6144]
call fcn.004468c0
pop esi
add esp, 0x1c
ret 8
sub esp, 0x610
push ebp
xor ebp, ebp
push esi
mov esi, ecx
cmp dword [esp + 0x620], ebp
jbe 0x429ef6
push ebx
push edi
jmp 0x429d70
mov eax, dword [esp + 0x628]
sub eax, ebp
cmp eax, 0x20000
jbe 0x429d85
mov eax, 0x20000
mov ecx, dword [esi + 0x61d0]
xor edx, edx
div ecx
mov dword [esp + 0x10], eax
cmp eax, 0x400
jae 0x429da6
mov dword [esp + 0x10], 0x400
mov eax, dword [esp + 0x10]
xor ebx, ebx
mov dword [esp + 0x18], ebp
test ecx, ecx
jbe 0x429e2f
lea edi, [esp + 0x28]
jmp 0x429dc4
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x628]
sub ecx, ebp
je 0x429e2f
mov dword [esp + 0x14], ecx
cmp ecx, eax
jb 0x429ddb
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x624]
lea edx, [ecx + ebp]
and edx, dword [esi + 0xf4]
mov ecx, dword [esp + 0x14]
mov dword [edi - 4], edx
mov edx, ebp
sub edx, dword [esp + 0x18]
lea eax, [edi - 8]
shl edx, 4
add edx, dword [esi + 0x61dc]
push eax
mov dword [edi], ecx
mov ecx, dword [esi + 0x6144]
push 0x429d40
mov dword [eax], esi
mov dword [edi + 4], edx
mov dword [edi + 8], ebx
call fcn.00446a50
add ebp, dword [esp + 0x14]
inc ebx
add edi, 0x14
cmp ebx, dword [esi + 0x61d0]
jb 0x429dc0
mov ecx, dword [esi + 0x6144]
call fcn.004468c0
mov eax, dword [esi + 0x61e0]
add eax, 3
mov dword [esp + 0x1c], eax
mov ebx, 0
je 0x429edc
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x624]
lea edx, [eax + ecx]
mov ecx, ebp
sub ecx, eax
mov dword [esp + 0x14], ecx
lea ecx, [eax*8]
sub ecx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], ecx
lea edi, [esp + 0x2a8]
mov ecx, dword [esi + 0xf4]
and ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov dword [edi - 4], ecx
mov ecx, dword [esi + 0x6148]
add ecx, dword [esp + 0x10]
mov dword [edi], edx
mov edx, dword [esi + 0x61dc]
lea eax, [edi - 8]
mov dword [edi + 4], ecx
mov dword [eax], esi
mov dword [edi + 8], edx
mov dword [edi + 0xc], ebx
lea ecx, [ebx + 2]
cmp ebx, 3
jb 0x429ebe
mov ecx, 5
push eax
mov dword [edi + 0x10], ecx
mov ecx, dword [esi + 0x6144]
push 0x428400
call fcn.00446a50
inc ebx
add edi, 0x1c
cmp ebx, dword [esp + 0x1c]
jb 0x429e80
mov ecx, dword [esi + 0x6144]
call fcn.004468c0
cmp ebp, dword [esp + 0x628]
jb 0x429d70
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x610
ret 8
cmp dword [ecx + 0x104], 0
mov eax, dword [ecx + 0x6130]
mov dword [ecx + 0x614c], eax
jne 0x42ac5a
jmp 0x428080
mov eax, dword [ecx + 0x61d0]
mov edx, dword [esp + 8]
cmp eax, 2
jb 0x42ac84
cmp edx, 0x100
jb 0x42ac84
mov dword [esp + 8], edx
cmp eax, 8
jae 0x42ac7f
jmp 0x429ce0
jmp 0x429d50
mov dword [esp + 8], edx
jmp 0x4280e0