Function at 0x423310
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 0x4233b4
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040ce20
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043e630
xor ebx, ebx
test eax, eax
js 0x4237d3
mov dword [esp + 4], 0x4a43584a
mov byte [esp + 8], 0xf4
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
nop
mov eax, ebx
add al, 0x56
xor al, byte [esp + ebx + 4]
add al, 0x52
mov byte [esp + ebx + 4], al
inc ebx
cmp ebx, 0xc
jne 0x423380
cmp byte [esp + 0x3f], 0
js 0x4233bb
lea eax, [esp + 0x28]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
mov bl, 1
jmp 0x42340e
xor ebx, ebx
jmp 0x4237d3
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x42340c
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040cda0
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.0043e630
test eax, eax
setns bl
js 0x423401
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
push edi
call fcn.0040cdb0
add esp, 4
jmp 0x42340e
xor ebx, ebx
mov dword [esp + 4], 0xfaf2e882
mov dword [esp + 8], 0xde9
mov byte [esp + 0xc], 0
mov eax, 0x7c248042
mov ecx, 0x1db7fbd
nop
nop
nop
movzx esi, byte [esp + eax - 0x7c24803e]
mov edi, ecx
and edi, 0x1cb5929
mov edx, eax
and edx, 0x44200016
or edx, edi
xor edx, esi
mov esi, edx
and esi, 0x4b
add esi, esi
xor esi, 0x92
xor edx, 0x22
add edx, esi
add dl, 0x6b
mov byte [esp + eax - 0x7c24803e], dl
inc eax
dec ecx
cmp eax, 0x7c24804b
jne 0x423430
cmp byte [esp + 0x11f], 0
js 0x423497
lea eax, [esp + 0x108]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
mov al, 1
jmp 0x4234fe
mov ecx, dword [esp + 0x108]
mov edi, dword [esp + 0x10c]
mov eax, ecx
or eax, edi
je 0x4234fc
mov esi, dword [esp + 0x110]
inc esi
push esi
mov dword [esp + 0x18], ecx
call fcn.0040cda0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x28]
call fcn.0043e630
test eax, eax
setns al
mov edi, eax
js 0x4234ef
lea eax, [esp + 4]
push esi
push eax
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
push esi
call fcn.0040cdb0
add esp, 4
mov eax, edi
jmp 0x4234fe
xor eax, eax
and bl, al
mov dword [esp + 4], 0xfdfbf6ec
mov dword [esp + 8], 0xf6edf6e1
mov byte [esp + 0xc], 0xc
mov dword [esp + 0xd], 0
mov byte [esp + 0x11], 0
mov eax, 0x41
mov ecx, 0x1e
nop
nop
nop
nop
mov esi, ecx
and esi, 0x12
mov edx, eax
and edx, 0x4d
or edx, esi
xor dl, byte [esp + eax - 0x3d]
xor dl, 0x12
add dl, 0xbb
mov byte [esp + eax - 0x3d], dl
inc eax
dec ecx
cmp eax, 0x4f
jne 0x423530
cmp byte [esp + 0x57], 0
js 0x423571
lea eax, [esp + 0x40]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
mov al, 1
jmp 0x4235cf
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov eax, ecx
or eax, edi
je 0x4235cd
mov esi, dword [esp + 0x48]
inc esi
push esi
mov dword [esp + 0x18], ecx
call fcn.0040cda0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x28]
call fcn.0043e630
test eax, eax
setns al
mov edi, eax
js 0x4235c0
lea eax, [esp + 4]
push esi
push eax
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
push esi
call fcn.0040cdb0
add esp, 4
mov eax, edi
jmp 0x4235cf
xor eax, eax
and bl, al
mov dword [esp + 4], 0x8f9af888
mov byte [esp + 8], 0x14
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0x46
xor cl, byte [esp + eax + 4]
add cl, 0xa2
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xa
jne 0x4235f0
cmp byte [esp + 0x6f], 0
js 0x423626
lea eax, [esp + 0x58]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
mov al, 1
jmp 0x423684
mov ecx, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
mov eax, ecx
or eax, edi
je 0x423682
mov esi, dword [esp + 0x60]
inc esi
push esi
mov dword [esp + 0x18], ecx
call fcn.0040cda0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x28]
call fcn.0043e630
test eax, eax
setns al
mov edi, eax
js 0x423675
lea eax, [esp + 4]
push esi
push eax
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
push esi
call fcn.0040cdb0
add esp, 4
mov eax, edi
jmp 0x423684
xor eax, eax
and bl, al
mov esi, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
mov dword [esp + 4], 0xe6ead3ff
mov dword [esp + 8], 0xfcebe4ee
mov dword [esp + 0xc], 0x51f7e7d7
mov byte [esp + 0x10], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
add al, 0xef
xor al, byte [esp + edx + 4]
add al, 0x55
mov byte [esp + edx + 4], al
inc edx
cmp edx, 0xd
jne 0x4236c0
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea esi, [esp + 0x14]
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00406440
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp + 4], 0xa0b5a2a9
mov dword [esp + 8], 0xdde3ced1
mov word [esp + 0xc], 0x69d5
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
xor ecx, ecx
nop
nop
nop
nop
mov edx, ecx
add dl, 0xbc
xor dl, byte [esp + ecx + 4]
add dl, 0x54
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0x10
jne 0x423730
push eax
push esi
push dword [ebp + 0x14]
call fcn.004064d0
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 4], 0x617a7b64
mov dword [esp + 8], 0x797c6271
mov word [esp + 0xc], 0xd76f
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
or esi, edi
mov ecx, 0x6c732c2d
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x6c732c29]
xor edx, ecx
neg edx
mov edi, edx
and edi, 0x62
add edi, edi
xor edx, 0x1d
sub edx, edi
add dl, 2
mov byte [esp + ecx - 0x6c732c29], dl
inc ecx
cmp ecx, 0x6c732c3d
jne 0x423790
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.004064d0
add esp, 0xc
or esi, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret