Function at 0x4226a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
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 + 0x2c]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043ea60
test eax, eax
js 0x42278f
mov dword [esp], 0xaa53a85a
mov byte [esp + 4], 0xcc
mov word [esp + 5], 0
mov byte [esp + 7], 0
mov eax, 0x186f1a52
mov ecx, 0x6790e5ad
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x186f1a52]
mov edi, ecx
and edi, 0x6200a082
mov edx, eax
and edx, 0x1003120d
or edx, edi
lea edi, [eax - 0x186f1a00]
and edi, esi
xor edx, esi
mov esi, edi
not esi
xor edx, 0xea6ca8d2
or edx, edi
lea esi, [edi + esi*2]
inc esi
and esi, edx
mov edx, esi
and edx, 0x65
xor esi, 0x5d47c65
lea edx, [esi + edx*2]
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + eax - 0x186f1a52], dl
inc eax
dec ecx
cmp eax, 0x186f1a5a
jne 0x422710
cmp byte [esp + 0x4b], 0
js 0x422796
lea eax, [esp + 0x34]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x4227f5
xor ebx, ebx
jmp 0x422c35
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
mov eax, esi
or eax, ebx
je 0x4227e9
mov edi, dword [esp + 0x3c]
inc edi
push edi
call fcn.0040c8b0
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.0043ea60
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x4227de
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
push edi
call fcn.0040c8c0
add esp, 4
jmp 0x4227f1
mov dword [esp + 0x14], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x10], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x7a425872
mov word [esp + 4], 0xf549
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
mov ecx, 0x56
mov edx, 0xd7427629
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x56]
lea ebx, [edx + 0x28bd8a00]
and ebx, 0x30
mov edi, ecx
and edi, 0x4f
or edi, ebx
mov ebx, edx
or ebx, esi
xor edi, 0x4f
and edi, esi
not ebx
or ebx, edi
mov esi, ebx
xor esi, 0xcbb3b12f
and ebx, 0x344c4ed0
add ebx, ebx
sub ebx, esi
mov esi, ebx
not esi
and esi, 0x21
and ebx, 0xde
sub ebx, esi
add bl, 0x22
mov byte [esp + ecx - 0x56], bl
inc ecx
dec edx
cmp ecx, 0x61
jne 0x422830
lea ecx, [esp + eax]
add ecx, 0x2c
cmp byte [esp + eax + 0x43], 0
js 0x4228a7
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
mov dword [esp + 0x1c], 1
jmp 0x422902
mov esi, dword [ecx]
mov edi, dword [ecx + 4]
mov eax, esi
or eax, edi
je 0x4228fa
mov ebx, dword [ecx + 8]
inc ebx
push ebx
call fcn.0040c8b0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, eax
push eax
push edi
push esi
call fcn.0043ea60
mov esi, eax
test eax, eax
js 0x4228e6
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
push ebx
call fcn.0040c8c0
add esp, 4
not esi
shr esi, 0x1f
mov dword [esp + 0x1c], esi
jmp 0x422902
mov dword [esp + 0x1c], 0
mov dword [esp], 0x3d3b362c
mov dword [esp + 4], 0x362d3621
mov byte [esp + 8], 0x8c
mov dword [esp + 9], 0
mov eax, 0x78487581
mov ecx, 0xf090eb02
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x78487581]
mov edi, ecx
and edi, 0xd0806802
mov esi, eax
xor esi, 0x6946b421
add esi, edi
mov ebx, 0x80
sub ebx, esi
add esi, 0x7f
xor ebx, esi
and ebx, edx
xor ebx, esi
add bl, 0x5b
mov byte [esp + eax - 0x78487581], bl
inc eax
add ecx, 2
cmp eax, 0x7848758e
jne 0x422930
cmp byte [esp + 0x63], 0
js 0x422991
lea eax, [esp + 0x4c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x4229ec
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
mov eax, esi
or eax, edi
je 0x4229e4
mov ebx, dword [esp + 0x54]
inc ebx
push ebx
call fcn.0040c8b0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, eax
push eax
push edi
push esi
call fcn.0043ea60
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x4229d9
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
push ebx
call fcn.0040c8c0
add esp, 4
jmp 0x4229ec
mov dword [esp + 0x18], 0
mov dword [esp], 0x90a3c0c
mov byte [esp + 4], 0x90
mov dword [esp + 5], 0
mov word [esp + 9], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx]
mov esi, ecx
xor esi, 0x89411d0a
mov edi, eax
and edi, 0xa
sub edi, esi
lea esi, [edi - 0x45158fd1]
and esi, edx
add edx, edi
add edx, 0xbaea702f
add esi, esi
sub edx, esi
add dl, 0x47
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 0xb
jne 0x422a10
cmp byte [esp + 0x7b], 0
js 0x422a67
lea eax, [esp + 0x64]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
mov esi, 1
jmp 0x422abc
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x68]
mov eax, esi
or eax, edi
je 0x422aba
mov ebx, dword [esp + 0x6c]
inc ebx
push ebx
call fcn.0040c8b0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, eax
push eax
push edi
push esi
call fcn.0043ea60
mov esi, eax
test eax, eax
js 0x422aaa
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00405d60
add esp, 0xc
push ebx
call fcn.0040c8c0
add esp, 4
not esi
shr esi, 0x1f
jmp 0x422abc
xor esi, esi
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + ecx*8 + 0x12c]
mov ecx, dword [esp + ecx*8 + 0x130]
mov dword [esp], 0x3a02093d
mov dword [esp + 4], 0x380d300e
mov dword [esp + 8], 0x9b390505
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
add bl, 0xa4
xor bl, byte [esp + edx]
add bl, 0xcc
mov byte [esp + edx], bl
inc edx
cmp edx, 0xc
jne 0x422af0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
sub esp, 0x10
lea edi, [esp + 0x10]
mov dword [esp + 4], edi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405db0
add esp, 0x10
movzx edx, byte [esp + 0x14]
and edx, dword [esp + 0x1c]
and dl, byte [esp + 0x18]
movzx ecx, byte [esp + 0x84]
mov dword [esp + 0x10], ecx
movzx edx, dl
not edx
or esi, edx
cmp esi, edx
setne bl
test eax, eax
setne al
xor al, bl
mov byte [esp + 0x14], al
mov dword [esp], 0x246f1a67
mov dword [esp + 4], 0x27255657
mov word [esp + 8], 0xb753
mov dword [esp + 0xa], 0
mov eax, 0x22
movzx ecx, byte [edi]
lea ebx, [eax - 0x3b671700]
or ebx, ecx
and ecx, eax
not ebx
or ebx, ecx
mov ecx, ebx
and ecx, 0x2e
xor ebx, 0xae
lea ecx, [ebx + ecx*2]
inc cl
mov byte [edi], cl
inc edi
dec eax
cmp eax, 0x14
jne 0x422b80
cmp esi, edx
setne bl
mov eax, esp
push dword [esp + 0x10]
push eax
push dword [ebp + 0x14]
call fcn.00405e40
add esp, 0xc
mov dword [esp + 0x10], eax
movzx eax, byte [esp + 0x85]
mov dword [esp], 0xefeaed10
mov dword [esp + 4], 0xff0ee1f
mov word [esp + 8], 0x61f9
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
and bl, byte [esp + 0x14]
mov ecx, 0x6a
mov edi, 0x95
movzx esi, byte [esp + ecx - 0x6a]
mov edx, edi
xor edx, ecx
and edx, esi
xor edx, ecx
add dl, 0xee
mov byte [esp + ecx - 0x6a], dl
inc ecx
dec edi
cmp ecx, 0x7a
jne 0x422c00
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405e40
add esp, 0xc
or eax, dword [esp + 0x10]
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret