Function at 0x423ee0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
cmp byte [ebp + 0x18], 0
je 0x423f84
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040cde0
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00440550
xor ecx, ecx
test eax, eax
js 0x42443e
mov dword [esp], 0xe6efe0ee
mov byte [esp + 4], 4
mov dword [esp + 5], 0
mov byte [esp + 9], 0
nop
nop
nop
nop
nop
mov eax, ecx
add al, 0x40
xor al, byte [esp + ecx]
add al, 0xc0
mov byte [esp + ecx], al
inc ecx
cmp ecx, 0xa
jne 0x423f50
cmp byte [esp + 0x47], 0
js 0x423f8b
lea eax, [esp + 0x30]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423fe6
xor ecx, ecx
jmp 0x42443e
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov eax, esi
or eax, ebx
je 0x423fde
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040cd60
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.00440550
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x423fd3
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
push edi
call fcn.0040cd70
add esp, 4
jmp 0x423fe6
mov dword [esp + 0x10], 0
mov dword [esp], 0x6023c0a
mov word [esp + 4], 0x9337
mov dword [esp + 6], 0
mov eax, 0x25
mov ecx, 0xda
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x25]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x47
mov byte [esp + eax - 0x25], dl
inc eax
dec ecx
cmp eax, 0x2f
jne 0x424010
cmp byte [esp + 0x127], 0
js 0x42404f
lea eax, [esp + 0x110]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
mov bl, 1
jmp 0x4240a9
mov esi, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov eax, esi
or eax, ebx
je 0x4240a7
mov edi, dword [esp + 0x118]
inc edi
push edi
call fcn.0040cd60
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.00440550
test eax, eax
setns bl
js 0x42409c
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
push edi
call fcn.0040cd70
add esp, 4
jmp 0x4240a9
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0xfbf9faf0
mov dword [esp + 4], 0x8ae7f2ef
mov dword [esp + 8], 0
mov dword [esp + 0xb], 0
mov eax, 0x42
mov ecx, 0xbd
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x42]
mov esi, eax
or esi, edx
not edx
or edx, ecx
and edx, esi
add dl, 0xb6
mov byte [esp + eax - 0x42], dl
inc eax
dec ecx
cmp eax, 0x51
jne 0x4240e0
cmp byte [esp + 0x5f], 0
js 0x42411b
lea eax, [esp + 0x48]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
mov bl, 1
jmp 0x42416c
mov esi, dword [esp + 0x48]
mov ebx, dword [esp + 0x4c]
mov eax, esi
or eax, ebx
je 0x42416a
mov edi, dword [esp + 0x50]
inc edi
push edi
call fcn.0040cd60
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.00440550
test eax, eax
setns bl
js 0x42415f
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
push edi
call fcn.0040cd70
add esp, 4
jmp 0x42416c
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x819e8c94
mov byte [esp + 4], 0x28
mov dword [esp + 5], 0
mov dword [esp + 8], 0
xor edx, edx
mov ecx, 0x8cfe0000
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x14], ecx
mov eax, edx
and eax, 0xfffffff8
add ecx, eax
mov esi, edx
and esi, 7
sub ecx, esi
mov dword [esp + 0x18], ecx
sub esi, eax
movzx edi, byte [esp + edx]
mov dword [esp + 0x1c], edi
mov eax, edx
xor eax, 0xb425b347
lea ecx, [edx + eax]
add ecx, esi
and ecx, edi
mov edi, ecx
and edi, 0xfffffffd
mov ebx, ecx
and ebx, 2
or ecx, 2
imul ecx, ebx
xor ebx, 2
imul ebx, edi
lea edi, [ecx + ebx]
sub edi, eax
add edi, dword [esp + 0x18]
sub eax, ebx
sub eax, ecx
add eax, edx
add eax, esi
dec eax
mov ecx, dword [esp + 0x1c]
and eax, ecx
not ecx
and ecx, edi
sub eax, ecx
mov ecx, dword [esp + 0x14]
add al, 0x9d
mov byte [esp + edx], al
inc edx
dec ecx
cmp edx, 0xc
jne 0x4241a0
cmp byte [esp + 0x77], 0
js 0x424230
lea eax, [esp + 0x60]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
mov bl, 1
jmp 0x424281
mov esi, dword [esp + 0x60]
mov ebx, dword [esp + 0x64]
mov eax, esi
or eax, ebx
je 0x42427f
mov edi, dword [esp + 0x68]
inc edi
push edi
call fcn.0040cd60
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.00440550
test eax, eax
setns bl
js 0x424274
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061c0
add esp, 0xc
push edi
call fcn.0040cd70
add esp, 4
jmp 0x424281
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x128]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x12c]
mov dword [esp], 0xaeaaa397
mov dword [esp + 4], 0x84bb8ca6
mov dword [esp + 8], 0x218fbfbf
mov word [esp + 0xc], 0
mov edx, esp
mov esi, 0x230afb34
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edx]
mov edi, esi
or edi, ebx
lea eax, [esi - 0x230afb00]
and eax, ebx
not edi
or edi, eax
mov eax, edi
and eax, 8
xor edi, 8
lea eax, [edi + eax*2]
inc al
mov byte [edx], al
inc edx
dec esi
cmp esi, 0x230afb26
jne 0x4242d0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
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.00406210
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x80]
mov dword [esp], 0x445f4a47
mov dword [esp + 4], 0x47455657
mov dword [esp + 8], 0xf753
mov byte [esp + 0xc], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi]
mov ecx, edi
and ecx, 0xb
xor ecx, 0x2d72982b
mov edx, edi
and edx, 4
sub edx, ecx
mov ecx, edx
not ecx
and ecx, 0x2c
mov esi, edx
xor esi, 0xac
or edx, 0x53
and edx, esi
or edx, ecx
xor edx, ebx
xor edx, 0xac
add dl, 0xd7
mov byte [esp + edi], dl
inc edi
cmp edi, 0xd
jne 0x424360
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
or eax, dword [esp + 0x14]
sete cl
movzx eax, byte [esp + 0x81]
mov dword [esp], 0x696e6f7c
mov dword [esp + 4], 0x616c6e79
mov word [esp + 8], 0xd353
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
mov edx, dword [esp + 0x10]
and dl, cl
mov edi, edx
mov ecx, 0xaf
mov edx, 0x50
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0xaf]
mov ebx, edx
xor ebx, ecx
and ebx, esi
xor ebx, ecx
add bl, 0x95
mov byte [esp + ecx - 0xaf], bl
inc ecx
dec edx
cmp ecx, 0xbf
jne 0x424400
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
test eax, eax
sete al
mov ecx, edi
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret