Function at 0x424c90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x458
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x54], 0x57aa49b7
mov dword [esp + 0x58], 0x53b355b9
mov dword [esp + 0x5c], 0x5f6c51a5
mov dword [esp + 0x60], 0x5ba25db1
mov dword [esp + 0x64], 0x676659b5
mov byte [esp + 0x68], 0
xor eax, eax
nop
nop
mov ecx, eax
add cl, 0x8e
xor cl, byte [esp + eax + 0x54]
add cl, 0x3a
mov byte [esp + eax + 0x54], cl
inc eax
cmp eax, 0x15
jne case.default.0x424d19
lea eax, [esp + 0x54]
lea ecx, [esp + 0x34]
push eax
call fcn.00438330
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x446c24]
lea ecx, [esp + 0x34]
push 0x410
call fcn.00438580
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x446c2c]
jmp dword [0x446c34]
mov dword [esp + 0x54], 0x36cf002d
mov dword [esp + 0x58], 0x83ed528
mov dword [esp + 0x5c], 0x3c353fd9
mov dword [esp + 0x60], 0x332a3add
mov dword [esp + 0x64], 0x28c7de32
mov dword [esp + 0x68], 0x2bccdac5
mov dword [esp + 0x6c], 0x2e31ca36
mov dword [esp + 0x70], 0x52ab2cc7
mov dword [esp + 0x74], 0xaab842be
mov dword [esp + 0x78], 0x5aa79db9
mov dword [esp + 0x7c], 0xe796b9b9
mov dword [esp + 0x80], 0
mov eax, 0x22
mov ecx, 0xdd
nop
movzx esi, byte [esp + eax + 0x32]
lea edx, [ecx - 0x80]
mov edi, eax
and edi, 0x31
and edx, 0x4e
or edx, edi
mov ebx, ecx
or ebx, esi
xor edx, 0xb1
and edx, esi
not ebx
or ebx, edx
add bl, 0x56
mov byte [esp + eax + 0x32], bl
inc eax
dec ecx
cmp eax, 0x52
jne 0x424db0
lea eax, [esp + 0x48]
lea ecx, [esp + 0x34]
push 0
push 0x2b
lea edx, [esp + 0x5c]
push edx
push eax
call fcn.00439140
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x54], 0x36cf002d
mov dword [esp + 0x58], 0x83ed528
mov dword [esp + 0x5c], 0x3c353fd9
mov dword [esp + 0x60], 0x332a3add
mov dword [esp + 0x64], 0x28c7de32
mov dword [esp + 0x68], 0x2bccdac5
mov dword [esp + 0x6c], 0x2e31ca36
mov dword [esp + 0x70], 0x52ab2cc7
mov dword [esp + 0x74], 0xaab842be
mov dword [esp + 0x78], 0x5aa79db9
mov dword [esp + 0x7c], 0xe796b9b9
mov dword [esp + 0x80], 0
mov eax, 0x22
mov ecx, 0xdd
nop
nop
nop
movzx esi, byte [esp + eax + 0x32]
lea edx, [ecx - 0x80]
mov edi, eax
and edi, 0x31
and edx, 0x4e
or edx, edi
mov ebx, ecx
or ebx, esi
xor edx, 0xb1
and edx, esi
not ebx
or ebx, edx
add bl, 0x56
mov byte [esp + eax + 0x32], bl
inc eax
dec ecx
cmp eax, 0x52
jne 0x424e70
lea eax, [esp + 0x48]
lea ecx, [esp + 0x34]
push 0
push 0x2b
lea edx, [esp + 0x5c]
push edx
push eax
call fcn.00439140
jmp dword [0x446c3c]
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
xor eax, eax
cmp edi, esi
sete al
mov dword [esp + 8], esi
jmp dword [eax*4 + 0x446c44]
mov eax, esi
sub eax, edi
sar eax, 3
imul eax, eax, 0x421
push eax
call fcn.0040cc80
add esp, 4
mov dword [esp + 0x30], 0
xor ecx, ecx
cmp edi, esi
setne cl
mov dword [esp + 0x2c], eax
mov dword [esp + 4], eax
jmp dword [ecx*4 + 0x446c4c]
jmp dword [0x446c60]
mov ebx, dword [esp + 0x30]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x446c64]
jmp dword [0x446cd4]
add edi, 8
xor eax, eax
mov esi, dword [esp + 8]
cmp edi, esi
setne al
jmp dword [eax*4 + 0x446c4c]
mov esi, dword [edi]
mov dword [esp + 0x20], edi
mov edi, dword [edi + 4]
push 0x400
push 0
lea ebx, [esp + 0x5c]
push ebx
call fcn.0040ce10
add esp, 0xc
lea eax, [esp + 0x10]
lea ecx, [esp + 0x34]
push eax
push 0
push 0x400
push ebx
push edi
push esi
call fcn.00438fc0
cmp eax, 0xc0000000
setae al
mov ecx, dword [esp + 0x10]
or ecx, dword [esp + 0x14]
sete cl
or cl, al
movzx eax, cl
jmp dword [eax*4 + 0x446c6c]
mov eax, 1
mov edi, dword [esp + 0x20]
jmp dword [eax*4 + 0x446c74]
xor eax, eax
mov edi, dword [esp + 0x20]
jmp dword [eax*4 + 0x446c74]
mov byte [esp + 0x453], 0
movzx eax, byte [esp + 0x54]
xor edx, edx
test al, al
je 0x424ff1
lea ecx, [esp + 0x54]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x424fef
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x424fe0
jmp 0x424ff1
mov edx, ecx
xor eax, eax
test edx, edx
setne al
jmp dword [eax*4 + 0x446c8c]
inc edx
movzx eax, byte [edx]
xor esi, esi
test al, al
mov dword [esp], edx
je 0x425021
mov ecx, edx
nop
nop
cmp al, 0x2e
je 0x42501f
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x425010
jmp 0x425021
mov esi, ecx
mov eax, dword [case.0x424ff8.5]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
test esi, esi
setne al
mov ecx, dword [esp]
jmp dword [eax*4 + 0x446ca4]
mov edx, esi
sub edx, ecx
lea ecx, [edx + edx*2]
shr ecx, 2
movzx eax, byte [esi - 1]
cmp eax, 0x3d
je 0x42505b
cmp eax, 0x2e
jne 0x42505c
dec ecx
mov eax, dword [esp]
movzx eax, byte [eax + edx - 2]
cmp eax, 0x3d
mov dword [esp + 0xc], edx
je 0x425072
cmp eax, 0x2e
jne 0x425073
dec ecx
mov dword [esp + 0x44], ecx
lea eax, [ecx + 1]
push eax
call fcn.0040cc80
add esp, 4
mov dword [esp + 0x24], eax
cmp esi, dword [esp]
je 0x42518b
xor edi, edi
mov esi, 2
jmp 0x4250c0
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [esi + 4]
add esi, 2
cmp esi, edx
mov esi, eax
jae 0x42518b
mov dword [esp + 0x28], edi
mov edi, dword [esp]
movzx eax, byte [edi + esi - 2]
push eax
call fcn.0041c800
add esp, 4
mov bh, al
movzx eax, byte [edi + esi - 1]
push eax
call fcn.0041c800
add esp, 4
mov bl, al
shl bh, 2
shr al, 4
and al, 3
or al, bh
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov byte [ecx + edx], al
lea edi, [edx + 1]
mov edx, dword [esp + 0xc]
cmp esi, edx
jae 0x4250b0
mov eax, dword [esp]
movzx eax, byte [eax + esi]
push eax
call fcn.0041c800
mov edx, dword [esp + 0x10]
add esp, 4
cmp al, 0x40
je 0x4250b0
shl bl, 4
mov ecx, eax
shr cl, 2
and cl, 0xf
or cl, bl
mov ebx, dword [esp + 0x28]
lea edi, [ebx + 2]
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x24]
mov byte [edi + ebx + 1], cl
lea ecx, [esi + 1]
cmp ecx, edx
jae 0x42509d
mov ebx, eax
mov eax, dword [esp]
movzx eax, byte [eax + esi + 1]
push eax
call fcn.0041c800
add esp, 4
cmp al, 0x40
je 0x425099
shl bl, 6
add al, bl
mov edx, dword [esp + 0x28]
mov ecx, edx
and ecx, 1
mov ebx, edi
mov edi, dword [esp + 0x1c]
or edi, 1
add edi, ecx
mov byte [ebx + edx + 2], al
mov edx, dword [esp + 0xc]
jmp 0x4250b0
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x24]
mov byte [esi + eax], 0
push esi
call fcn.00403e40
add esp, 4
mov ebx, eax
jmp dword [0x446cac]
jmp dword [0x446cb4]
movzx ecx, byte [eax]
test cl, cl
mov edx, dword [esp + 4]
je 0x4251cb
inc eax
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4251c0
mov word [edx], 0x203a
add edx, 2
jmp 0x425257
mov esi, dword [esp + 8]
push ebx
call fcn.00404eb0
add esp, 4
add edi, 8
xor eax, eax
cmp edi, esi
setne al
jmp dword [eax*4 + 0x446c4c]
mov dword [esp + 0x10], 0x3e0f4f3
lea ecx, [esp + 0x14]
mov byte [ecx + 2], 0
mov word [ecx], 0
mov ecx, 0x1c5cd4c0
movzx edx, byte [esp + ecx - 0x1c5cd4b0]
xor edx, ecx
mov esi, edx
and esi, 0x3f
xor edx, 0x3f
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx - 0x1c5cd4b0], dl
inc ecx
cmp ecx, 0x1c5cd4c7
jne 0x425210
lea ecx, [esp + 0x10]
push ecx
push eax
call fcn.004046c0
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x446ccc]
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
movzx eax, byte [esp + 0x54]
test al, al
je 0x42527b
lea ecx, [esp + 0x55]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x425270
mov byte [edx], 0xa
inc edx
mov dword [esp + 4], edx
mov al, 1
mov dword [esp + 0x30], eax
jmp 0x4251dc
push esi
call fcn.0040cc90
add esp, 4
push esi
call fcn.0040cc90
add esp, 4
jmp dword [0x446cc0]
push ebx
call fcn.00404900
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
mov edi, dword [esp + 0x20]
jmp dword [ecx*4 + 0x446cc4]
xor ebx, ebx
test edi, edi
jne 0x4253f2
jmp case.0x424d19.0
mov eax, dword [esp + 4]
mov byte [eax], 0
mov dword [esp + 0x54], 0xfdfafbd3
mov dword [esp + 0x58], 0x89f9faff
mov dword [esp + 0x5c], 0x8cf0f2f3
mov dword [esp + 0x60], 0xe692f231
mov dword [esp + 0x64], 0xf52be8e3
mov dword [esp + 0x68], 0xe7ede2e9
mov dword [esp + 0x6c], 0x999e2199
mov dword [esp + 0x70], 0x2f9c
mov byte [esp + 0x74], 0
mov eax, 0x35d9b643
mov ecx, 0x8a2649bc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x35d9b5ef]
mov edx, esi
not edx
mov ebx, ecx
xor ebx, 0x800200ca
mov edi, eax
and edi, 0x30d092ca
or edi, ebx
mov ebx, edx
or ebx, 0xb0d292ca
add ebx, esi
inc ebx
or esi, 0x20d00288
and esi, 0x20d002bd
xor esi, ebx
xor esi, 0x6ffd6fbd
and edx, ebx
and edx, 0x4f2d6d35
or edx, esi
xor edx, edi
lea esi, [edx + 0x30]
mov edi, 0x4d408f4f
sub edi, edx
mov ebx, edi
and edi, 0xc2
and esi, 0x3d
or esi, edi
not ebx
xor esi, 0xc3
and ebx, 1
or ebx, esi
and edx, 1
add ebx, edx
mov byte [esp + eax - 0x35d9b5ef], bl
inc eax
dec ecx
cmp eax, 0x35d9b664
jne 0x425330
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 4]
sub esi, edx
lea eax, [esp + 0x54]
mov ecx, dword [ebp + 8]
push esi
push edx
push eax
call fcn.0040d710
mov ebx, eax
jmp dword [0x446cd4]
push dword [esp + 0x2c]
call fcn.0040cc90
add esp, 4
and bl, 1
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
test edi, edi
je case.0x424d19.0
cmp edi, esi
je case.0x424d19.0
push edi
call fcn.0040cc90
add esp, 4
lea ecx, [esp + 0x34]
call fcn.00438700
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret