Function at 0x42077b
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov ebp, dword [esp + 0xac]
mov ebx, dword [esp + 0xa8]
mov ecx, dword [ebp + 4]
mov eax, 0xfffffffe
cmp word [ecx + eax + 2], 0
lea eax, [eax + 2]
jne 0x4204c0
mov ecx, 0xfffffffe
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4204d0
sar eax, 1
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x3f
test edx, edx
jns 0x4204f0
mov eax, 0xffffffff
jmp 0x4204f9
add eax, ecx
lea eax, [eax*2 + 0x7e]
push eax
call fcn.004097b0
add esp, 4
mov esi, eax
mov dword [esp + 0x50], 0x51f94f12
mov dword [esp + 0x54], 0x55f553e5
mov dword [esp + 0x58], 0x591357e6
mov dword [esp + 0x5c], 0x5df45be9
mov dword [esp + 0x60], 0xa1f95fe8
mov dword [esp + 0x64], 0xa516a318
mov dword [esp + 0x68], 0xa902a7ef
mov dword [esp + 0x6c], 0xaddeabd7
mov dword [esp + 0x70], 0xb1d5afde
mov dword [esp + 0x74], 0xb5c9b3c4
mov dword [esp + 0x78], 0xb9cfb7c2
mov dword [esp + 0x7c], 0xbdc1bbca
mov dword [esp + 0x80], 0x81e2bfcb
mov dword [esp + 0x84], 0x8526832b
mov dword [esp + 0x88], 0x89868726
mov word [esp + 0x8c], 0
mov eax, 0xed
mov ecx, 0x12
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x9d]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
add dl, 0x5f
mov byte [esp + eax - 0x9d], dl
inc eax
dec ecx
cmp eax, 0x12b
jne 0x4205a0
mov dword [esp + 4], 0xc15bc760
mov dword [esp + 8], 0xcd53c35c
mov dword [esp + 0xc], 0xc96dcf5e
mov dword [esp + 0x10], 0xb565cb61
mov dword [esp + 0x14], 0xb11ab710
mov dword [esp + 0x18], 0xbd1cb31f
mov dword [esp + 0x1c], 0xb921bf1f
mov dword [esp + 0x20], 0xa526bb2c
mov dword [esp + 0x24], 0xa131a700
mov dword [esp + 0x28], 0xad38a331
mov dword [esp + 0x2c], 0xa901af7b
mov dword [esp + 0x30], 0x9536ab30
mov dword [esp + 0x34], 0x9100973b
mov dword [esp + 0x38], 0x9d39930d
mov dword [esp + 0x3c], 0x99089f0d
mov dword [esp + 0x40], 0x854f9b4d
mov dword [esp + 0x44], 0x81868751
mov dword [esp + 0x48], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x31
xor cl, byte [esp + eax + 4]
add cl, 0xb
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0x48
jne 0x420660
mov ecx, dword [ebp + 4]
movzx edx, word [ecx]
mov eax, esi
test dx, dx
je 0x4206a1
add ecx, 2
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x420690
mov word [eax], 0
movzx ecx, word [esp + 4]
test cx, cx
je 0x4206d1
lea edx, [esp + 6]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4206c0
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x420701
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x4206f0
mov word [eax], 0
movzx ecx, word [esp + 0x50]
test cx, cx
je 0x420731
lea edx, [esp + 0x52]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x420720
mov word [eax], 0
mov eax, dword [esp + 0xb0]
mov ebx, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x420750
mov edx, dword [ebp]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x420770
mov edi, dword [ebp + 8]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x420790
mov dword [esp], esi
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0xb
mov esi, ebp
test eax, eax
jns 0x4207b9
mov eax, 0xffffffff
jmp 0x4207c2
add ecx, edx
lea eax, [ecx*2 + 0x16]
push eax
call fcn.004097b0
add esp, 4
mov dword [esp + 4], 0xf313f11f
mov dword [esp + 8], 0xef7aed78
mov dword [esp + 0xc], 0xeb66e975
mov dword [esp + 0x10], 0xe731e577
mov word [esp + 0x14], 0xe1e0
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
mov edi, 0x2c
mov ecx, 0xd3
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edi - 0x28]
mov edx, ecx
xor edx, edi
and edx, ebp
xor edx, edi
add dl, 0x24
mov byte [esp + edi - 0x28], dl
inc edi
dec ecx
cmp edi, 0x44
jne 0x420810
movzx ecx, word [esp + 4]
mov edi, eax
test cx, cx
je 0x420851
lea edx, [esp + 6]
mov edi, eax
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x420840
mov word [edi], 0
movzx ecx, word [ebx]
test cx, cx
je 0x420881
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x420870
mov word [edi], 0x5f
add edi, 2
mov ecx, dword [esi]
movzx edx, word [ecx]
test dx, dx
je 0x4208b1
add ecx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], dx
add edi, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4208a0
mov dword [esp + 0x4c], eax
mov word [edi], 0x5f
add edi, 2
mov ecx, dword [esi + 8]
movzx edx, word [ecx]
test dx, dx
je 0x4208e3
add ecx, 2
mov esi, dword [esp]
nop
nop
mov word [edi], dx
add edi, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4208d0
jmp 0x4208e6
mov esi, dword [esp]
mov word [edi], 0
mov dword [esp + 4], 0x7372719a
mov word [esp + 8], 0
mov edx, 0xcaa07b95
mov ebp, 0x355f846b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx + 0x355f846f]
mov ebx, edi
or ebx, ebp
add ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, edi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x1b
mov byte [esp + edx + 0x355f846f], al
inc edx
dec ebp
cmp edx, 0xcaa07b9b
jne 0x420910
lea eax, [esp + 4]
push 0
push 1
push 0
push eax
push esi
mov edi, dword [esp + 0x60]
push edi
push dword [esp + 0xbc]
call fcn.00420c20
add esp, 0x1c
mov ebx, eax
jmp dword [0x447310]