Function at 0x422ce0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x160
movzx ebx, byte [ebp + 0x18]
mov ecx, dword [ebp + 8]
xor eax, eax
test bl, bl
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x34]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.00440440
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x4231de
mov dword [esp], 0x82998c96
mov byte [esp + 4], 0x28
mov dword [esp + 5], 0
mov byte [esp + 9], 0
nop
nop
mov ecx, eax
add cl, 0x87
xor cl, byte [esp + eax]
add cl, 0x5d
mov byte [esp + eax], cl
inc eax
cmp eax, 0xa
jne 0x422d40
cmp byte [esp + 0x53], 0
js 0x422d76
lea eax, [esp + 0x3c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x422dd5
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, esi
or eax, ebx
je 0x422dc9
mov edi, dword [esp + 0x44]
inc edi
push edi
call fcn.0040c820
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00440440
test eax, eax
setns al
mov dword [esp + 0x20], eax
js 0x422dbe
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c830
add esp, 4
jmp 0x422dd1
mov dword [esp + 0x20], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x18], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x1ee6f01e
mov dword [esp + 4], 0xadd1
mov byte [esp + 8], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx]
mov ebx, ecx
and ebx, 0x18
mov esi, edx
xor esi, 0xb001419c
add esi, ebx
mov ebx, esi
and ebx, edi
add esi, edi
add ebx, ebx
sub esi, ebx
add esi, 0x8ff9b7f3
mov edi, esi
and edi, 1
xor esi, 1
lea ebx, [esi + edi*2]
mov byte [esp + edx], bl
inc edx
add ecx, 2
cmp edx, 9
jne 0x422e00
lea ecx, [esp + eax]
add ecx, 0x34
cmp byte [esp + eax + 0x4b], 0
js 0x422e5e
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov al, 1
mov dword [esp + 0x1c], eax
jmp 0x422eb5
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x422ead
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c820
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00440440
test eax, eax
setns al
mov dword [esp + 0x1c], eax
js 0x422ea2
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c830
add esp, 4
jmp 0x422eb5
mov dword [esp + 0x1c], 0
mov dword [esp], 0x2d2f2a1c
mov dword [esp + 4], 0x322522d9
mov byte [esp + 8], 0xbc
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x9f
xor cl, byte [esp + eax]
add cl, 0xe5
mov byte [esp + eax], cl
inc eax
cmp eax, 0x10
jne 0x422ee0
cmp byte [esp + 0x6b], 0
js 0x422f16
lea eax, [esp + 0x54]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x422f71
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
mov eax, ebx
or eax, esi
je 0x422f69
mov edi, dword [esp + 0x5c]
inc edi
push edi
call fcn.0040c820
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00440440
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x422f5e
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c830
add esp, 4
jmp 0x422f71
mov dword [esp + 0x14], 0
mov dword [esp], 0x1166146c
mov byte [esp + 4], 0xf8
mov word [esp + 5], 0
mov byte [esp + 7], 0
mov edx, 0xfe89bd2b
nop
nop
movzx eax, byte [esp + edx + 0x17642d5]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0x3d
mul cl
mov ecx, eax
mov eax, esi
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, 0x29
mov byte [esp + edx + 0x17642d5], al
inc edx
cmp edx, 0xfe89bd33
jne 0x422f90
cmp byte [esp + 0x83], 0
js 0x422ffc
lea eax, [esp + 0x6c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423057
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x70]
mov eax, ebx
or eax, esi
je 0x42304f
mov edi, dword [esp + 0x74]
inc edi
push edi
call fcn.0040c820
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00440440
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x423044
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c830
add esp, 4
jmp 0x423057
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + eax*8 + 0x134]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + eax*8 + 0x138]
mov dword [esp], 0x61a130f
mov dword [esp + 4], 0xc1b041e
mov dword [esp + 8], 0xf1170717
mov edx, 0x141a5927
mov eax, 0xabe5a6d8
nop
nop
movzx edi, byte [esp + edx - 0x141a5927]
mov esi, eax
and esi, 0x8b858251
mov ebx, edx
and ebx, 0x101a080e
or ebx, esi
xor ebx, edi
xor ebx, 0xcf85d371
mov esi, 1
sub esi, ebx
not esi
and esi, 1
or ebx, 1
add ebx, esi
add bl, 0x3c
mov byte [esp + edx - 0x141a5927], bl
inc edx
dec eax
cmp edx, 0x141a5933
jne 0x423090
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
fild qword [esp + 0x28]
sub esp, 0x10
lea esi, [esp + 0x10]
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405e00
add esp, 0x10
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x8c]
mov dword [esp], 0xd0bdd2a9
mov dword [esp + 4], 0xd5d3a6a1
mov dword [esp + 8], 0x49ad
mov byte [esp + 0xc], 0
xor ecx, ecx
mov edx, 0x6f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
and edi, 0x68
mov ebx, ecx
and ebx, 7
or ebx, edi
xor bl, byte [esp + ecx]
xor bl, 0xf8
add bl, 0x30
mov byte [esp + ecx], bl
inc ecx
dec edx
cmp ecx, 0xd
jne 0x423140
push eax
push esi
push dword [ebp + 0x14]
call fcn.00405e90
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x8d]
mov dword [esp], 0x515a5bac
mov dword [esp + 4], 0x595452a1
mov dword [esp + 8], 0xcf57
mov byte [esp + 0xc], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x51
xor dl, byte [esp + ecx]
add dl, 0x6b
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xd
jne 0x4231a0
push eax
push esi
push dword [ebp + 0x14]
call fcn.00405e90
add esp, 0xc
mov ecx, dword [esp + 0x20]
and cl, byte [esp + 0x1c]
mov edx, dword [esp + 0x14]
and dl, byte [esp + 0x10]
and dl, cl
or edi, dword [esp + 0x18]
or edi, eax
sete al
and al, dl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret