Function at 0x423b70
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 0x423c0e
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040c790
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.004403f0
xor ecx, ecx
test eax, eax
js 0x4240cf
mov dword [esp + 8], 0x666f606e
mov byte [esp + 0xc], 4
mov dword [esp + 0xd], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
xor byte [esp + ecx + 8], cl
inc ecx
cmp ecx, 9
jne 0x423be0
cmp byte [esp + 0x3f], 0
js 0x423c15
lea eax, [esp + 0x28]
lea ecx, [esp + 8]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
mov al, 1
mov dword [esp + 4], eax
jmp 0x423c72
xor ecx, ecx
jmp 0x4240cf
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x423c6a
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040c700
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.004403f0
test eax, eax
setns bl
js 0x423c5b
lea eax, [esp + 8]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
mov dword [esp + 4], ebx
push edi
call fcn.0040c710
add esp, 4
jmp 0x423c72
mov dword [esp + 4], 0
mov dword [esp + 8], 0xfef2e4fa
mov dword [esp + 0xc], 0x3ef
mov byte [esp + 0x10], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 8]
mov esi, eax
and esi, 2
mov edi, ecx
xor edi, 0x26843ac1
add edi, esi
mov esi, edx
mov ebx, edx
xor ebx, 0x1003096e
or edx, 0x91
and edx, ebx
and esi, 0x6e
xor esi, 0x1003096e
or edx, esi
mov esi, edi
not esi
or esi, 0xeffcf691
lea ebx, [esi + edi]
inc ebx
and edi, 0xe
xor edi, 0x1003012e
or ebx, edi
mov esi, edx
and esi, ebx
add esi, esi
sub ebx, esi
add ebx, edx
mov edx, ebx
and edx, 1
or ebx, 1
add ebx, edx
add bl, 0x3a
mov byte [esp + ecx + 8], bl
inc ecx
add eax, 2
cmp ecx, 9
jne 0x423c90
cmp byte [esp + 0x11f], 0
js 0x423d28
lea eax, [esp + 0x108]
lea ecx, [esp + 8]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
mov al, 1
mov ebx, dword [esp + 4]
jmp 0x423d8c
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x423e5d
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040c700
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.004403f0
test eax, eax
setns al
mov esi, eax
js 0x423d7d
lea eax, [esp + 8]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
push edi
call fcn.0040c710
add esp, 4
mov ebx, dword [esp + 4]
mov eax, esi
and bl, al
mov dword [esp + 8], 0x6b696a70
mov dword [esp + 0xc], 0x5a47727f
mov byte [esp + 0x10], 0xa0
mov word [esp + 0x11], 0
mov byte [esp + 0x13], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0x14
mov edx, ecx
xor edx, 0x5a
add edx, esi
xor dl, byte [esp + ecx + 8]
add dl, 0x3e
mov byte [esp + ecx + 8], dl
inc ecx
add eax, 2
cmp ecx, 0xc
jne 0x423dc0
cmp byte [esp + 0x57], 0
js 0x423e00
lea eax, [esp + 0x40]
lea ecx, [esp + 8]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
mov al, 1
jmp 0x423e6a
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x423e64
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040c700
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.004403f0
test eax, eax
setns al
mov esi, eax
js 0x423e4c
lea eax, [esp + 8]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
push edi
call fcn.0040c710
add esp, 4
mov ebx, dword [esp + 4]
mov eax, esi
jmp 0x423e6a
xor eax, eax
jmp 0x423d22
xor eax, eax
mov ebx, dword [esp + 4]
and bl, al
mov dword [esp + 8], 0xc9cadccc
mov byte [esp + 0xc], 0x30
mov dword [esp + 0xd], 0
mov byte [esp + 0x11], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 8]
mov edi, eax
and edi, 0xa
mov edx, ecx
xor edx, 0x1259d375
add edx, edi
xor edx, esi
lea esi, [edx + edx]
and esi, 0x31a56c
xor edx, 0x5bc12149
sub edx, esi
lea esi, [edx*2 + 2]
inc edx
sub edx, esi
inc dl
mov byte [esp + ecx + 8], dl
inc ecx
add eax, 2
cmp ecx, 0xa
jne 0x423e90
cmp byte [esp + 0x6f], 0
js 0x423ef0
lea eax, [esp + 0x58]
lea ecx, [esp + 8]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
mov al, 1
jmp 0x423f53
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x423f4d
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040c700
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.004403f0
test eax, eax
setns al
mov esi, eax
js 0x423f3c
lea eax, [esp + 8]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dc0
add esp, 0xc
push edi
call fcn.0040c710
add esp, 4
mov ebx, dword [esp + 4]
mov eax, esi
jmp 0x423f53
xor eax, eax
mov ebx, dword [esp + 4]
and bl, al
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
mov dword [esp + 8], 0x7a726945
mov dword [esp + 0xc], 0x48754076
mov dword [esp + 0x10], 0xdb794d4d
mov byte [esp + 0x14], 0
mov edx, 0xd8
mov esi, 0x27
nop
nop
mov edi, esi
and edi, 0x3a
mov ebx, edx
and ebx, 0xc5
or ebx, edi
xor bl, byte [esp + edx - 0xd0]
xor bl, 0x3a
add bl, 0xc8
mov byte [esp + edx - 0xd0], bl
inc edx
dec esi
cmp edx, 0xe5
jne 0x423f90
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea ebx, [esp + 0x18]
mov dword [esp + 4], ebx
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405e10
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp + 8], 0x382d3e31
mov dword [esp + 0xc], 0x35372a29
mov word [esp + 0x10], 0x8125
mov dword [esp + 0x12], 0
mov byte [esp + 0x16], 0
mov ecx, 0x26f4aa22
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x26f4aa1a]
xor edi, ecx
mov edx, edi
xor edx, 0xaa
or edi, 0x55
and edx, edi
add edx, edi
inc dl
mov byte [esp + ecx - 0x26f4aa1a], dl
inc ecx
cmp ecx, 0x26f4aa31
jne 0x424020
push eax
push ebx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 8], 0x717a7b6c
mov dword [esp + 0xc], 0x79747261
mov word [esp + 0x10], 0xf77
mov dword [esp + 0x12], 0
mov byte [esp + 0x16], 0
or edi, esi
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 2
mov ebx, edx
xor ebx, 0x81
add ebx, esi
xor bl, byte [esp + edx + 8]
add bl, 0x7b
mov byte [esp + edx + 8], bl
inc edx
add ecx, 2
cmp edx, 0xf
jne 0x424090
push eax
lea eax, [esp + 0xc]
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
or edi, eax
sete al
mov ecx, dword [esp + 4]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret