Function at 0x4400da
Capabilities:
Encode data using xor

Disassembly:
push ebx
push edi
push esi
sub esp, 8
mov ecx, dword [esp + 0x18]
mov dword [esp], 0xc3c2c110
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0xb0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0xb0]
lea edi, [eax - 0x21150600]
mov edx, eax
xor edx, edi
and edx, esi
xor edx, edi
mov ebx, edi
xor ebx, esi
sub bl, dl
movzx edx, bl
add edx, eax
add dl, 0x90
mov byte [esp + eax - 0xb0], dl
inc eax
cmp eax, 0xb7
jne case.default.0x43f950
mov eax, dword [esp]
mov eax, dword fs:[eax]
xor edx, edx
test ecx, ecx
sete dl
jmp dword [edx*4 + 0x44ae7c]
mov edx, dword [eax + 0xc]
add edx, 0xc
xor eax, eax
mov esi, dword [edx]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x44ae84]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
add edx, 0xc
xor eax, eax
mov esi, dword [edx]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x44ae84]
mov edi, 1
jmp dword [edi*4 + 0x44ae94]
mov esi, dword [esi]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x44ae84]
xor ebx, ebx
cmp dword [esi + 0x18], ecx
sete bl
jmp dword [ebx*4 + 0x44ae8c]
mov eax, dword [esi + 0x30]
xor edi, edi
jmp dword [edi*4 + 0x44ae94]
add esp, 8
pop esi
pop edi
pop ebx
ret
mov eax, dword [esi + 0x28]
xor edi, edi
jmp dword [edi*4 + 0x44aef4]
mov esi, dword [esi]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x44aed4]
xor ebx, ebx
cmp dword [esi + 0x18], ecx
sete bl
jmp dword [ebx*4 + 0x44aeec]
mov edi, 1
jmp dword [edi*4 + 0x44aef4]
mov edx, dword [eax + 0xc]
add edx, 0xc
xor eax, eax
mov esi, dword [edx]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x44aed4]
mov ecx, dword [case.0x43f950.25]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
mov eax, dword fs:[edx]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword fs:[edx]
jmp dword [0x44aeb4]
xor edx, edx
test ecx, ecx
sete dl
jmp dword [edx*4 + 0x44aecc]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x3c]
add esp, 8
pop esi
pop edi
pop ebx
ret
lea edx, [eax - 1]
mov esi, 0x30
sub esi, eax
and esi, 0x34
and edx, 0xb
or edx, esi
xor dl, byte [esp + eax]
xor dl, 0x74
add dl, 0x75
mov byte [esp + eax], dl
inc eax
cmp eax, 5
jne case.0x43f950.8
xor eax, eax
lea edx, [eax - 1]
mov esi, 0x30
sub esi, eax
and esi, 0x34
and edx, 0xb
or edx, esi
xor dl, byte [esp + eax]
xor dl, 0x74
add dl, 0x75
mov byte [esp + eax], dl
inc eax
cmp eax, 5
jne 0x43fab6
xor eax, eax
jmp dword [0x44aea8]
mov edx, dword [esp]
jmp dword [0x44aeb0]
int3
mov edx, dword [esp + 8]
not edx
add edx, eax
mov ecx, edx
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
xor edx, edx
cmp ecx, dword [esp + 0x10]
setb dl
jmp dword [edx*4 + 0x44af6c]
add esi, eax
xor ecx, ecx
jmp dword [ecx*4 + 0x44af74]
jmp dword [0x44af40]
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 8]
mov eax, dword [ebp + ecx + 0x20]
add eax, ebp
mov dword [esp + 0x20], eax
mov eax, dword [ebp + ecx + 0x24]
add eax, ebp
mov dword [esp + 0x18], eax
mov eax, dword [ebp + ecx + 0x1c]
add eax, ebp
mov dword [esp + 0x14], eax
xor edx, edx
xor eax, eax
cmp edx, dword [ebp + ecx + 0x18]
setb al
mov dword [esp + 0x1c], 1
jmp dword [eax*4 + 0x44af44]
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], edx
mov ebx, dword [eax + edx*4]
add ebx, ebp
mov edx, 0xffffffff
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
cmp byte [ebx + edx + 1], 0
lea edx, [edx + 1]
lea ecx, [ecx + 1]
jne 0x43fd00
mov dword [esp], 0x2020093
mov esi, 0x5ff811c0
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi - 0x5ff811c0]
xor ecx, esi
lea edi, [ecx + ecx]
mov ebp, edi
and ebp, 0x7e
xor ecx, 0x2027a73f
and edi, ecx
xor ecx, ebp
lea ecx, [ecx + edi*2]
inc cl
mov byte [esp + esi - 0x5ff811c0], cl
inc esi
cmp esi, 0x5ff811c4
jne 0x43fd20
test edx, edx
je 0x43fd70
mov ebp, dword [esp]
cmp edx, 4
jae 0x43fd80
mov edi, 0x36c0b43e
jmp 0x43fdbb
mov esi, 0x36c0b43e
jmp 0x43fde0
mov esi, eax
and esi, 0xfffffffc
mov edi, 0x36c0b43e
nop
nop
nop
nop
nop
nop
movsx ecx, byte [ebx]
xor ecx, edi
imul ecx, ebp
movsx edi, byte [ebx + 1]
xor edi, ecx
imul edi, ebp
movsx ecx, byte [ebx + 2]
xor ecx, edi
imul ecx, ebp
movsx edi, byte [ebx + 3]
add ebx, 4
xor edi, ecx
imul edi, ebp
add esi, 0xfffffffc
jne 0x43fd90
mov esi, edi
test dl, 3
je 0x43fde0
and eax, 3
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx esi, byte [ebx + ecx]
xor esi, edi
imul esi, ebp
inc ecx
mov edi, esi
cmp eax, ecx
jne 0x43fdd0
xor eax, eax
cmp esi, dword [esp + 0x3c]
setne al
jmp dword [eax*4 + 0x44af4c]
mov edx, dword [esp + 0xc]
inc edx
xor eax, eax
mov ebp, dword [esp + 0x38]
mov ecx, dword [esp + 8]
cmp edx, dword [ebp + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x44af44]
mov eax, dword [esp + 0x1c]
jmp dword [eax*4 + 0x44af74]
xor esi, esi
mov ecx, dword [case.0x43fb30.0]
jmp ecx
jmp dword [0x44af60]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + eax*4]
xor ecx, ecx
cmp eax, dword [esp + 8]
setae cl
mov esi, dword [esp + 0x38]
jmp dword [ecx*4 + 0x44af64]
mov edi, dword [esi + ecx]
add edi, esi
mov ecx, dword [esi + ecx + 0x10]
add ecx, esi
mov dword [ebp - 0x20], ecx
add esi, 2
mov ebx, dword [case.0x43f950.85]
mov edx, dword [edi]
mov ecx, edx
shr ecx, 0x1f
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x2c], ebx
jmp dword [ecx*4 + 0x44afb4]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
xor ecx, ecx
mov dword [ebp - 0x28], eax
mov edi, dword [ebp - 0x10]
jmp dword [ecx*4 + 0x44afdc]
mov edx, dword [edi]
mov ecx, edx
shr ecx, 0x1f
xor eax, eax
jmp dword [ecx*4 + 0x44afb4]
xor ecx, ecx
test edx, edx
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44afbc]
add edx, esi
mov ebx, 0xffffffff
xor eax, eax
mov ecx, edx
nop
mov edx, eax
cmp byte [ecx + ebx + 1], 0
lea ebx, [ebx + 1]
lea eax, [eax + 1]
jne 0x43fef0
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x1c], 0x2020093
mov eax, 0x5ff811c0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [ebp + eax - 0x5ff811dc]
xor esi, eax
lea edi, [esi + esi]
mov ecx, edi
and ecx, 0x7e
xor esi, 0x2027a73f
and edi, esi
xor esi, ecx
lea ecx, [esi + edi*2]
inc cl
mov byte [ebp + eax - 0x5ff811dc], cl
inc eax
cmp eax, 0x5ff811c4
jne 0x43ff20
mov eax, 0x36c0b43e
test ebx, ebx
mov ecx, dword [ebp - 0x18]
je 0x43ffe0
mov esi, dword [ebp - 0x1c]
mov edi, 0x36c0b43e
cmp ebx, 4
jb 0x43ffb6
mov dword [ebp - 0x24], edx
mov eax, edx
and eax, 0xfffffffc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, esi
mov esi, ecx
movsx ecx, byte [ecx]
xor ecx, edi
imul ecx, edx
movsx edi, byte [esi + 1]
xor edi, ecx
imul edi, edx
movsx ecx, byte [esi + 2]
xor ecx, edi
imul ecx, edx
movsx edi, byte [esi + 3]
add esi, 4
xor edi, ecx
mov ecx, esi
mov esi, edx
imul edi, edx
add eax, 0xfffffffc
jne 0x43ff80
mov edx, dword [ebp - 0x24]
mov eax, edi
test bl, 3
je 0x43ffe0
and edx, 3
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [ecx + ebx]
xor eax, edi
imul eax, esi
inc ebx
mov edi, eax
cmp edx, ebx
jne 0x43ffd0
xor ecx, ecx
cmp eax, dword [ebp + 0xc]
sete cl
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x2c]
jmp dword [ecx*4 + 0x44afc4]
jmp ebx
add dword [ebp - 0x20], 4
mov edi, dword [ebp - 0x10]
add edi, 4
mov ecx, 1
mov eax, dword [ebp - 0x28]
jmp dword [ecx*4 + 0x44afdc]
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + eax]
mov dword [ebp - 0x18], eax
mov dword [edi], 0x3f3e7c88
mov dword [edi + 4], 0
mov dword [ebp - 0x10], edi
xor edi, edi
xor ebx, ebx
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x10]
movzx edx, byte [eax + ebx]
mov esi, ebx
xor esi, 0xe2246d76
mov eax, edi
and eax, 2
sub eax, esi
xor eax, edx
mov esi, eax
xor esi, 0x9549dcb2
mov edx, eax
or edx, 0x892024d
and edx, esi
mov ecx, edx
and ecx, 2
mov esi, edx
or edx, 2
imul edx, ecx
xor ecx, 2
and esi, 0xfd
imul esi, ecx
xor eax, 0x4d
add eax, edx
add eax, esi
inc al
mov ecx, dword [ebp - 0x10]
mov byte [ecx + ebx], al
inc ebx
add edi, 2
cmp ebx, 8
jne case.default.0x4400ad
xor ecx, ecx
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x10]
cmp eax, dword [edx]
setne cl
xor eax, eax
mov esi, dword [ebp + 8]
jmp dword [ecx*4 + 0x44afa4]
mov edx, dword [ebp - 0x14]
mov ecx, dword [esi + edx + 0x80]
cmp dword [esi + edx + 0x84], 0
sete dl
test ecx, ecx
sete dh
or dh, dl
movzx edx, dh
jmp dword [edx*4 + 0x44afac]
push eax
push eax
mov eax, esp
mov dword [eax], 0x81865d53
mov word [eax + 4], 0
xor ecx, ecx
nop
nop
nop
nop
mov edx, ecx
add dl, 0x61
xor dl, byte [eax + ecx]
add dl, 0x1b
mov byte [eax + ecx], dl
inc ecx
cmp ecx, 6
jne 0x4400f0
push eax
push eax
mov eax, esp
sub esp, 8
mov edi, esp
movzx edx, word [esi]
mov dword [eax], 0x81865d53
mov word [eax + 4], 0
xor ebx, ebx
nop
nop
mov ecx, ebx
add cl, 0x61
xor cl, byte [eax + ebx]
add cl, 0x1b
mov byte [eax + ebx], cl
inc ebx
cmp ebx, 6
jne 0x440120
jmp dword [0x44af94]
mov eax, dword [eax]
xor ecx, ecx
cmp eax, edx
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44af9c]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [edi + 0x3c]
lea ecx, [edi + eax]
mov eax, dword [edi + eax]
mov dword [esp], 0x73720c00
mov byte [esp + 4], 0
xor ebx, ebx
xor esi, esi
mov edi, ebx
and edi, 8
mov edx, esi
xor edx, 0x6c
add edx, edi
xor dl, byte [esp + esi]
add dl, 0xe4
mov byte [esp + esi], dl
inc esi
add ebx, 2
cmp esi, 5
jne case.default.0x4401f8
xor edx, edx
cmp eax, dword [esp]
setne dl
xor eax, eax
jmp dword [edx*4 + 0x44afec]
movzx eax, word [ecx + 0x14]
lea esi, [ecx + eax]
add esi, 0x18
movzx ecx, word [ecx + 6]
xor ebp, ebp
xor eax, eax
cmp bp, cx
setb al
mov dword [esp + 8], 1
mov word [esp + 0xe], cx
jmp dword [eax*4 + 0x44aff4]
mov edx, 8
mov edi, dword [esp + 0x28]
mov eax, esi
nop
nop
nop
nop
nop
sub edx, 1
jb 0x440260
movzx ecx, byte [edi]
inc edi
movzx ebx, byte [eax]
inc eax
cmp cl, bl
je 0x440240
sub ecx, ebx
jmp 0x440262
xor ecx, ecx
xor eax, eax
test ecx, ecx
sete al
jmp dword [eax*4 + 0x44affc]
inc ebp
add esi, 0x28
xor eax, eax
movzx ecx, word [esp + 0xe]
cmp bp, cx
setb al
jmp dword [eax*4 + 0x44aff4]
xor eax, eax
mov ecx, dword [esp + 0x2c]
test ecx, ecx
setne al
jmp dword [eax*4 + 0x44b014]
xor eax, eax
cmp dword [esp + 0x30], 0
setne al
mov dword [esp + 8], 0
jmp dword [eax*4 + 0x44b01c]
mov eax, dword [esp + 8]
jmp dword [eax*4 + 0x44b024]
mov al, 1
jmp 0x4402f8
mov eax, dword [esp + 0x24]
add eax, dword [esi + 0xc]
mov dword [ecx], eax
xor eax, eax
cmp dword [esp + 0x30], 0
setne al
mov dword [esp + 8], 0
jmp dword [eax*4 + 0x44b01c]
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x30]
mov dword [ecx], eax
xor eax, eax
jmp dword [eax*4 + 0x44b024]
xor eax, eax
mov ecx, dword [case.0x4401f8.0]
nop
nop
jmp ecx
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
stc
inc ebx
add byte [edi - 7], ch
inc ebx
add bh, al
stc
inc ebx
add byte [ecx + edi*8 - 0x66fffbd], ch
inc ebx
add byte [ebx - 0x38ffbc07], bh
stc
inc ebx
add byte [ecx + edi*8 - 0x54bffbd], bl
inc ebx
add byte [eax - 0x6fffbc06], dl
cli
inc ebx
add dl, ah
cli
inc ebx
add byte [edx - 6], dl
inc ebx
add byte [eax - 6], ah
inc ebx
add byte [ecx - 6], ch
inc ebx
add byte [eax - 6], ah
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add bl, ch
cli
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [edi], ah
cli
inc ebx
add byte [edi - 6], dh
inc ebx
add byte [edi], bh
cli
inc ebx
add byte [edx + edi*8], cl
inc ebx
add byte [eax - 6], dl
inc ebx
add byte [eax - 6], dl
inc ebx
add byte [ebp - 6], bh
inc ebx
add byte [eax - 6], dl
inc ebx
add byte [ebx], bl
cli
inc ebx
add al, dh
stc
inc ebx
add byte [ebp - 6], bh
inc ebx
add ah, bh
stc
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ebp - 6], bh
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [edi], dh
sti
inc ebx
add byte [edx], ah
inc byte [ebx]
sar bl, cl
inc ebx
add byte [ebx - 5], ch
inc ebx
add byte [esp + edi*8 + 0x43], cl
add byte [ebx - 5], ch
inc ebx
add byte [ebp - 4], bl
inc ebx
add byte [edx], ah
inc byte [ebx]
nop
cld
inc ebx
add byte [edx], bl
inc byte [ebx]
nop
cld
inc ebx
add byte [eax - 0x6fffbc04], dl
cld
inc ebx
add byte [esi + 0xd0043fc], dl
inc byte [ebx]
loopne 0x44af46
inc ebx
add al, ah
cld
inc ebx
add byte [eax], dh
inc byte [ebx]
invalid