Function at 0x423510
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 0x4235b6
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040c7a0
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00440f70
xor ecx, ecx
test eax, eax
js 0x423a29
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0xb2a9b4ae
mov byte [esp + 8], 0x18
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
nop
nop
mov eax, ecx
add al, 0xbb
xor al, byte [esp + ecx + 4]
add al, 0x59
mov byte [esp + ecx + 4], al
inc ecx
cmp ecx, 8
jne 0x423580
cmp byte [esp + 0x47], 0
js 0x4235bd
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405c60
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x42361b
xor ecx, ecx
jmp 0x423a29
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, ebx
or eax, esi
je 0x423613
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040c710
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push esi
mov esi, eax
push ebx
call fcn.00440f70
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x423608
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405c60
add esp, 0xc
push esi
call fcn.0040c720
add esp, 4
jmp 0x42361b
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0x4e46504e
mov word [esp + 8], 0xfd51
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
mov esi, eax
and esi, 8
mov edx, ecx
xor edx, 0x2b
sub edx, esi
xor dl, byte [esp + ecx + 4]
mov bl, 0xdb
sub bl, dl
mov byte [esp + ecx + 4], bl
inc ecx
add eax, 2
cmp ecx, 0xb
jne 0x423640
cmp byte [esp + 0x127], 0
js 0x423685
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405c60
add esp, 0xc
mov bl, 1
jmp 0x4236e2
mov ebx, dword [esp + 0x110]
mov esi, dword [esp + 0x114]
mov eax, ebx
or eax, esi
je 0x4236e0
mov edi, dword [esp + 0x118]
inc edi
push edi
call fcn.0040c710
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push esi
mov esi, eax
push ebx
call fcn.00440f70
test eax, eax
setns bl
js 0x4236d5
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405c60
add esp, 0xc
push esi
call fcn.0040c720
add esp, 4
jmp 0x4236e2
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0x6d6f6a9c
mov dword [esp + 8], 0x72656259
mov byte [esp + 0xc], 0xfc
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
mov esi, eax
and esi, 1
xor esi, 0xb829e481
mov edx, eax
and edx, 0xe
sub edx, esi
mov esi, ecx
and esi, edx
add esi, esi
sub edx, esi
add dl, cl
add dl, 0x85
mov byte [esp + eax + 4], dl
inc eax
cmp eax, 0x10
jne 0x423720
cmp byte [esp + 0x5f], 0
js 0x42376c
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405c60
add esp, 0xc
mov bl, 1
jmp 0x4237c0
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov eax, ebx
or eax, esi
je 0x4237be
mov edi, dword [esp + 0x50]
inc edi
push edi
call fcn.0040c710
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push esi
mov esi, eax
push ebx
call fcn.00440f70
test eax, eax
setns bl
js 0x4237b3
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405c60
add esp, 0xc
push esi
call fcn.0040c720
add esp, 4
jmp 0x4237c0
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0x3b0e3000
mov byte [esp + 8], 0x9c
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
mov eax, 0xffffffff
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x18], eax
mov ebx, ecx
and bl, 8
mov bh, 0x20
sub bh, bl
movzx ebx, bh
add ebx, edx
add ebx, ecx
mov eax, dword [esp + 0x18]
add al, al
or al, 0x48
add al, 2
movzx eax, al
add ebx, eax
mov eax, dword [esp + 0x18]
add bl, 4
xor bl, byte [esp + edx + 4]
add bl, 0x4c
mov byte [esp + edx + 4], bl
inc edx
dec eax
add ecx, 2
cmp edx, 0xc
jne 0x4237f0
cmp byte [esp + 0x77], 0
js 0x42384d
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405c60
add esp, 0xc
mov bl, 1
jmp 0x4238a1
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
mov eax, ebx
or eax, esi
je 0x42389f
mov edi, dword [esp + 0x68]
inc edi
push edi
call fcn.0040c710
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push esi
mov esi, eax
push ebx
call fcn.00440f70
test eax, eax
setns bl
js 0x423894
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405c60
add esp, 0xc
push esi
call fcn.0040c720
add esp, 4
jmp 0x4238a1
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x128]
mov ecx, dword [esp + 0x12c]
mov dword [esp + 4], 0x16eee11d
mov dword [esp + 8], 0xf518ea
mov dword [esp + 0xc], 0x6701f5f5
mov byte [esp + 0x10], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
add bl, 0x6a
xor bl, byte [esp + edx + 4]
add bl, 0xee
mov byte [esp + edx + 4], bl
inc edx
cmp edx, 0xd
jne 0x4238e0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov dword [esp], edi
fstp qword [esp + 8]
call fcn.00405cb0
add esp, 0x10
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0xe4af9aa7
mov dword [esp + 8], 0xe7e5d6d7
mov dword [esp + 0xc], 0x77d3
mov byte [esp + 0x10], 0
xor ecx, ecx
xor esi, esi
nop
nop
nop
movzx edi, byte [esp + esi + 4]
mov ebx, ecx
and ebx, 0x1a
mov edx, esi
xor edx, 0x178c4fbd
add edx, ebx
mov eax, edx
xor eax, edi
lea ebx, [eax + eax]
not ebx
add ebx, eax
and ebx, edx
add ebx, ebx
sub ebx, edx
mov eax, ebx
xor eax, edi
not ebx
and ebx, edi
add ebx, ebx
sub ebx, eax
add bl, 0x4f
mov byte [esp + esi + 4], bl
inc esi
add ecx, 2
cmp esi, 0xd
jne 0x423950
push dword [esp + 0x1c]
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x81]
mov dword [esp + 4], 0xe19a9ba4
mov dword [esp + 8], 0xd9dce2d1
mov dword [esp + 0xc], 0x77ef
or edi, dword [esp + 0x18]
mov ecx, 0xbd
mov edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edx
and esi, 0x39
mov ebx, ecx
and ebx, 0xc6
or ebx, esi
xor bl, byte [esp + ecx - 0xb9]
xor bl, 0x39
add bl, 0x4f
mov byte [esp + ecx - 0xb9], bl
inc ecx
dec edx
cmp ecx, 0xc9
jne 0x4239e0
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
or edi, eax
sete al
mov ecx, dword [esp + 0x14]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret