Function at 0x422f30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x148
cmp byte [ebp + 0x18], 0
je 0x422fd0
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040cf60
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00440420
xor ecx, ecx
test eax, eax
js 0x423472
mov dword [esp], 0xd6c1dcc2
mov byte [esp + 4], 0x70
mov dword [esp + 5], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
add al, 0x15
xor al, byte [esp + ecx]
add al, 0x97
mov byte [esp + ecx], al
inc ecx
cmp ecx, 9
jne 0x422fa0
cmp byte [esp + 0x3f], 0
js 0x422fd7
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov bl, 1
jmp 0x423028
xor ecx, ecx
jmp 0x423472
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x423026
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040cee0
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.00440420
test eax, eax
setns bl
js 0x42301b
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push edi
call fcn.0040cef0
add esp, 4
jmp 0x423028
xor ebx, ebx
mov dword [esp], 0x3226dc0e
mov word [esp + 4], 0xbf23
mov dword [esp + 6], 0
mov word [esp + 0xa], 0
xor eax, eax
nop
nop
nop
nop
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, 0xc
jne 0x423050
cmp byte [esp + 0x11f], 0
js 0x423088
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov al, 1
jmp 0x4230ee
mov esi, dword [esp + 0x108]
mov edi, dword [esp + 0x10c]
mov eax, esi
or eax, edi
je 0x4230ec
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x110]
inc ebx
push ebx
call fcn.0040cee0
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.00440420
test eax, eax
setns al
mov esi, eax
js 0x4230db
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push ebx
call fcn.0040cef0
add esp, 4
mov ebx, dword [esp + 0x10]
mov eax, esi
jmp 0x4230ee
xor eax, eax
and bl, al
mov dword [esp], 0x5d5b566c
mov dword [esp + 4], 0x566d5661
mov byte [esp + 8], 0xcc
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax]
mov ecx, 0xb38b3ce
sub ecx, eax
mov esi, ecx
and esi, 0x808306e
or ecx, 0x6735c791
add ecx, eax
add ecx, 0xf4c74c32
or ecx, esi
xor ecx, edx
mov edx, 1
sub edx, ecx
and edx, 1
lea esi, [edx + edx]
xor esi, 2
and ecx, 0xfe
xor ecx, 0x6e
or ecx, edx
add ecx, esi
add cl, 0xa
mov byte [esp + eax], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xf
jb 0x423120
cmp byte [esp + 0x57], 0
js 0x423196
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov al, 1
jmp 0x4231f3
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov eax, esi
or eax, edi
je 0x4231f1
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x48]
inc ebx
push ebx
call fcn.0040cee0
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.00440420
test eax, eax
setns al
mov esi, eax
js 0x4231e0
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push ebx
call fcn.0040cef0
add esp, 4
mov ebx, dword [esp + 0x10]
mov eax, esi
jmp 0x4231f3
xor eax, eax
and bl, al
mov dword [esp], 0xd99aac9c
mov byte [esp + 4], 0x70
mov dword [esp + 5], 0
mov dword [esp + 8], 0
mov eax, 0x3d
mov ecx, 2
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x3e
mov edx, eax
and edx, 0x41
or edx, esi
xor dl, byte [esp + eax - 0x3d]
xor dl, 0xbe
add dl, 0x4f
mov byte [esp + eax - 0x3d], dl
inc eax
dec ecx
cmp eax, 0x49
jne 0x423220
cmp byte [esp + 0x6f], 0
mov dword [esp + 0x10], ebx
js 0x423267
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x4232c2
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
mov eax, esi
or eax, edi
je 0x4232ba
mov ebx, dword [esp + 0x60]
inc ebx
push ebx
call fcn.0040cee0
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.00440420
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x4232af
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push ebx
call fcn.0040cef0
add esp, 4
jmp 0x4232c2
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
mov dword [esp], 0x4a4eb75b
mov dword [esp + 4], 0x54475442
mov dword [esp + 8], 0x49534343
mov edx, 0x236d35b5
nop
nop
nop
nop
movzx esi, byte [esp + edx - 0x236d35b5]
xor esi, edx
mov edi, esi
and edi, 0x76
mov ebx, esi
xor ebx, 0x76
lea edi, [ebx + edi*2]
and esi, 1
xor edi, 1
mov ebx, esi
not ebx
and ebx, edi
lea ebx, [ebx + esi*2]
mov byte [esp + edx - 0x236d35b5], bl
inc edx
cmp edx, 0x236d35c1
jne 0x4232f0
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.004062f0
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0xc4abc6db
mov dword [esp + 4], 0xcbcddad3
mov word [esp + 8], 0x43df
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov ecx, dword [esp + 0x10]
and cl, byte [esp + 0x14]
mov dword [esp + 0x10], ecx
mov ecx, 0x9a502393
mov edx, 0x6c
nop
movzx esi, byte [esp + ecx + 0x65afdc6d]
mov ebx, edx
xor ebx, ecx
and ebx, esi
xor ebx, ecx
mov esi, ebx
and esi, 1
or ebx, 1
add ebx, esi
add bl, 0x20
mov byte [esp + ecx + 0x65afdc6d], bl
inc ecx
dec edx
cmp ecx, 0x9a5023a2
jne 0x423390
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 0x14], eax
mov dword [esp], 0xd1dadbac
mov dword [esp + 4], 0xd9d4d2a1
mov word [esp + 8], 0x4fd7
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
or esi, edi
mov edi, 0xb2d62011
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi + 0x4d29dfef]
mov edx, ebx
and edx, edi
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0x3d
mul cl
mov ecx, eax
add cl, bl
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, edi
add al, 0xab
mov byte [esp + edi + 0x4d29dfef], al
inc edi
cmp edi, 0xb2d62021
jne 0x423410
push dword [esp + 0x14]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
or esi, eax
sete al
mov ecx, dword [esp + 0x10]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret