Function at 0x42a5e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2c
push ebx
push ebp
mov ebx, eax
mov eax, dword [ebx + 0x3c]
push esi
push edi
mov ebp, 0x8000000
test eax, eax
je 0x42a5fd
test dword [eax + 0x98], ebp
jne 0x42a63a
mov esi, dword [esp + 0x44]
cmp eax, esi
je 0x42a63e
mov edi, dword [ebx + 0x4c]
xor edx, edx
test edi, edi
je 0x42a62e
mov eax, dword [ebx + 0x48]
add eax, 4
mov ecx, dword [eax]
test ecx, ecx
je 0x42a622
test dword [ecx + 0x98], ebp
jne 0x42a63e
cmp ecx, esi
je 0x42a63e
inc edx
add eax, 0x10
cmp edx, edi
jb 0x42a614
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x10
mov esi, dword [esp + 0x44]
push 0xd4
call dword [0x4d5460]
add esp, 4
test eax, eax
je 0x42a62e
mov ecx, dword [ebx + 0xa8]
mov edi, dword [esp + 0x40]
push ecx
push 0
mov ecx, eax
call fcn.0042ed40
mov ebp, eax
mov dword [esp + 0x10], ebp
test ebp, ebp
je 0x42a62e
mov eax, dword [ebx + 0x28]
lea ecx, [ebp + 0x28]
lea edx, [ebx + 0x2c]
cmp eax, 0xb
jbe 0x42a67f
mov edx, dword [ebx + 0x2c]
push edx
call fcn.00432f40
mov eax, dword [edi + 0x780]
test eax, eax
je 0x42a69b
mov edx, dword [edi + 0x77c]
mov eax, dword [edx + eax*4 - 4]
jmp 0x42a6a1
mov eax, dword [edi + 0x76c]
mov dword [ebp + 0xa4], eax
mov eax, dword [esp + 0x48]
push eax
lea ecx, [ebx + 0x38]
push ecx
mov ecx, esi
lea edi, [esp + 0x20]
call fcn.0042a030
mov esi, eax
lea eax, [ebp + 0x38]
call fcn.00410df0
mov esi, dword [ebx + 0x4c]
cmp esi, dword [ebp + 0x50]
lea edi, [ebp + 0x48]
jbe 0x42a6dd
push 1
push esi
call fcn.00407c80
cmp esi, dword [edi + 8]
ja 0x42a6e0
mov dword [edi + 4], esi
cmp dword [ebx + 0x4c], 0
mov dword [esp + 0x14], 0
jbe 0x42a78f
xor ebp, ebp
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx + 0x48]
mov eax, dword [ebx + 0x48]
mov ecx, dword [esp + 0x48]
push ecx
mov ecx, dword [esp + 0x48]
add eax, ebp
push eax
lea edi, [esp + 0x30]
add esi, ebp
call fcn.0042a030
mov edx, dword [eax]
movzx ecx, byte [esi + 0xc]
mov dword [esi], edx
xor cl, byte [eax + 0xc]
add ebp, 0x10
and cl, 1
xor byte [esi + 0xc], cl
mov edx, dword [eax + 4]
movzx ecx, byte [esi + 0xc]
mov dword [esi + 4], edx
xor cl, byte [eax + 0xc]
and cl, 2
xor byte [esi + 0xc], cl
mov cl, byte [eax + 0xc]
mov dl, byte [esi + 0xc]
xor cl, dl
and cl, 4
xor cl, dl
mov byte [esi + 0xc], cl
mov dl, byte [eax + 0xc]
xor dl, cl
and dl, 8
xor dl, cl
mov byte [esi + 0xc], dl
movzx ecx, byte [eax + 0xc]
xor cl, dl
and cl, 0x10
xor cl, dl
mov byte [esi + 0xc], cl
mov edx, dword [eax + 8]
movzx ecx, cl
mov dword [esi + 8], edx
xor cl, byte [eax + 0xc]
mov eax, dword [esp + 0x14]
and cl, 0x20
xor byte [esi + 0xc], cl
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [ebx + 0x4c]
jb 0x42a6f4
mov ebp, dword [esp + 0x10]
mov edi, dword [ebx + 0x74]
mov edx, dword [ebx + 0x70]
lea esi, [ebp + 0x70]
mov dword [esp + 0x44], edx
cmp dword [esi + 8], edi
jae 0x42a7ae
push 0
push edi
call fcn.00418330
cmp dword [esi + 8], edi
jb 0x42a7c8
xor eax, eax
test edi, edi
je 0x42a7c5
mov edx, dword [esp + 0x44]
mov edx, dword [edx + eax*4]
mov ecx, dword [esi]
mov dword [ecx + eax*4], edx
inc eax
cmp eax, edi
jb 0x42a7b4
mov dword [esi + 4], edi
mov al, byte [ebx + 0x98]
mov ecx, dword [esp + 0x48]
push 0x3c
mov byte [ebp + 0x98], al
mov dword [ebp + 0x9c], ecx
call dword [0x4d5460]
mov edi, eax
xor eax, eax
add esp, 4
cmp edi, eax
je 0x42a88b
mov ebx, dword [ebx + 0xd0]
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], eax
mov dword [edi + 0x28], eax
mov edx, dword [ebx]
mov dword [edi], edx
mov eax, dword [ebx + 4]
lea esi, [edi + 0x20]
mov dword [edi + 4], eax
mov ecx, dword [ebx + 8]
mov dword [edi + 8], ecx
mov edx, dword [ebx + 0xc]
mov dword [edi + 0xc], edx
mov al, byte [ebx + 0x10]
mov byte [edi + 0x10], al
movzx ecx, byte [ebx + 0x11]
mov byte [edi + 0x11], cl
mov edx, dword [ebx + 0x14]
mov dword [edi + 0x14], edx
mov eax, dword [ebx + 0x18]
mov dword [edi + 0x18], eax
movzx ecx, byte [ebx + 0x1c]
mov byte [edi + 0x1c], cl
mov ebp, dword [ebx + 0x24]
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x44], edx
cmp dword [esi + 8], ebp
jae 0x42a859
push 0
push ebp
call fcn.00407ec0
cmp dword [esi + 8], ebp
jb 0x42a873
xor eax, eax
test ebp, ebp
je 0x42a870
mov edx, dword [esp + 0x44]
mov dl, byte [eax + edx]
mov ecx, dword [esi]
mov byte [eax + ecx], dl
inc eax
cmp eax, ebp
jb 0x42a85f
mov dword [esi + 4], ebp
mov al, byte [ebx + 0x34]
mov ebp, dword [esp + 0x10]
mov byte [edi + 0x34], al
mov cl, byte [ebx + 0x35]
mov byte [edi + 0x35], cl
mov edx, dword [ebx + 0x38]
mov dword [edi + 0x38], edx
jmp 0x42a88d
xor edi, edi
mov eax, dword [esp + 0x40]
mov dword [ebp + 0xd0], edi
mov ecx, dword [eax + 0x780]
mov dword [esp + 0x44], ebp
test ecx, ecx
je 0x42a8bd
mov edx, dword [eax + 0x77c]
mov ecx, dword [edx + ecx*4 - 4]
cmp ecx, dword [ebp + 0xa4]
jne 0x42a8bd
dec dword [eax + 0x780]
mov ecx, dword [ebp + 0xa4]
cmp ecx, dword [eax + 0x76c]
jne 0x42a8ec
lea edx, [esp + 0x44]
push edx
add eax, 0x768
call fcn.00422500
mov ecx, dword [esp + 0x4c]
mov dword [ecx], ebp
mov al, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x10
mov eax, dword [eax + 0x768]
mov dword [eax + ecx*4], ebp
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
mov dword [ecx], ebp
pop ebp
mov al, 1
pop ebx
add esp, 0x2c
ret 0x10